oralce sql 緩存查詢及刪除


--緩存查詢語句 V$SQLAREA 視圖記錄sql 執行情況(加載次數/用時/Id....)

常用字段

ADDRESS:SQL語句在SGA中的地址。 

這兩列被用於鑒別SQL語句,有時,兩條不同的語句可能hash值相同。這時候,必須連同ADDRESS一同使用來確認SQL語句。 
PARSING_USER_ID:為語句解析第一條CURSOR的用戶 
VERSION_COUNT:語句cursor的數量 
KEPT_VERSIONS: 
SHARABLE_MEMORY:cursor使用的共享內存總數 
PERSISTENT_MEMORY:cursor使用的常駐內存總數 
RUNTIME_MEMORY:cursor使用的運行時內存總數。 
SQL_TEXT:SQL語句的文本(最大只能保存該語句的前1000個字符)。 
MODULE,ACTION:使用了DBMS_APPLICATION_INFO時session解析第一條cursor時的信息 
SQL_FULLTEXT :完整的sql語句
SELECT ADDRESS,HASH_VALUE,SQL_FULLTEXT FROM V$SQLAREA

查看某條sql 緩存記錄 eg:

SELECT ADDRESS,HASH_VALUE,SQL_FULLTEXT,ELAPSED_TIME FROM V$SQLAREA  WHERE sql_fulltext like '%from template_data_temp t%';

 

 --清除某條記錄 

參數1:ADDRESS
參數2:HASH_VALUE
參數3:c

第三個參數'C'表示PURGE的對象是CURSOR(游標),不過實際上這里可以使用除了P(PROCEDURE/FUNCTION/PACKAGE)、T(TYPE)、R(TRIGGER)和Q(SEQUENCE)的任何值。
    使用這種方法,就可以精確的將一個SQL從共享池中刪除,從而使得Oracle為這個SQL重新生成執行計划。這種方法只針對單個SQL語句,使得解決問題的同時不會造成任何的誤傷。

exec sys.dbms_shared_pool.purge('0000000061B5EAD0,772411230','c');

--清空所有計划緩存   生產環境服務器負載較大時 慎用 同時刪除清空所有緩存可能造成服務器壓力過大

ALTER SYSTEM FLUSH SHARED_POOL

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM