在平時檢查Oracle Alert時,發現有下列的訊息:
Memory Notification: Library Cache Object loaded into SGA
Heap size 54172K exceeds notification threshold (51200K)
Details in trace file .../PROD_ora_22179.trc
KGL object name :EXPLAIN PLAN /* rep_cm_sql */ SET STATEMENT_ID = '69796.1'
INTO questpa.QUEST_CM_PLAN_TABLE FOR SELECT A.TRX_NUMBER,A.SOLD_TO_CUSTOMER_ID,
A.DU1,A.INVOICE_CURRENCY_CODE, A.CUSTOMER_NUMBER,A.CUSTOMER_NAME,A.CUSTOMER_NAME2,
A.NAME,A.CURRENCY, A.DEPT_NAME,A.SEGMENT3...
之前曾在google查詢過相關的問題,但是又忘了,所以這次記錄一下:
在Oracle 10g的版本中有一個隱含的參數_kgl_large_heap_warning_threshold,預設值是2M,
當加掛到SGA的對象大於2M時,就會得到這個警告的訊息。
不過這個訊息並不會造成應用程式執行錯誤,也不會立刻就產生ORA-4031的錯誤。
我們的EBS是11i,DB是11gR2,而下列SQL可以查詢_kgl_large_heap_warning_threshold的值是50MB
SQL> select a.ksppinm name,b.ksppstvl value,a.ksppdesc description
from x$ksppi a,x$ksppcv b
where a.indx = b.indx
and a.ksppinm = '_kgl_large_heap_warning_threshold';
如果不想在alert中見到這個警告訊息,可以將值設大一點,需要重開資料庫
SQL> alter system set "_kgl_large_heap_warning_threshold"=104857600 scope=spfile;
因為alert中沒有伴隨出現ora的錯誤,資料庫也沒有出現問題,
不過Heap size大於50MB,有時間再來好好研究看看。