Oracle:open_cursors+session_cached_cursors

open_sursor :定义每个Session最大能够打开的游标数量。

 

session_cached_cursors:就是说一个session可以缓存多少个cursor,让后续相同的SQL语句不再打开游标,从而避免软解析的过程来提高性能。(一个游标被请求3次且此游标被关闭时,就会被放入cursor cache中)

 

V$OPEN_CURSOR:每个session打开和命中游标及SQL语句。

 

oracle有一个概念,那就是session cursor cache,中文描述就是有一块内存区域,用来存储关闭了的cursor。当一个cursor关闭之后,oracle会检查这个cursor的request次数是否超过3次,如果超过了三次,就会放入session cursor cache,这样在下次parse的时候,就可以从session cursor cache中找到这个statement, session cursor cache的管理也是使用LRU。
session_cached_cursors这个参数是控制session cursor cache的大小的。session_cached_cursors定义了session cursor cache中存储的cursor的个数。这个值越大,则会消耗的内存越多。
另外检查这个参数是否设置的合理,可以从两个statistic来检查。

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

NAME VALUE
---------------------------------------------------------------- ----------
opened cursors cumulative 16439
opened cursors current 55
session cursor cache hits 8944
session cursor cache count 101
cursor authentications 353

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

NAME VALUE
---------------------------------------------------------------- ----------
parse time cpu 0
parse time elapsed 0
parse count (total) 17211
parse count (hard) 1128
parse count (failures) 2

session cursor cache hits 和parse count(total) 就是总的parse次数中,在session cursor cache中找到的次数,所占比例越高,性能越好。如果比例比较低,并且有剩余内存的话,可以考虑加大该参数。

Oracle 9i及以前,该参数缺省是0,10G上缺省是20。

http://hi.baidu.com/wjdwei/blog/item/5b06f4eefa2e4ee6cf1b3e6f.html

你可能感兴趣的:(html,oracle,sql,cache,Blog)