Oracle 12.2 ORA-600 数据库发生重启案例

2026年5月9日 作者 XiaofeiHuangfu

适用范围
Oracle Database 12.2+
问题概述
Oracle 12.2 RAC一个节点发生重启,重启前有ORA-00600: internal error code, arguments: [kcbk_populate_history_1]报错。
问题原因
Oracle 12.2.0.1.180417 下Bug 31600023 – ORA-700 [kcbk_populate_history_1], ORA-600 [17090], ORA-469 and Instance Crash 导致的。
解决方案
1、为数据库应用Oracle 12.2.0.1.201020RU或者12.2更高版本的RU;
2、升级到19c次新版本。
分析过程
1、数据库日志

...
Errors in file /u01/app/oracle/diag/rdbms/xfdb/xfdb1/trace/xfdb1_ckpt_21807.trc  (incident=72289):
ORA-00600: internal error code, arguments: [kcbk_populate_history_1], [0], [1278], [], [], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/xfdb/xfdb1/incident/incdir_72289/xfdb1_ckpt_21807_i72289.trc
2026-05-06T21:16:40.516546+08:00
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
2026-05-06T21:16:40.519028+08:00
Dumping diagnostic data in directory=[cdmp_20260506211640], requested by (instance=1, osid=21807 (CKPT)), summary=[incident=72289].
2026-05-06T21:16:40.520774+08:00
Errors in file /u01/app/oracle/diag/rdbms/xfdb/xfdb1/trace/xfdb1_ckpt_21807.trc:
ORA-00600: internal error code, arguments: [kcbk_populate_history_1], [0], [1278], [], [], [], [], [], [], [], [], []
Errors in file /u01/app/oracle/diag/rdbms/xfdb/xfdb1/trace/xfdb1_ckpt_21807.trc  (incident=72290):
ORA-469 [] [] [] [] [] [] [] [] [] [] [] []
2026-05-06T21:16:41.960159+08:00
USER (ospid: 21807): terminating the instance due to error 469
2026-05-06T21:16:42.133928+08:00
System state dump requested by (instance=1, osid=21807 (CKPT)), summary=[abnormal instance termination].
...

从数据库日志中可以看到ORA-00600 [kcbk_populate_history_1]报错后,数据库发生了重启。
2、trace

xfdb1_ckpt_21807_i72289.trc

Dump file /u01/app/oracle/diag/rdbms/xfdb/xfdb1/incident/incdir_72289/xfdb1_ckpt_21807_i72289.trc
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Build label:    RDBMS_12.2.0.1.0_LINUX.X64_170125
ORACLE_HOME:    /u01/app/oracle/product/12.2.0.1/dbhome_1
System name:    Linux
Node name:    hostdb01
Release:    3.10.0-693.11.6.el7.x86_64
Version:    #1 SMP Thu Dec 28 14:23:39 EST 2017
Machine:    x86_64
Instance name: xfdb1
Redo thread mounted by this instance: 1
Oracle process number: 36
Unix process pid: 21807, image: oracle@hostdb01 (CKPT)

*** 2026-05-06T21:16:38.867035+08:00
*** SESSION ID:(194.5853) 2026-05-06T21:16:38.867060+08:00
*** CLIENT ID:() 2026-05-06T21:16:38.867071+08:00
*** SERVICE NAME:(SYS$BACKGROUND) 2026-05-06T21:16:38.867080+08:00
*** MODULE NAME:() 2026-05-06T21:16:38.867090+08:00
*** ACTION NAME:() 2026-05-06T21:16:38.867100+08:00
*** CLIENT DRIVER:() 2026-05-06T21:16:38.867109+08:00

[TOC00000]
Jump to table of contents
Dump continued from file: /u01/app/oracle/diag/rdbms/xfdb/xfdb1/trace/xfdb1_ckpt_21807.trc
[TOC00001]
ORA-00600: internal error code, arguments: [kcbk_populate_history_1], [0], [1278], [], [], [], [], [], [], [], [], []

[TOC00001-END]
[TOC00002]
========= Dump for incident 72289 (ORA 600 [kcbk_populate_history_1]) ========

*** 2026-05-06T21:16:38.873903+08:00
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
[TOC00003]
----- SQL Statement (None) -----
Current SQL information unavailable - no cursor.
[TOC00003-END]

[TOC00004]
----- Call Stack Trace -----
calling              call     entry                argument values in hex      
location             type     point                (? means dubious value)     
-------------------- -------- -------------------- ----------------------------
ksedst()+119         call     kgdsdst()            7FFE78FC0E78 000000002
                                                   7FFE78FA28E0 ? 7FFE78FA29F8 ?
                                                   000000000 000000082 ?
