问题现像与分析

Oracle这个BUG你可能会遇到

近期技术群里经常出现这个问题,频次很高,我这发给大家看看:

症状基本一致:

Alert.log 里面出现如下信息:

Memory Notification: Library Cache Object loaded into SGAHeap size <heap size K>exceeds notification threshold(51200K)

...:KGL object name :<OBJECT NAME>

目前普遍出现在10g/11g/12c/19.3/19.24版本,生成大量的Trc文件会把目录塞满,导致业务无法运行,以下是一些群友的报错截图,

群友甲:

图片

群友乙:

图片

群友丙:

图片

经过群里在Oracle干过研发的资深大佬分析trc日志,得出结论是Oracle的陈年BUG,共享池chunk分裂的问题

图片

图片

图片

MOS里也确实是相关记载。具体可参见:

Memory Notification: Library Cache Object loaded into SGA / ORA-600 [KGL-heap-size-exceeded] (Doc ID 330239.1/2999897.1)

这些warning消息并不会造成进程失败。它们的出现是因为从 10gR2 数据库版本开始引入的事件消息传递机制和内存管理器相关机制。 由于共享池中的大对象可能会导致问题,因此开发了此警告阈值。 若某个sql分配的空间超过此警告阈值则向alert日志输出警告。 此警告只是通知给定的堆对象超出了定义的阈值大小,并生成跟踪文件,以便 DBA 可以检查可能昂贵的对象(从共享内存的角度来看)。 这些纯粹是警告消息,对数据库功能没有影响,尽管它们旨在告知客户应用程序中可能需要调整, 但是并不意味着 ORA-4031 将立即发生,除非共享池的大小非常小。

虽说是有明确的官方文档说明了是个BUG,但是还是有小伙伴的情况发现是应用的某个触发器触发的BUG。

图片

解决办法

可以使用如下脚本检查默认值

select
nam.ksppinm NAME,
nam.ksppdesc DESCRIPTION,
val.KSPPSTVL
from
x$ksppi nam,
x$ksppsv val
where nam.indx = val.indx and nam.ksppinm like '%kgl_large_heap_%_threshold%';

在当前12.2和19C的版本中,这两个值默认值如下所示

NAME                                               DESCRIPTION                                                                      KSPPSTVL
-------------------------------------------------- -------------------------------------------------------------------------------- ------------------------------------------------------------
_kgl_large_heap_warning_threshold                  maximum heap size before KGL writes warnings to the alert log                    52428800
_kgl_large_heap_assert_threshold                   maximum heap size before KGL raises an internal error                            524288000

这里有两个解决方案:

1、Set _kgl_large_heap_warning_threshold to a very large value.就是把这个对应值调大,在增大这个参数阈值之前,需要同时考虑加大 SGA_TARGET 和 SHARED_POOL_SIZE 15% 是SGA有更充足的内存。
2、Set both _kgl_large_heap_warning_threshold and _kgl_large_heap_assert_threshold to zero.就是把这两个值都设置为0关闭告警。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