oracle固定物件到共享池
PL/SQL一般來說很大,將這樣的物件裝載到共享池中,需要去尋找大段的連續記憶體空間,如果連續裝載的話,那麼必然會將很多熱點記憶體age out出共享池。這樣一來勢必會影響資料庫效能。
所以將常用的PL/SQL或者SQL遊標固定到共享池中,可以解決上述問題。包括可能出現的ORA-04031報錯。
1.固定PL/SQL到共享池
SYS@cdbtest1(MING)> exec sys.dbms_shared_pool.keep('ming.p_hello','P');
PL/SQL procedure successfully completed.
可以通過下述sql的keep欄位檢視是否固定到共享池中。
SELECT * FROM v$db_object_cache where owner='MING' and TYPE = 'PROCEDURE';
解決固定的方法:
SYS@cdbtest1(MING)> exec sys.dbms_shared_pool.unkeep('ming.p_hello','P');
PL/SQL procedure successfully completed.
2.固定sql遊標到共享池的方法
對於固定sql遊標,需要明白如下:
a.固定遊標需要得到遊標的address和hash_value
b.對於一個父遊標下面的多個子遊標,它們的address和hash_value都是一樣的
MING@ming(MING)> variable p number;
MING@ming(MING)> exec :p := 10;
PL/SQL procedure successfully completed.
MING@ming(MING)> select /*test2*/ count(*) from t1 where a<:p;
COUNT(*)
----------
36
MING@ming(MING)> set line 100
MING@ming(MING)> select sql_id,sql_text from v$sql where sql_text like '%test2%';
SQL_ID SQL_TEXT
------------- ----------------------------------------------------------------------
1anf7skpasz1a select /*test2*/ count(*) from t1 where a<:p
5ybns6qudvgcm select sql_id,sql_text from v$sql where sql_text like '%test2%'
MING@ming(MING)> select sql_id,address,hash_value,version_count from v$sqlarea where sql_id='1anf7skpasz1a';
SQL_ID ADDRESS HASH_VALUE VERSION_COUNT
------------- ---------------- ---------- -------------
1anf7skpasz1a 000000007267DA48 2863430698 1
固定遊標
exec sys.dbms_shared_pool.keep('000000007267DA48,2863430698','C');
解除遊標固定
exec sys.dbms_shared_pool.unkeep('000000007267DA48,2863430698','C');
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31480688/viewspace-2649750/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用DBMS_SHARED_POOL包將物件固定到共享池物件
- Oracle 共享池操作Oracle
- 【SQL】Oracle SQL共享池檢查SQLOracle
- 面試官:Redis的共享物件池瞭解嗎?面試Redis物件
- 執行緒池、連線池、物件池從0到1執行緒物件
- Oracle效能最佳化 之 共享池Oracle
- oracle效能優化-共享池調整Oracle優化
- 【MEMORY】Oracle 共享池堆簡單說明Oracle
- 固定快取物件快取物件
- 如何將oracle 物件pin在共享池中Oracle物件
- 從如何更好的監控Oracle共享池談起Oracle
- 原始碼|從序列執行緒封閉到物件池、執行緒池原始碼執行緒物件
- 從入門到掉坑:Go 記憶體池/物件池技術介紹Go記憶體物件
- 共享池最佳化思路
- 值物件如何共享物件
- python 物件池Python物件
- Unity——物件池管理Unity物件
- zt_Oracle shared pool internals_共享池_shared_poolOracle
- 物件池Pools優化物件優化
- netty Recycler物件池Netty物件
- 資料庫體系結構-共享池(shared pool),largepool,Java池,流池資料庫Java
- oracle 固定執行計劃Oracle
- oracle之 AWR固定基線Oracle
- .NET Core 物件池的使用物件
- 物件池簡單實現物件
- Unity寫個多用物件池Unity物件
- 物件池與享元模式物件模式
- 自定義物件池實踐物件
- [20240930]關於共享池-表物件在庫快取探究2.txt物件快取
- ORACLE expdp備份到windows網路共享檔案目錄(NFS)OracleWindowsNFS
- "什麼是海外代理IP池?共享IP池和獨享IP池有什麼不同?"
- oracle固定執行計劃--sqlprofileOracleSQL
- 【SpringMVC】域物件共享資料SpringMVC物件
- Java 中的物件池實現Java物件
- Java BasePooledObjectFactory 物件池化技術JavaObject物件
- win10能不能把資料夾固定到工作列怎麼固定Win10
- ExecutorService常用方法和newFixedThreadPool建立固定大小的執行緒池thread執行緒
- oracle 10g在共享伺服器模式shared server如何配置大池large poolOracle 10g伺服器模式Server