ITPub博客

首页 > 数据库 > Oracle > 游标参数shared_cached_cursors和软软解析

游标参数shared_cached_cursors和软软解析

Oracle 作者:fengshiwaiyi 时间:2014-12-03 00:54:58 0 删除 编辑

继续整理关于游标 解析 绑定变量。这里说下几个参数,里面内容有点深,自己也是迷迷糊糊的!

Oracle 10G下

SQL> show parameter cursor;

NAME TYPE VALUE

cursor_sharing string EXACT

cursor_space_for_time boolean FALSE

open_cursors integer 300

session_cached_cursors integer 20

session_cached_cursors:

一个sql语句会首先在uga中缓存区存放与之关联的游标,然后打开创建游标 解析游标 执行游标 返回游标 关闭游标等。而一旦关闭这个session,这个uga中相关联的session cursor就被释放了。而session_cached_cursors参数标识的是一个session可以缓存多个cursor数量,既是存储在pga的sql语句游标的总数量,从而实现后续相同sql的软软解析。

软软解析:

Session cursor cache是一块内存区域,存储关闭了cursor,当一个cursor关闭之后,oracle检查此cursor的请求是否超过三次,如果超过三次就会放入session cache cursor内存区域中,下次在parse的时候可以从session cursor cache直接调用,从而实现软软解析(session cache cursor的管理也是使用lRU算法)

而session_cached_cursors参数也就是session缓存的cursor数量,控制了session cursor cache的大小,则值越大,相应的内存消耗也越大。

SQL> select name,value from v$sysstat where name like '%cursor%';

NAME VALUE

---------------------------------------------------------------- ----------

opened cursors cumulative 28899

opened cursors current 46

session cursor cache hits 21217

session cursor cache count 2865

cursor authentications 485

其中的session cursor cache hits就是软软解析的次数。

这里摘要下http://www.cnblogs.com/rootq/archive/2009/08/27/1554748.html的对软软解析的解释:

设置pga端的cache list的长度,当session_cached_cursors设置为0时,pga的cache list长度为0,这时候当sga中的cursor关闭的时候它相关的library cache handle的lock位被清0,从v$open_cursor里看不到这个被关闭的cursor,它服从于shared pool的lru机制,当shared pool需要新的buffer空间时,它将会被flush出shared pool。

当session_cached_cursors设置为非0值时,pga的cache list长度为session_cached_cursors值的大小,同时pga cache list将会保留一份拷贝,这时候即使sga中的cursor关闭的时候它相关的library cache handle始终被加了null mode lock,当shared pool空间紧张时library cache handle始终将会被保留在shared pool中.而新的应用访问这个cursor的时候会直接去自己的pga cache list里面搜索

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29312249/viewspace-1354614/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle ASM+11gR2安装
请登录后发表评论 登录
全部评论

注册时间:2014-07-06

  • 博文量
    13
  • 访问量
    36192