Oracle library_cache advice功能触发的ORA-600

2026年8月19日 作者 XiaofeiHuangfu

适用范围
Oracle Database 11g
问题概述
数据库日志中报ORA-00600: internal error code, arguments: [kglsim_pinhp1],这是是一个典型的与共享池(Shared Pool)和库缓存模拟器(Library Cache Simulator)相关的内部异常.
问题原因
library cache advice statistics simulator,共享池(Shared Pool)和库缓存模拟器(Library Cache Simulator)相关的内部异常。
解决方案
1、临时关闭库缓存的 advice 功能
SQL>ALTER SYSTEM SET “_library_cache_advice” = FALSE SCOPE=spfile sid=’*’;并重启数据库,修改参数前做好参数文件备份。
说明:关闭此参数仅会导致缺失Shared Pool Advice 的预估数据区,在shared pool不⾜的情况下会⾃动调整shared pool的⼤⼩,也就是缺少⼀个预估的过程。
2、固定share pool大小
如果系统物理内存和SGA充足且业务模型相对固定,建议关闭 ASMM 的动态调整,为 Shared Pool、Buffer Cache 设置固定的合理下限(即 SHARED_POOL_SIZE 和 DB_CACHE_SIZE 等于 SGA_TARGET 的合理分配比例),这能规避大量由于内存动态收缩导致的内部 Bug。
3、升级到19c
由于11g扩展支持(Extended Support)早已结束,从长远考虑建议将数据库升级到19c并应用次新补丁。
ORA-00600: internal error code, arguments: [kglsim_pinhp1]说明:

kglsim_pinhp1
1)kgl 代表 Kernel Generic Library(即 Library Cache,库缓存)。

2)sim 代表 Simulator(模拟器),主要用于支撑 V$LIBRARY_CACHE_ADVICE。它通过在专门的 Hash 表中记录被淘汰出内存的对象数据,来估算增加共享池大小能够带来的预期性能。
3)pinhp1 = Pin Heap 1,说明在尝试固定(Pin)模拟器的内存堆时发生了问题。
分析过程
1、trc分析

*** 2026-08-18 19:25:31.947
*** SESSION ID:(567.30691) 2026-08-18 19:25:31.947
*** CLIENT ID:() 2026-08-18 19:25:31.947
*** SERVICE NAME:(XFSVC) 2026-08-18 19:25:31.947
*** MODULE NAME:(JDBC Thin Client) 2026-08-18 19:25:31.947
*** ACTION NAME:() 2026-08-18 19:25:31.947

Dump continued from file: /u01/app/oracle/diag/rdbms/xfdb/xfdb1/trace/xfdb1_ora_33233651.trc
ORA-00600: internal error code, arguments: [kglsim_pinhp1], [0x7000102E2464C78], [], [], [], [], [], [], [], [], [], []

========= Dump for incident 91897 (ORA 600 [kglsim_pinhp1]) ========

*** 2026-08-18 19:25:31.955
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)


----- Call Stack Trace -----
calling              call     entry                argument values in hex      
location             type     point                (? means dubious value)     
-------------------- -------- -------------------- ----------------------------
skdstdst()+40        bl       0000000109B55A84     000000000 ? 000000001 ?
                                                   000000003 ? 000000000 ?
                                                   000000000 ? 000000001 ?
                                                   000000003 ? 000000000 ?
ksedst1()+112        call     skdstdst()           18CBB433D8BD2FAE ?
                                                   4845284100000000 ?
                                                   FFFFFFFFFFF0360 ?
                                                   2FC01E47C7686 ? 10A8255F4 ?
                                                   000000000 ? 1107290E0 ?
                                                   2050033FFFF0368 ?
ksedst()+40          call     ksedst1()            700010350D0AF28 ?
                                                   700010307324AC8 ?
                                                   7000102D559D4C8 ?
                                                   70001030781E848 ? 000000000 ?
                                                   000000000 ? 000002004 ?
                                                   000000001 ?
dbkedDefDump()+1516  call     ksedst()             000000000 ? 000000000 ?
                                                   000000000 ? 000000000 ?
                                                   000000000 ? 000000000 ?
                                                   000000000 ? 300000003 ?
