Oracle 12.2 ORA-600 数据库发生重启案例
适用范围
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-