如何將oracle 物件pin在共享池中
dbms_shared_pool.keep 可以將物件pin入shared_pool,而不進入LRU 機制被keep的物件可以是資料庫物件,也可以是sql
dbms_shared_pool.unkeep為反操作。
實驗如下:(實驗環境 11.2.0.1)
執行一個sql,並檢視其在shared_pool 中的address和hash_value值。
count(*) from yang_a;
COUNT(*)
----------
29
address,hash_value,sql_text from v$sqlarea where sql_text like 'select count(*) from yang_a%';
ADDRESS HASH_VALUE SQL_TEXT
---------------- ----------- ------------
00000001736C9E48 1083615814 select count(*) from yang_a
address,hash_value,executions,parse_calls from v$sql where sql_text like 'select count(*) from yang_a%';
ADDRESS HASH_VALUE EXECUTIONS PARSE_CALLS
---------------- ---------- ---------- -----------
00000001736C9E48 1083615814 1 1
keep該sql語句的執行計劃到shared_pool。
sys.dbms_shared_pool.keep('00000001736C9E48,1083615814','C');
PL/SQL procedure successfully completed.
在v$db_object_cache 中查詢kept欄位為yes ,說明該物件已經被儲存!
owner,name,kept from v$db_object_cache where hash_value='1083615814';
OWNER NAME KEP
---------- ---------------------------------------- ---
select count(*) from yang_a YES
select count(*) from yang_a YES
COUNT(*) FROM v$sql WHERE hash_value='1083615814';
COUNT(*)
----------
1
因為已經被儲存了,所以執行刪除hash_value值為1083615814 時候報錯,
SYS.dbms_shared_pool.purge('00000001736C9E48,1083615814','C');
BEGIN SYS.dbms_shared_pool.purge('00000001736C9E48,1083615814','C'); END;
*
ERROR at line 1:
ORA-06596: object cannot be purged, object is permanently kept in shared pool
ORA-06512: at "SYS.DBMS_SHARED_POOL", line 31
ORA-06512: at "SYS.DBMS_SHARED_POOL", line 77
ORA-06512: at line 1
對hash_value值為1083615814 執行計劃進行unkeep
sys.dbms_shared_pool.unkeep('00000001736C9E48,1083615814','C');
PL/SQL procedure successfully completed.
再次刪除
SYS.dbms_shared_pool.purge('00000001736C9E48,1083615814','C');
PL/SQL procedure successfully completed.
COUNT(*) FROM v$sql WHERE hash_value='1083615814';
COUNT(*)
----------
0
address,hash_value,executions,parse_calls from v$sql where sql_text like 'select count(*) from yang_a%';
no rows selected
address,hash_value,sql_id FROM v$sql_plan WHERE hash_value='1083615814';
no rows selected
演示 keep對於佇列的作用。
建立佇列,預設為佇列在記憶體中的cache 為20.
sequence seq_yang;
Sequence created.
seq_yang.nextval from dual;
NEXTVAL
----------
1
清除cache在記憶體中的佇列的值。
system flush shared_pool;
System altered.
seq_yang.nextval from dual;
NEXTVAL
----------
21
nextval為21 表示,隨著flush 共享池,sequence的cache被清空了。
將佇列keep在快取中,
sys.dbms_shared_pool.keep('seq_yang','q');
PL/SQL procedure successfully completed.
seq_yang.nextval from dual;
NEXTVAL
----------
22
然後再次flush 共享池。
system flush shared_pool;
System altered.
檢視nextval的值,結果:
seq_yang.nextval from dual;
NEXTVAL
----------
23
說明keep起作用了!被keep在共享池中的物件不會被flush 操作清除。
sys.dbms_shared_pool.unkeep('seq_yang','q');
PL/SQL procedure successfully completed.
seq_yang.nextval from dual;
NEXTVAL
----------
24
system flush shared_pool;
System altered.
seq_yang.nextval from dual;
NEXTVAL
----------
41
相信到這裡,我們可以對dbms_shared_pool.keep /unkeep 的作用有了初步的瞭解。^ _ ^
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-701723/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle固定物件到共享池Oracle物件
- [20180926]共享池中的NETWORK BUFFER.txt
- ORACLE LOCK,LATCH,PINOracle
- [20180925]共享池中的NETWORK BUFFER(12c).txt
- 使用DBMS_SHARED_POOL包將物件固定到共享池物件
- oracle等待事件之cursor:pin S wait on XOracle事件AI
- 在Linux中,如何配置Samba共享?LinuxSamba
- 在Linux中,如何配置NFS共享?LinuxNFS
- win10 如何跳過建立pin win10 如何跳過設定pinWin10
- 在 JavaScript 中如何克隆物件?JavaScript物件
- 從如何更好的監控Oracle共享池談起Oracle
- Java中一個物件在多執行緒中是共享的Java物件執行緒
- 【SpringMVC】域物件共享資料SpringMVC物件
- 昆騰將在7月關停Symform同步共享業務ORM
- [20240930]關於共享池-表物件在庫快取探究2.txt物件快取
- Oracle 共享儲存掛載Oracle
- 如何避免在Flask中使用Response物件Flask物件
- 在oracle中將一行字串拆分成多行Oracle字串
- win10怎麼跳過pin設定_win10如何取消開機pinWin10
- win10設定pin的方法_win10系統如何設定pin碼Win10
- win10如何取消pin碼登入_windows10怎麼取消pin登陸Win10Windows
- 如何將物件拼接成get傳值的形式物件
- Java如何將Object轉換成指定Class物件JavaObject物件
- 在 JavaScript 中如何檢查物件為空JavaScript物件
- win10 pin碼忘記如何修改_win10 pin碼忘記怎麼修改Win10
- 【SQL】Oracle SQL共享池檢查SQLOracle
- 第22章 物件共享,避免建立多物件——享元模式物件模式
- ORACLE物件型別表Oracle物件型別
- 如何將AI/ML與物件儲存結合使用AI物件
- win10如何取消開機密碼pin_win10怎麼取消pin碼登入Win10密碼
- 【AD報錯】GND contains Output Pin and Power Pin objectsAIObject
- 【ASK_ORACLE】Library Cache概念篇(二)之Library Cache Pin的定義Oracle
- ORACLE在各作業系統訊號量與共享記憶體的維護Oracle作業系統記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- pad&pin
- Intel Pin初探Intel
- flask算pinFlask
- [20191112]oracle共享連線模式埠.txtOracle模式
- win10 pin無法使用如何解決_win10 pin無法使用怎麼修復Win10