dbkedDefDump()+1200  call     ksedst()             000000000 000000002 ?
                                                   7FFE78FA28E0 ? 7FFE78FA29F8 ?
                                                   000000000 ? 000000082 ?
ksedmp()+259         call     dbkedDefDump()       000000003 000000002
                                                   7FFE78FA28E0 ? 7FFE78FA29F8 ?
                                                   000000000 ? 000000082 ?
dbgexPhaseII()+2130  call     ksedmp()             0000003EB 000000002 ?
                                                   7FFE78FA28E0 ? 7FFE78FA29F8 ?
                                                   000000000 ? 000000082 ?
dbgexProcessError()  call     dbgexPhaseII()       7FA14C3276C0 7FA146E4B010
+2531                                              7FFE78FC57C0 7FFE78FA29F8 ?
                                                   000000000 ? 000000082 ?
dbgePostErrorKGE()+  call     dbgexProcessError()  7FA14C3276C0 7FA146E4B010
1767                                               000000001 000000000
                                                   000000000 ? 000000082 ?
dbkePostKGE_kgsf()+  call     dbgePostErrorKGE()   7FA14C3679A0 7FA1465B7678
90                                                 000000258 000000000 ?
                                                   000000000 ? 000000082 ?
kgeadse()+477        call     dbkePostKGE_kgsf()   7FA14C3679A0 7FA1465B7678
                                                   000000258 000000000 ?
                                                   000000000 ? 000000082 ?
kgerinv_internal()+  call     kgeadse()            7FA14C3679A0 ? 7FA1465B7678 ?
49                                                 000000258 ? 0118790DC
                                                   000000000 000000002
kgerinv()+40         call     kgerinv_internal()   7FA14C3679A0 ? 7FA1465B7678 ?
                                                   000000258 ? 0118790DC ?
                                                   000000000 ? 000000002 ?
kgeasnmierr()+150    call     kgerinv()            7FA14C3679A0 ? 7FA1465B7678 ?
                                                   000000258 ? 0118790DC ?
                                                   000000000 ? 000000002 ?
kcbk_populate_histo  call     kgeasnmierr()        7FA14C3679A0 ? 7FA1465B7678 ?
ry()+1767                                          000000258 ? 0118790DC ?
                                                   000000000 000000000
kcbk_prefetch_track  call     kcbk_populate_histo  000000003 ? 7FA1465B7678 ?
()+318                        ry()                 000000258 ? 0118790DC ?
                                                   000000000 ? 000000000 ?
kcbk_stat_act()+78   call     kcbk_prefetch_track  000000003 ? 7FA1465B7678 ?
                              ()                   000000258 ? 0118790DC ?
                                                   000000000 ? 000000000 ?
ksbcti()+247         call     kcbk_stat_act()      000000003 ? 7FA1465B7678 ?
                                                   000000258 ? 0118790DC ?
                                                   000000000 ? 000000000 ?
ksbabs()+11524       call     ksbcti()             000000003 ? 7FA146F79E40
                                                   000000001 0118790DC ?
                                                   000000000 ? 000000000 ?
ksbrdp()+1079        call     ksbabs()             000000003 ? 7FA146F79E40 ?
                                                   000000001 ? 0118790DC ?
                                                   000000000 ? 000000000 ?
opirip()+609         call     ksbrdp()             000000003 ? 7FA146F79E40 ?
                                                   000000001 0118790DC ?
                                                   000000000 ? 000000000 ?
opidrv()+602         call     opirip()             000000032 000000004
                                                   7FFE78FC9098 0118790DC ?
                                                   000000000 ? 000000000 ?
sou2o()+145          call     opidrv()             000000032 000000004
                                                   7FFE78FC9098 0118790DC ?
                                                   000000000 ? 000000000 ?
opimai_real()+202    call     sou2o()              7FFE78FC9070 000000032
                                                   000000004 7FFE78FC9098
                                                   000000000 ? 000000000 ?
ssthrdmain()+417     call     opimai_real()        000000000 7FFE78FC9380
                                                   000000004 ? 7FFE78FC9098 ?
                                                   000000000 ? 000000000 ?
main()+262           call     ssthrdmain()         000000000 000000003
                                                   7FFE78FC9380 000000001
                                                   000000000 000000000 ?
__libc_start_main()  call     main()               000000000 7FFE78FC9598
+245                                               7FFE78FC9380 ? 000000001 ?
                                                   000000000 ? 000000000 ?
_start()+41          call     __libc_start_main()  000D05DC0 000000001
                                                   7FFE78FC9598 7FA1475E6B35 ?
                                                   000000000 ? 000000000 ?
[TOC00004-END]


[TOC00005]
--------------------- Binary Stack Dump ---------------------


