在客户的10.2.0.1版本的数据库的告警日志中,发现大量的Memory Notification告警信息。
详细信息为:
Memory Notification: Library Cache
Object loaded into SGA
Heap size 3559K exceeds notification threshold (2048K)
Details in trace file /oracle/app/admin/lis/udump/lis_ora_864740.trc
KGL object name :select sum(a) from (select sum(Amnt) a from Lcpol where
Insuredno='8020313918' and riskcode='1108' and payintv<>'0' and
((polstate not like '02%' and polstate not like '03%') or (polstate is null and
uwflag not in ('1','8') and (select uwflag from lccont where
contno=Lcpol.contno) not in ('1','8','a'))) union select sum(Amnt-prem) a from
Lcpol where Insuredno='8020313918' and riskcode='1108' and payintv='0' and
((polstate not like '02%' and polstate not like '03%') or (polstate is null and
uwflag not in ('1
根据metalink文档330239.1的描述,在10.2.0.1中,Oracle的告警阈值太低,导致经常会报告警信息。可以通过修改隐含参数“_kgl_large_heap_warning_threshold”来提高阈值的设置,之所以10.2.0.2以上版本中没有频繁出现这个告警信息,是由于从10.2.0.2开始,“_kgl_large_heap_warning_threshold”的值变成了50M。
这个告警信息由于出现频率太高,导致其他有价值的信息都被淹没,而且不到一个月的时间就导致告警日志涨到了800M左右,显然屏蔽这个告警信息是十分有必要的。
解决方法很简单,设置隐含参数“_kgl_large_heap_warning_threshold”到合理的范围,比如8M,然后重启数据库使之生效即可。