ksedmp()+72          call     dbkedDefDump()       3107290E0 ? 110000390 ?
                                                   FFFFFFFFFFF0B70 ? 1106ABCF8 ?
                                                   100125678 ? 1109C3BC0 ?
                                                   10011B0E8 ? 1106ABCF8 ?
ksfdmp()+100         call     ksedmp()             000000002 ? 000000000 ?
                                                   000000002 ? 10AAF0518 ?
                                                   10A085E30 ? 000000000 ?
                                                   1108E9688 ? 1107290E0 ?
dbgexPhaseII()+1904  call     ksfdmp()             700010350D0AF28 ?
                                                   700010307324AC8 ? 000000002 ?
                                                   000000000 ? 000000002 ?
                                                   10A085E28 ? 000000000 ?
                                                   001050005 ?
dbgexProcessError()  call     dbgexPhaseII()       1107290E0 ? 11072B138 ?
+1556                                              0000166F9 ? 200000000 ?
                                                   FFFFFFFFFFF1A88 ? 000000078 ?
                                                   1109CD6B0 ? 1109CBF58 ?
dbgeExecuteForError  call     dbgexProcessError()  1107290E0 ? 1108E9688 ?
()+72                                              100000000 ? 000000000 ?
                                                   FFFFFFFFFFF4F48 ?
                                                   FFFFFFFFFFF4E10 ?
                                                   FFFFFFFFFFF5310 ? 1108EB3D0 ?
dbgePostErrorKGE()+  call     dbgeExecuteForError  1106ABCF8 ? 00000FFFF ?
2044                          ()                   FFFFFFFFFFFA960 ? 1106DEF38 ?
                                                   00000001A ? 000000000 ?
                                                   000000001 ? 000000000 ?
dbkePostKGE_kgsf()+  call     dbgePostErrorKGE()   7000102D559D4C8 ?
68                                                 70001030781E848 ?
                                                   25807324B20 ? 109E8E370 ?
                                                   000000000 ? 000000000 ?
                                                   FFFFFFFFFFF5DB0 ? 110980040 ?
kgeadse()+380        call     dbkePostKGE_kgsf()   000000000 ?
                                                   7FFFFFF7256C6C75 ?
                                                   001020000 ? 109FB6D98 ?
                                                   70001034D13C5C0 ? 109E8E370 ?
                                                   000000000 ? 1100003C8 ?
kgerinv_internal()+  call     kgeadse()            256C6C7500D0CE10 ?
48                                                 256C6C7500FF6190 ?
                                                   256C6C7500FF5D50 ?
                                                   3544532000000000 ?
                                                   256C6C7500FF5DE0 ?
                                                   256C6C7500000000 ?
                                                   FFFFFFFFFFF5C98 ?
                                                   7000103363C2478 ?
kgerinv()+48         call     kgerinv_internal()   256C6C7500000001 ?
                                                   000000000 ? FFFFFFFFFFF5CD0 ?
                                                   3538353837313434 ?
                                                   38003531000001 ? 110000390 ?
                                                   3000333239323436 ?
                                                   353600FFFFFF5C70 ?
kgesinv()+32         call     kgerinv()            000000011 ? 000000AA0 ?
                                                   000000000 ? 000000000 ?
                                                   000000000 ? 000000000 ?
                                                   109FB2A90 ? 000000003 ?
kgesin()+52          call     kgesinv()            000000001 ? 700010338642D90 ?
                                                   70001030F970E28 ? 000000000 ?
                                                   000000001 ? FFFFFFFFFFF6FA0 ?
                                                   7000102E2464C78 ? 1100003C8 ?
kglsim_pin_simhp()+  call     kgesin()             FFFFFFFFFFF5E70 ?
292                                                7000103363D38C0 ? 000002960 ?
                                                   100000001 ? 000000002 ?
                                                   7000102E2464C78 ?
                                                   F1000A01C2244400 ?
                                                   000000000 ?