========== FRAME [1] (ksedst()+119 -> kgdsdst()) ==========
defined by frame pointers 0x7ffe78fc0fe0  and 0x7ffe78fc0e60
CALL TYPE: call   ERROR SIGNALED: no   COMPONENT: KSE

*** 2026-05-06T21:16:39.006315+08:00
RDI 00007FFE78FC0E78 RSI 0000000000000002 RDX 00007FFE78FA28E0 
RCX 00007FFE78FA29F8 R8 0000000000000000 R9 0000000000000082 
RAX 0000000000000000 RBX 00007FA14C3A9F40 RBP 00007FFE78FC0FE0 
R10 0000000000000000 R11 0000000000000000 R12 0000000000000000 
R13 0000000000000000 R14 0000000000000000 R15 0000000000002004 
RSP 00007FFE78FC0E70 RIP 0000000000D2FC87 
Dump of memory from 0x7ffe78fc0e60 to 0x7ffe78fc0fe0
7FFE78FC0E60 78FC0FE0 00007FFE 00D2FC87 00000000  [...x............]
7FFE78FC0E70 00000000 00000000 10A3BF20 00000000  [........ .......]
7FFE78FC0E80 00D2BE00 00000000 10A3BF20 00000000  [........ .......]
7FFE78FC0E90 00D2BE00 00000000 4C3679A0 00007FA1  [.........y6L....]
7FFE78FC0EA0 4C3679A0 00007FA1 4C2670A8 00007FA1  [.y6L.....p&L....]
7FFE78FC0EB0 00000100 00000000 4C39E3BC 00007FA1  [..........9L....]
7FFE78FC0EC0 00000001 00000000 4C371060 00007FA1  [........`.7L....]
7FFE78FC0ED0 00000001 00000000 00000000 00000000  [................]
7FFE78FC0EE0 00000000 00000000 4C3276C0 00007FA1  [.........v2L....]
7FFE78FC0EF0 00000000 00000000 00D05CC0 00000000  [.........\......]
7FFE78FC0F00 1105C7AE 00000000 00D31070 00000000  [........p.......]
7FFE78FC0F10 00000000 00000000 46F5C028 00007FA1  [........(..F....]
7FFE78FC0F20 0F1A4860 00000000 4C3679A0 00007FA1  [`H.......y6L....]
7FFE78FC0F30 BEBEA703 02050034 4C3A9F40 00007FA1  [....4...@.:L....]
7FFE78FC0F40 00000000 00000000 4C3A9F40 00007FA1  [........@.:L....]
7FFE78FC0F50 122DDF58 00000000 122DDFB8 00000000  [X.-.......-.....]
7FFE78FC0F60 78FC0F90 00007FFE 476D038D 00007FA1  [...x......mG....]
7FFE78FC0F70 00000000 00000000 10EE7EE8 00000000  [.........~......]
7FFE78FC0F80 04189374 00000000 30268486 00000000  [t.........&0....]
7FFE78FC0F90 78FC0FA0 00007FFE 10EE7E27 00000000  [...x....'~......]
7FFE78FC0FA0 78FC0FE0 00007FFE 00D2E756 00000000  [...x....V.......]
7FFE78FC0FB0 122DDF58 00000000 00000000 00000000  [X.-.............]
7FFE78FC0FC0 00000000 00000000 00000002 00000000  [................]
7FFE78FC0FD0 4C3A9F40 00007FA1 00000003 00000000  [@.:L............]

========== FRAME [2] (dbkedDefDump()+1200 -> ksedst()) ==========
...

trace中看的这些函数与buffer pool相关,kcbk_populate_history,kcbk_prefetch_track,kcbk_stat_act,这些函数应该由CKPT检查点进程维护。
KCBK-[K]ernal [C]ache [B]uffer chec[K]-KCBK应该是buffer pool的检查。
kcbk_populate_history – kernel cache buffers checkpoint queue manipulation populate history table for db_block_prefetching, make decision, write to fixed SGA
kcbk_prefetch_track – kernel cache buffers checkpoint queue manipulation db_block_prefetch administration
kcbk_stat_act kcbk_stat_act – kernel cache buffers checkpoint queue manipulation
【知识点】
buffer pool:SGA中的一个内存区域,用于缓存数据库块以减少磁盘I/O并提高数据访问性能
检查点进程 (CKPT):“检查点”是一种数据结构,用于定义数据库的重做线程中的系统更改号 (SCN)。检查点被记录在控制文件和每个数据文件头中。它们是恢复操作的关键元素。

【小结】Oracle该版本的buffer pool结构信息异常报ORA-600 [kcbk_populate_history_1]然后发生了重启,建议生产环境及时打RU修复该bug。

-the end-