一套10.2.0.4的单节点数据库在恢复数据文件时出现了ORA-00600: internal error code, arguments: [2608], [1], [0], [690423], [0], [690425], [], []内部错误,其日志如下:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /s01/db_1
System name: Linux
Node name: rh2.oracle.com
Release: 2.6.18-194.el5
Version: #1 SMP Mon Mar 29 22:10:29 EDT 2010
Machine: x86_64
Instance name: G10R2
Redo thread mounted by this instance: 1
Oracle process number: 15
Unix process pid: 21360, image: oracle@rh2.oracle.com (TNS V1-V3)
*** 2011-04-27 21:20:40.979
*** ACTION NAME:() 2011-04-27 21:20:40.979
*** MODULE NAME:(sqlplus@rh2.oracle.com (TNS V1-V3)) 2011-04-27 21:20:40.979
*** SERVICE NAME:(SYS$USERS) 2011-04-27 21:20:40.979
*** SESSION ID:(159.3) 2011-04-27 21:20:40.979
kwqmnich: current time:: 13: 20: 40
kwqmnich: instance no 0 check_only flag 1
kwqmnich: initialized job cache structure
Recovery target incarnation = 2, activation ID = 0
Influx buffer limit = 52443 (50% x 104887)
Successfully allocated 2 recovery slaves
Using 550 overflow buffers per recovery slave
Start recovery at thread 1 ckpt scn 690423 logseq 1 block 3183
*** 2011-04-27 21:20:46.165
Media Recovery add redo thread 1
*** 2011-04-27 21:20:46.172
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [2608], [1], [0], [690423], [0], [690425], [], []
Current SQL statement for this session:
ALTER DATABASE RECOVER datafile 9
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedst()+31 call ksedst1() 000000000 ? 000000001 ?
ksedmp()+610 call ksedst() 000000000 ? 000000001 ?
7FFF6F1795E0 ? 7FFF6F179640 ?
7FFF6F179580 ? 000000000 ?
ksfdmp()+21 call ksedmp() 000000003 ? 000000001 ?
7FFF6F1795E0 ? 7FFF6F179640 ?
7FFF6F179580 ? 000000000 ?
kgeriv()+176 call ksfdmp() 000000003 ? 000000001 ?
7FFF6F1795E0 ? 7FFF6F179640 ?
7FFF6F179580 ? 000000000 ?
kgesiv()+119 call kgeriv() 0068966E0 ? 00A81E650 ?
000000000 ? 7FFF6F178F08 ?
7FFF6F179580 ? 000000000 ?
ksesic5()+215 call kgesiv() 0068966E0 ? 00A81E650 ?
000000A30 ? 000000005 ?
7FFF6F17A360 ? 000000000 ?
kcrfro()+6796 call ksesic5() 000000A30 ? 000000000 ?
000000001 ? 000000000 ?
000000000 ? 000000000 ?
kcramr()+7872 call kcrfro() 2B9DB2D29400 ? 000000000 ?
000000001 ? 000000000 ?
000000000 ? 000000000 ?
krddmr()+1290 call kcramr() 2B9DB2CF70E0 ? 00A7F8280 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
adbdrv()+10248 call krddmr() 00A7F8280 ? 000000000 ?
7FFF6F182FC4 ? 000000000 ?
2B9DB2CF70E0 ?
A7F828000000001 ?
opiexe()+13505 call adbdrv() 00A7F8280 ? 000000000 ?
0A2806BD8 ? 000000000 ?
2B9DB2CF70E0 ?
A7F828000000001 ?
opiosq0()+3316 call opiexe() 000000004 ? 000000000 ?
7FFF6F184238 ? 000000012 ?
2B9DB2CF70E0 ?
A7F828000000001 ?
kpooprx()+315 call opiosq0() 000000003 ? 00000000E ?
7FFF6F1843A8 ? 0000000A4 ?
2B9DB2CF70E0 ?
A7F828000000001 ?
kpoal8()+799 call kpooprx() 7FFF6F187554 ? 7FFF6F185530 ?
000000024 ? 000000001 ?
000000000 ? A7F828000000001 ?
opiodr()+984 call kpoal8() 00000005E ? 000000017 ?
7FFF6F187550 ? 000000001 ?
000000001 ? A7F828000000001 ?
ttcpip()+1012 call opiodr() 00000005E ? 000000017 ?
7FFF6F187550 ? 000000000 ?
0059C0990 ? A7F828000000001 ?
opitsk()+1322 call ttcpip() 00689E3B0 ? 000000001 ?
7FFF6F187550 ? 000000000 ?
7FFF6F187048 ? 7FFF6F1876B8 ?
opiino()+1026 call opitsk() 000000003 ? 000000000 ?
7FFF6F187550 ? 000000001 ?
=========================================================
该ORA-00600[2608]可能由数据文件头中记录的checkpoint scn过小造成,Oracle会将该checkpoint scn与块中的resetlogs scn以及控制文件中记录的日志文件的Low scn相比较,若文件头中的checkpoint scn远小于对比值,那么就会出现ORA-00600[2608]内部错误。
下面我们通过修改数据文件头中kcvfhckp结构中记录的checkpoint scn到一个较小值,来模拟出发ORA-00600[2608]内部错误:
SQL> oradebug setmypid;
Statement processed.
SQL> oradebug dump file_hdrs 8;
Statement processed.
SQL> oradebug tracefile_name;
DATA FILE #11:
(name #17) /u01/data02.dbf
creation size=6400 block size=8192 status=0x1c head=17 tail=17 dup=1
tablespace 12, index=12 krfil=11 prev_file=0
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:4 scn: 0x0000.000b01c2 04/27/2011 22:52:31
Stop scn: 0x0000.000b01c5 04/27/2011 22:52:39
Creation Checkpointed at scn: 0x0000.000b01a8 04/27/2011 22:52:24
thread:1 rba:(0xb.e.10)
....................................................
Hot Backup end marker scn: 0x0000.00000000
aux_file is NOT DEFINED
V10 STYLE FILE HEADER:
Compatibility Vsn = 169870080=0xa200300
Db ID=2894437650=0xac859d12, Db Name='G10R2'
Activation ID=0=0x0
Control Seq=740=0x2e4, File size=6400=0x1900
File Number=11, Blksiz=8192, File Type=3 DATA
Tablespace #12 - DATA02 rel_fn:11
Creation at scn: 0x0000.000b01a8 04/27/2011 22:52:24
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
reset logs count:0x2cade887 scn: 0x0000.000a88f9 reset logs terminal rcv data:0x0 scn: 0x0000.00000000
prev reset logs count:0x2cadd4e7 scn: 0x0000.000a7f86 prev reset logs terminal rcv data:0x0 scn: 0x0000.00000000
recovered at 01/01/1988 00:00:00
status:0x4 root dba:0x00000000 chkpt cnt: 4 ctl cnt:3
begin-hot-backup file size: 0
Checkpointed at scn: 0x0000.000b01c2 04/27/2011 22:52:31
/* 可以看到以上11号数据文件头的Checkpoint scn为0x0000.000b01c2 ,
而resetlogs scn为0x0000.000a88f9 */
/* 我们将Checkpoint scn修改为0x0000.000a88f7 */
[oracle@rh2 u01]$ bbed filename=data02.dbf blocksize=8192 password=blockedit mode=edit
BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 27 22:55:30 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> set blocksize 8192
BLOCKSIZE 8192
BBED> set block 2
BLOCK# 2
BBED> map
File: data02.dbf (0)
Block: 2 Dba:0x00000000
------------------------------------------------------------
Data File Header
struct kcvfh, 676 bytes @0
ub4 tailchk @8188
BBED> p kcvfh
struct kcvfh, 676 bytes @0
struct kcvfhbfh, 20 bytes @0
ub1 type_kcbh @0 0x0b
ub1 frmt_kcbh @1 0xa2
ub1 spare1_kcbh @2 0x00
ub1 spare2_kcbh @3 0x00
ub4 rdba_kcbh @4 0x02c00001
ub4 bas_kcbh @8 0x00000000
ub2 wrp_kcbh @12 0x0000
ub1 seq_kcbh @14 0x01
ub1 flg_kcbh @15 0x04 (KCBHFCKV)
ub2 chkval_kcbh @16 0xb4a1
ub2 spare3_kcbh @18 0x0000
struct kcvfhhdr, 76 bytes @20
ub4 kccfhswv @20 0x00000000
ub4 kccfhcvn @24 0x0a200300
ub4 kccfhdbi @28 0xac859d12
text kccfhdbn[0] @32 G
text kccfhdbn[1] @33 1
text kccfhdbn[2] @34 0
text kccfhdbn[3] @35 R
text kccfhdbn[4] @36 2
text kccfhdbn[5] @37
text kccfhdbn[6] @38
text kccfhdbn[7] @39
ub4 kccfhcsq @40 0x000002e4
ub4 kccfhfsz @44 0x00001900
s_blkz kccfhbsz @48 0x00
ub2 kccfhfno @52 0x000b
ub2 kccfhtyp @54 0x0003
ub4 kccfhacid @56 0x00000000
ub4 kccfhcks @60 0x00000000
text kccfhtag[0] @64
text kccfhtag[1] @65
text kccfhtag[2] @66
text kccfhtag[3] @67
text kccfhtag[4] @68
text kccfhtag[5] @69
text kccfhtag[6] @70
text kccfhtag[7] @71
text kccfhtag[8] @72
text kccfhtag[9] @73
text kccfhtag[10] @74
text kccfhtag[11] @75
text kccfhtag[12] @76
text kccfhtag[13] @77
text kccfhtag[14] @78
text kccfhtag[15] @79
text kccfhtag[16] @80
text kccfhtag[17] @81
text kccfhtag[18] @82
text kccfhtag[19] @83
text kccfhtag[20] @84
text kccfhtag[21] @85
text kccfhtag[22] @86
text kccfhtag[23] @87
text kccfhtag[24] @88
text kccfhtag[25] @89
text kccfhtag[26] @90
text kccfhtag[27] @91
text kccfhtag[28] @92
text kccfhtag[29] @93
text kccfhtag[30] @94
text kccfhtag[31] @95
ub4 kcvfhrdb @96 0x00000000
struct kcvfhcrs, 8 bytes @100
ub4 kscnbas @100 0x000b01a8
ub2 kscnwrp @104 0x0000
ub4 kcvfhcrt @108 0x2cae0628
ub4 kcvfhrlc @112 0x2cade887
struct kcvfhrls, 8 bytes @116 resetlogs scn
ub4 kscnbas @116 0x000a88f9
ub2 kscnwrp @120 0x0000
ub4 kcvfhbti @124 0x00000000
struct kcvfhbsc, 8 bytes @128
ub4 kscnbas @128 0x00000000
ub2 kscnwrp @132 0x0000
ub2 kcvfhbth @136 0x0000
ub2 kcvfhsta @138 0x0004 (KCVFHOFZ)
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484 checkpoint scn
ub4 kscnbas @484 0x000b01c2
ub2 kscnwrp @488 0x0000
ub4 kcvcptim @492 0x2cae062f
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x0000000b
ub4 kcrbabno @504 0x0000001b
ub2 kcrbabof @508 0x0010
ub1 kcvcpetb[0] @512 0x02
ub1 kcvcpetb[1] @513 0x00
ub1 kcvcpetb[2] @514 0x00
ub1 kcvcpetb[3] @515 0x00
ub1 kcvcpetb[4] @516 0x00
ub1 kcvcpetb[5] @517 0x00
ub1 kcvcpetb[6] @518 0x00
ub1 kcvcpetb[7] @519 0x00
ub4 kcvfhcpc @140 0x00000004
ub4 kcvfhrts @144 0x00000000
ub4 kcvfhccc @148 0x00000003
struct kcvfhbcp, 36 bytes @152
struct kcvcpscn, 8 bytes @152
ub4 kscnbas @152 0x00000000
ub2 kscnwrp @156 0x0000
ub4 kcvcptim @160 0x00000000
ub2 kcvcpthr @164 0x0000
union u, 12 bytes @168
struct kcvcprba, 12 bytes @168
ub4 kcrbaseq @168 0x00000000
ub4 kcrbabno @172 0x00000000
ub2 kcrbabof @176 0x0000
ub1 kcvcpetb[0] @180 0x00
ub1 kcvcpetb[1] @181 0x00
ub1 kcvcpetb[2] @182 0x00
ub1 kcvcpetb[3] @183 0x00
ub1 kcvcpetb[4] @184 0x00
ub1 kcvcpetb[5] @185 0x00
ub1 kcvcpetb[6] @186 0x00
ub1 kcvcpetb[7] @187 0x00
ub4 kcvfhbhz @312 0x00000000
struct kcvfhxcd, 16 bytes @316
ub4 space_kcvmxcd[0] @316 0x00000000
ub4 space_kcvmxcd[1] @320 0x00000000
ub4 space_kcvmxcd[2] @324 0x00000000
ub4 space_kcvmxcd[3] @328 0x00000000
word kcvfhtsn @332 12
ub2 kcvfhtln @336 0x0006
text kcvfhtnm[0] @338 D
text kcvfhtnm[1] @339 A
text kcvfhtnm[2] @340 T
text kcvfhtnm[3] @341 A
text kcvfhtnm[4] @342 0
text kcvfhtnm[5] @343 2
text kcvfhtnm[6] @344
text kcvfhtnm[7] @345
text kcvfhtnm[8] @346
text kcvfhtnm[9] @347
text kcvfhtnm[10] @348
text kcvfhtnm[11] @349
text kcvfhtnm[12] @350
text kcvfhtnm[13] @351
text kcvfhtnm[14] @352
text kcvfhtnm[15] @353
text kcvfhtnm[16] @354
text kcvfhtnm[17] @355
text kcvfhtnm[18] @356
text kcvfhtnm[19] @357
text kcvfhtnm[20] @358
text kcvfhtnm[21] @359
text kcvfhtnm[22] @360
text kcvfhtnm[23] @361
text kcvfhtnm[24] @362
text kcvfhtnm[25] @363
text kcvfhtnm[26] @364
text kcvfhtnm[27] @365
text kcvfhtnm[28] @366
text kcvfhtnm[29] @367
ub4 kcvfhrfn @368 0x0000000b
struct kcvfhrfs, 8 bytes @372
ub4 kscnbas @372 0x00000000
ub2 kscnwrp @376 0x0000
ub4 kcvfhrft @380 0x00000000
struct kcvfhafs, 8 bytes @384
ub4 kscnbas @384 0x00000000
ub2 kscnwrp @388 0x0000
ub4 kcvfhbbc @392 0x00000000
ub4 kcvfhncb @396 0x00000000
ub4 kcvfhmcb @400 0x00000000
ub4 kcvfhlcb @404 0x00000000
ub4 kcvfhbcs @408 0x00000000
ub2 kcvfhofb @412 0x0000
ub2 kcvfhnfb @414 0x0000
ub4 kcvfhprc @416 0x2cadd4e7
struct kcvfhprs, 8 bytes @420
ub4 kscnbas @420 0x000a7f86
ub2 kscnwrp @424 0x0000
struct kcvfhprfs, 8 bytes @428
ub4 kscnbas @428 0x00000000
ub2 kscnwrp @432 0x0000
ub4 kcvfhtrt @444 0x00000000
BBED> set offset 484
OFFSET 484
BBED> p
pad
---
ub1 pad @484 0xc2
BBED> modify /x f788
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: data02.dbf (0)
Block: 2 Offsets: 484 to 995 Dba:0x00000000
------------------------------------------------------------------------
f7880b00 00000000 2f06ae2c 01000000 0b000000 1b000000 1000e880 02000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0d000d00 0d000100 00000000 00000000 00000000 0200c002 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<32 bytes per line>
BBED> set offset 486
OFFSET 486
BBED> p
pad
---
ub1 pad @486 0x00
BBED> modify /x 0x0a00
File: data02.dbf (0)
Block: 2 Offsets: 486 to 997 Dba:0x00000000
------------------------------------------------------------------------
0a000000 00002f06 ae2c0100 00000b00 00001b00 00001000 e8800200 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000d00
0d000d00 01000000 00000000 00000000 00000200 c0020000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<32 bytes per line>
BBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x000a88f7
ub2 kscnwrp @488 0x0000
ub4 kcvcptim @492 0x2cae062f
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x0000000b
ub4 kcrbabno @504 0x0000001b
ub2 kcrbabof @508 0x0010
ub1 kcvcpetb[0] @512 0x02
ub1 kcvcpetb[1] @513 0x00
ub1 kcvcpetb[2] @514 0x00
ub1 kcvcpetb[3] @515 0x00
ub1 kcvcpetb[4] @516 0x00
ub1 kcvcpetb[5] @517 0x00
ub1 kcvcpetb[6] @518 0x00
ub1 kcvcpetb[7] @519 0x00
BBED> sum
Check value for File 0, Block 2:
current = 0xb4a1, required = 0x3d95
BBED> sum apply
Check value for File 0, Block 2:
current = 0x3d95, required = 0x3d95
/* 如我们所期待地出现了ORA-00600[2608]内部错误 */
SQL> recover datafile 11;
ORA-00283: recovery session canceled due to errors
ORA-00600: internal error code, arguments: [2608], [2], [0], [690423], [0],
[721306], [], []
这里的690423也就是16进制的0x000a88f7,是我们之前所修改的checkpoint scn,
而721306等于0xb019a,为当前日志文件的Low scn:
LOG FILE #1:
(name #5) /flashcard/oradata/G10R2/onlinelog/o1_mf_1_6v34jnkn_.log
(name #6) /s01/flash_recovery_area/G10R2/onlinelog/o1_mf_1_6v34jnst_.log
Thread 1 redo log links: forward: 2 backward: 0
siz: 0x19000 seq: 0x0000000a hws: 0x2 bsz: 512 nab: 0x2 flg: 0x1 dup: 2
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.000b0193
Low scn: 0x0000.000b0196 04/27/2011 22:52:05
Next scn: 0x0000.000b019a 04/27/2011 22:52:10
LOG FILE #2:
(name #3) /flashcard/oradata/G10R2/onlinelog/o1_mf_2_6v34jokt_.log
(name #4) /s01/flash_recovery_area/G10R2/onlinelog/o1_mf_2_6v34jotq_.log
Thread 1 redo log links: forward: 3 backward: 1
siz: 0x19000 seq: 0x0000000b hws: 0x1 bsz: 512 nab: 0xffffffff flg: 0x8 dup: 2
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.000b0196
Low scn: 0x0000.000b019a 04/27/2011 22:52:10
Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
LOG FILE #3:
(name #1) /flashcard/oradata/G10R2/onlinelog/o1_mf_3_6v34jpmp_.log
(name #2) /s01/flash_recovery_area/G10R2/onlinelog/o1_mf_3_6v34jpyn_.log
Thread 1 redo log links: forward: 0 backward: 2
siz: 0x19000 seq: 0x00000009 hws: 0x2 bsz: 512 nab: 0x2 flg: 0x1 dup: 2
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.000b0190
Low scn: 0x0000.000b0193 04/27/2011 22:52:04
Next scn: 0x0000.000b0196 04/27/2011 22:52:05
记以录之!