kglhpn()+112         call     kglsim_pin_simhp()   04FE9CEDA ? 0051C3686 ?
                                                   100112CE0 ? 110A78F88 ?
                                                   FFFFFFFFFFF5F60 ?
                                                   700010338642D90 ?
                                                   70001030F970E28 ? 000000000 ?
kglobpn()+296        call     kglhpn()             FFFFFFFFFFF6648 ?
                                                   FFFFFFFFFFF5EB0 ?
                                                   FFFFFFFFFFF63D0 ? 1106ABCF8 ?
                                                   100F82F40 ? FFFFFFFFFFFA960 ?
                                                   FFFFFFFFFFF5F40 ? 00000001A ?
kglpim()+972         call     kglobpn()            1100003C8 ? 000000001 ?
                                                   70001030F970F68 ?
                                                   700010307324AC8 ?
                                                   FFFFFFFFFFF60D0 ? 1106ABCF8 ?
                                                   100F92BF8 ? 1106ABCF8 ?
IPRA.$kglpin()+1292  call     kglpim()             1100003C8 ? FFFFFFFFFFF6FA0 ?
                                                   7000102D5EBE1F8 ? 1109CF000 ?
                                                   1109CE3B0 ? 1106ABCF8 ?
                                                   000000000 ? FFFFFFFFFFF6550 ?
kglpin()+96          call     IPRA.$kglpin()       1100003C8 ? FFFFFFFFFFF6FA0 ?
                                                   70001030F9EAF60 ?
                                                   70001030F970E28 ? 200000006 ?
                                                   000000067 ? FFFFFFFFFFF6EF0 ?
                                                   FFFFFFFFFFF6DF0 ?
kkspsc0()+3200       call     kglpin()             1100003C8 ? FFFFFFFFFFF6FA0 ?
                                                   100000000 ? 300000000 ?
                                                   FFFFFFFFFFF6EA0 ? 000000000 ?
                                                   000000000 ? 000000000 ?
kksParseCursor()+11  call     kkspsc0()            1109A1E48 ? FFFFFFFFFFFA598 ?
6                                                  000000067 ? 300000000 ?
                                                   600255D70 ? A40001106ABCF8 ?
                                                   000000000 ? 000000055 ?
opiosq0()+2072       call     kksParseCursor()     1001178C0 ? 70001030FA3E1F0 ?
                                                   1100003C8 ? 1100003C8 ?
                                                   000000001 ? 1109B3588 ?
                                                   000000000 ?
                                                   2216414400000000 ?
kpooprx()+316        call     opiosq0()            3FFFF7F90 ? 1106ABCF8 ?
                                                   000000000 ? A4000000000000 ?
                                                   000000000 ?
                                                   4442434A00007F10 ?
                                                   2715005700000000 ?
                                                   10AD8E30C ?
kpoal8()+884         call     kpooprx()            000000000 ? 70001034ED386E0 ?
                                                   110A8D278 ? 100000001 ?
                                                   000000000 ? A40000000000A4 ?
                                                   000000001 ? 109E8B9D0 ?
opiodr()+908         call     kpoal8()             100000000 ? 200000000 ?
                                                   000000000 ? 000000000 ?
                                                   FFFFFFFFFFF8DE0 ? 000000000 ?
                                                   000000000 ? 000000000 ?
ttcpip()+1028        call     opiodr()             5EFFFFA350 ? 1C000004B0 ?
                                                   FFFFFFFFFFFA8C8 ? 000530058 ?
                                                   100000000 ? 000000028 ?
                                                   FFFFFFFFFFFA270 ? 1108B0650 ?
opitsk()+1612        call     ttcpip()             110134BE0 ? 1107346A8 ?
                                                   FFFFFFFFFFFA820 ?
                                                   4222842400000000 ?
                                                   1000EFD54 ? 1106ABCF8 ?
                                                   FFFFFFFFFFFA8F0 ? 1106ABCF8 ?
opiino()+940         call     opitsk()             1100242A8 ? 000000000 ?
                                                   11078CE50 ? 110792150 ?
                                                   1107290E0 ? FFFFFFFFFFFC9B0 ?
                                                   FFFFFFFFFFFEA0C ? 000000101 ?
