巡检发现警告日志报错:
Mon Nov 21 14:24:22 2011
Memory Notification: Library Cache Object loaded into SGA
Heap size 5800K exceeds notification threshold (2048K)
Details in trace file c:\oracle\product\10.2.0\admin\hy2003\udump\hy2003_ora_4372.trc
KGL object name :PCDM.BIN$C8iYfZ9TS8ORv9KUD+hrSA==$0
问题原因
在Oracle 10.2.0.1版本数据库中隐含参数_kgl_large_heap_warning_threshold默认值是2M,该参数控制加载到内存中对象的大小,当加载的对象大于2M时,就会在alert警告文件中进行提示。2M的默认大小相对太小,因此在10.2.0.1版本中可能很容易遇到这个报错信息。该参数默认值在10.2.0.2版本中进行了调整,调整到了50M。
确认出现警告的数据库的版本是10.2.0.1
sys@orcl> select * from v$version;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
确认隐含参数_kgl_large_heap_warning_threshold的默认大小
select a.ksppinm name,b.ksppstvl value,a.ksppdesc description
from xksppcv b
where a.indx = b.indx
and a.ksppinm = ‘_kgl_large_heap_warning_threshold’
/
NAME VALUE DESCRIPTION
_kgl_large_heap_warning_threshold 2097152 maximum heap size before KGL writes warnings to the alert log
sys@orcl> select 2097152/1024/1024 MB from dual;
MB
2
问题处理方法
既然知道了问题原因,处理起来就很简单了。如果不希望在alert文件中看到这些报错,可以适当调大隐含参数“_kgl_large_heap_warning_threshold”的值,或将其设置为“0”。
1)将_kgl_large_heap_warning_threshold参数大小调整为50M
sys@orcl> alter system set “_kgl_large_heap_warning_threshold”=52428800 scope=spfile;
System altered.
2)重启数据库
OK,该问题到此已得到有效处理。




