SQL> show parameter open_cursors --每个session(会话)最多能同时打开多少个cursor(游标) NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 300 SQL> show parameter session_cached_cursor --每个session(会话)最多可以缓存多少个关闭掉的cursor NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ session_cached_cursors integer 20 SQL> select count(*) from v$open_cursor; --是指当前实例的某个时刻的打开的cursor数目 COUNT(*) ---------- 108
1、open_cursors与session_cached_cursor的作用?
open_cursors设定每个session(会话)最多能同时打开多少个cursor(游标)。session_cached_cursor 设定每个session(会话)最多可以缓存多少个关闭掉的cursor。想要弄清楚他们的作用,我们得先弄清楚oracle如何执行每个sql语句。
看完上图后我们明白了两件事:
a、两个参数之间没有任何关系,相互也不会有任何影响。b、两个参数有着相同的作用:让后续相同的sql语句不在打开游标,从而避免软解析过程来提供应用程序的效率。
2、如何正确合理设置参数的大小?
a、如果Open_cursors设置太小,对系统性能不会有明显改善,还可能触发ORA-O1000:m~imum open CUrsOrs exceeded.的错误。如果设置太大,则无端消耗系统内存。我们可以通过如下的sql语句查看你的设置是否合理: