open_cursor & session_cached_cursor實驗

哎呀我的天吶發表於2015-05-17
alter system set session_cached_cursors = 0 scope=spfile;
System altered.

重啟

22:23:42 SQL> show parameter session_cached_cursor;
NAME                           TYPE         VALUE
------------------------------ ----------- ------------------------------
session_cached_cursors             integer      0
conn scott/tiger
22:25:37 SQL> select * from test where owner='SCOTT';


 再在32會話執行3遍以上cursor_type還是open的,說明session_cached_cursor設定為0不cached cursor
再在36會話執行sql open了cursor。

然後繫結變數方式執行

var b1 varchar2(20);
exec :b1 :='SYS';
select * from test where owner =:b1


然後在繫結b1=scot t,新回話35,會發現有兩條記錄都是open的,是軟解析


以上說明open cursor在發生sql解析的時候,就要open 不同會話相同的sql語句(在執行不超過3次)也要open多次。上面的實驗我在同一個會話執行相同的sql有超過3次以上,但是session_cached_cursor為0, cursor_type都是open的,沒有被cached的,下面將這個引數設定為100.

設定引數重啟

在sid 32上多次執行sql,結果cursor 被cached了。當 相同的會話 ,再有相同的sql過來,便不解析了。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-1659596/,如需轉載,請註明出處,否則將追究法律責任。

相關文章