opiodr()+908         call     opiino()             3C006C921C ?
                                                   BFF0000000000000 ?
                                                   FFFFFFFFFFFEE30 ?
                                                   FFFFFFFFFFFD4B9 ?
                                                   FFFFFFFFFFFD500 ? 1106ABCF8 ?
                                                   FFFFFFFFFFFD520 ?
                                                   9FFFFFFF000E3D8 ?
opidrv()+1132        call     opiodr()             3CFFFFEA60 ? 400000000 ?
                                                   FFFFFFFFFFFEE30 ? 06F726163 ?
                                                   6C652F6170702F6F ?
                                                   1106ABCF8 ?
                                                   61672F7264626D73 ?
                                                   2F776664622F5746 ?
sou2o()+136          call     opidrv()             3C067EA570 ? 413F1009D ?
                                                   FFFFFFFFFFFEE30 ?
                                                   1A002D02120000 ? 0E0DDF00D ?
                                                   1106ABCF8 ?
                                                   BADC0FFEE0DDF00D ?
                                                   BADC0FFEE0DDF00D ?
opimai_real()+560    call     sou2o()              FFFFFFFFFFFEEA0 ?
                                                   BADC0FFEE0DDF00D ?
                                                   90000000009BB90 ?
                                                   BADC0FFEE0DDF00D ?
                                                   000000002 ? 9001000A0293EE8 ?
                                                   A0000000A000000 ? 10B6C1870 ?
ssthrdmain()+276     call     opimai_real()        10B7023C4 ? 9001000A02980D8 ?
                                                   FFFFFFFFFFFEF80 ?
                                                   302284340B701BE8 ?
                                                   FFFFFFFFFFFEFA0 ?
                                                   FFFFFFFFFFFF2F8 ?
                                                   9000000000921EC ?
                                                   9001000A0293EE8 ?
main()+204           call     ssthrdmain()         240000000 ? FFFFFFFFFFFF2E8 ?
                                                   8FFFFFFF0000090 ? 000000000 ?
                                                   000000000 ? 000000000 ?
                                                   BADC0FFEE0DDF00D ?
                                                   BADC0FFEE0DDF00D ?
__start()+112        call     main()               000000000 ? 000000000 ?
                                                   000000000 ? 000000000 ?
                                                   000000000 ? 000000000 ?
                                                   000000000 ? 000000000 ?


--------------------- Binary Stack Dump ---------------------

trc中报ORA-00600: internal error code, arguments: [kglsim_pinhp1],

2、检查SGA中share pool使用情况

SQL>SELECT component, oper_type, oper_mode, initial_size, target_size, end_time 
FROM v$sga_resize_ops 
WHERE component = 'shared pool' 
ORDER BY end_time DESC;

检查近期或报ORA-600时段,share pool是否频繁发生抖动。除了使用上面的SQL查询也可以收集AWR报告进行分析。
3、检查 KGL Simulator 内存占用

SQL>SELECT * FROM v$sgastat 
WHERE lower(name) LIKE '%sim%' AND pool = 'shared pool';

【小结】由于该报错涉及 kglsim 组件,如果报错比较频繁,最有效且对业务影响最小的解决方案是禁用库缓存模拟器library cache advice statistics simulator,这会停止收集 Advice 数据,关闭此参数仅会导致缺失Shared Pool Advice 的预估数据区,在shared pool不⾜的情况下会⾃动调整shared pool的⼤⼩,也就是缺少⼀个预估的过程;既然关闭了_library_cache_advice 会导致缺乏共享池不足的预估,就需要加强监控以防止出现 ORA-0403报错;也可以手工管理share pool,给share pool固定大小。由于11g扩展支持(Extended Support)早已结束,从长远考虑建议将数据库升级到19c并应用次新补丁。

笔者文章集合详见:
https://www.myhfxf.com
https://www.xiaofeihuangfu.com
CSDN:https://blog.csdn.net/xfhuangfu
ITPUB:https://blog.itpub.net/28373936/
微信公众号:xfhuangfu