隐含参数_kgl_large_heap_warning_threshold

本文探讨了Oracle数据库内存通知中的大对象加载问题,详细解释了内存通知的具体内容,以及导致通知的原因——隐含参数_kgl_large_heap_warning_threshold设置过小。通过SQL查询获取该参数值,并说明了在不同版本中该参数的默认设置。提供了调整参数值和升级数据库版本两种解决方案,以避免频繁出现警告信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库的alert日志发现出现以下提示信息

Memory Notification: Library Cache Object loaded into SGA

Heap size 2208K exceeds notification threshold (2048K)

KGL object name :XDB.XDbD/PLZ01TcHgNAgAIIegtw== 

感觉应该是数据库的bug导致的,后来查出是oracle数据库的隐含参数(_kgl_large_heap_warning_threshold)设置太小导致,此参数在10.2.0.1.0版本默认设置只有2M,对于后期的版本已修正此参数的值为50M,如果数据库是10.2.0.1.0版本出现此提示信息的可能性很大,可以通过下的sql语句获取想要的隐含参数的大小:

select ksppinm name,

       ksppstvl value,

       ksppstdf isdefault,

       decode(bitand(ksppstvf, 7), 1, 'MODIFIED', 4, 'SYSTEM_MOD', 'FALSE') ismod,

       decode(bitand(ksppstvf, 2), 2, 'TRUE', 'FALSE') isadj

  from x$ksppi x, x$ksppcv y

 where (x.indx = y.indx)

   and x.ksppinm like '%' || '¶meter' || '%';


_kgl_large_heap_warning_threshold大小为:2097152,这个值的大小刚好为alert日志中的值

select KSPPDESC from x$ksppi where ksppinm like '_kgl_large_heap_warning%';

用上面sql语句查出来的结果:maximum heap size before KGL writes warnings to the alert log

Oracle10g中,在load较大的对象进入library cache时,超出设定值会记录以上警告信息。

在版本10.2.0.1中,这个定义大对象的阈值是2M,这是由隐含参数_kgl_large_heap_warning_threshold 指定的,

如果系统中需要load很多大对象,又不想在alert中看到太多这类的警告信息,可采取下面两种解决方法:

1、将此参数值改大为50M或0以及更大的值

       ALTER SYSTEM 

            SET _kgl_large_heap_warning_threshold=52428800 SCOPE=SPFILE;

       然后后重启数据库才可以生效

2、数据库版本升级

      数据库升级到10.2.0.2.0或者更高的版本后,默认该参数的值为50M

解决完成后我们再去查看此隐含参数的值就已经变成50M,同时alert警告日志中也不会再出现类似警告信息了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值