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語句查看你的設置是否合理: