数据库启动出现ORA-00600[4000]错误
Fri Nov 4 06:50:38 2011
Errors
in
file
/u01/oracle/admin/XFF/udump/xff_ora_7046
.trc:
ORA-00600: internal error code, arguments: [4000], [5], [], [], [], [], [], []
Fri Nov 4 06:50:40 2011
Errors
in
file
/u01/oracle/admin/XFF/udump/xff_ora_7046
.trc:
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00600: internal error code, arguments: [4000], [5], [], [], [], [], [], []
Fri Nov 4 06:50:40 2011
Error 704 happened during db
open
, shutting down database
USER: terminating instance due to error 704
Instance terminated by USER, pid = 7046
ORA-1092 signalled during: ALTER DATABASE OPEN...
|
查看trace文件
*** 2011-11-04 06:50:38.942
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [4000], [5], [], [], [], [], [], []
Current SQL statement
for
this session:
select
ctime, mtime, stime from obj$ where obj
# = :1
Block header dump: 0x0040007a
Object
id
on Block? Y
seg
/obj
: 0x12 csc: 0x00.1020770d itc: 1 flg: - typ: 1 - DATA
fsl: 0 fnx: 0x0 ver: 0x01
Itl Xid Uba Flag Lck Scn
/Fsc
0x01 0x0005.029.0000029a 0x00802381.01f9.03 --U- 1 fsc 0x0000.1020770e
|
查询trace相关数据对应值
SQL>
select
DBMS_UTILITY.data_block_address_file (TO_NUMBER (
'0040007a'
,
'xxxxxxxx'
)) file_no,
2 DBMS_UTILITY.data_block_address_block (TO_NUMBER (
'0040007a'
,
'xxxxxxxx'
)) block_no
3
from
dual;
FILE_NO BLOCK_NO
---------- ----------
1 122
SQL>
select
to_number(
'1020770e'
,
'xxxxxxxxxxx'
) itl_commit
from
dual;
ITL_COMMIT
----------
270563086
SQL>
select
to_number(
'1020770d'
,
'xxxxxxxxxxxx'
) csc
from
dual;
CSC
----------
270563085
|
通过这里的分析,我们可以得出file 1 block 122的内容未提交,可能是导致错误ORA-00600[4000],尝试这手工提交该事务
BBED>
set
file
1 block 122
FILE
# 1
BLOCK
# 122
BBED> map
File:
/u01/oracle/oradata/XFF/system01
.dbf (1)
Block: 122 Dba:0x0040007a
------------------------------------------------------------
KTB Data Block (Table
/Cluster
)
struct kcbh, 20 bytes @0
struct ktbbh, 48 bytes @20
struct kdbh, 14 bytes @68
struct kdbt[1], 4 bytes @82
sb2 kdbr[108] @86
ub1 freespace[873] @302
ub1 rowdata[7013] @1175
ub4 tailchk @8188
BBED> p ktbbh
struct ktbbh, 48 bytes @20
ub1 ktbbhtyp @20 0x01 (KDDBTDATA)
union ktbbhsid, 4 bytes @24
ub4 ktbbhsg1 @24 0x00000012
ub4 ktbbhod1 @24 0x00000012
struct ktbbhcsc, 8 bytes @28
ub4 kscnbas @28 0x1020770d
ub2 kscnwrp @32 0x0000
sb2 ktbbhict @36 1
ub1 ktbbhflg @38 0x02 (NONE)
ub1 ktbbhfsl @39 0x00
ub4 ktbbhfnx @40 0x00000000
struct ktbbhitl[0], 24 bytes @44
struct ktbitxid, 8 bytes @44
ub2 kxidusn @44 0x0005
ub2 kxidslt @46 0x0029
ub4 kxidsqn @48 0x0000029a
struct ktbituba, 8 bytes @52
ub4 kubadba @52 0x00802381
ub2 kubaseq @56 0x01f9
ub1 kubarec @58 0x03
ub2 ktbitflg @60 0x2001 (KTBFUPB)
union _ktbitun, 2 bytes @62
sb2 _ktbitfsc @62 0
ub2 _ktbitwrp @62 0x0000
ub4 ktbitbas @64 0x1020770e
BBED>
set
count 16
COUNT 16
BBED> m
/x
0180 offset 60
File:
/u01/oracle/oradata/XFF/system01
.dbf (1)
Block: 122 Offsets: 60 to 75 Dba:0x0040007a
------------------------------------------------------------------------
01800000 0e772010 00016c00 ffffea00
<32 bytes per line>
BBED> p ktbbh
struct ktbbh, 48 bytes @20
ub1 ktbbhtyp @20 0x01 (KDDBTDATA)
union ktbbhsid, 4 bytes @24
ub4 ktbbhsg1 @24 0x00000012
ub4 ktbbhod1 @24 0x00000012
struct ktbbhcsc, 8 bytes @28
ub4 kscnbas @28 0x1020770d
ub2 kscnwrp @32 0x0000
sb2 ktbbhict @36 1
ub1 ktbbhflg @38 0x02 (NONE)
ub1 ktbbhfsl @39 0x00
ub4 ktbbhfnx @40 0x00000000
struct ktbbhitl[0], 24 bytes @44
struct ktbitxid, 8 bytes @44
ub2 kxidusn @44 0x0005
ub2 kxidslt @46 0x0029
ub4 kxidsqn @48 0x0000029a
struct ktbituba, 8 bytes @52
ub4 kubadba @52 0x00802381
ub2 kubaseq @56 0x01f9
ub1 kubarec @58 0x03
ub2 ktbitflg @60 0x8001 (KTBFCOM)
union _ktbitun, 2 bytes @62
sb2 _ktbitfsc @62 0
ub2 _ktbitwrp @62 0x0000
ub4 ktbitbas @64 0x1020770e
BBED>
sum
apply
Check value
for
File 1, Block 122:
current = 0x6902, required = 0x6902
|
尝试重启库
SQL> startup
ORACLE instance started.
Total System
Global
Area 318767104 bytes
Fixed
Size
1219160 bytes
Variable
Size
92276136 bytes
Database
Buffers 218103808 bytes
Redo Buffers 7168000 bytes
Database
mounted.
ORA-01092: ORACLE instance terminated. Disconnection forced
|
查看alert日志
Fri Nov 4 07:42:46 2011
Errors
in
file
/u01/oracle/admin/XFF/udump/xff_ora_7702
.trc:
ORA-00600: internal error code, arguments: [ktbdchk1: bad dscn], [], [], [], [], [], [], []
Fri Nov 4 07:42:46 2011
Errors
in
file
/u01/oracle/admin/XFF/udump/xff_ora_7702
.trc:
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00600: internal error code, arguments: [ktbdchk1: bad dscn], [], [], [], [], [], [], []
Fri Nov 4 07:42:46 2011
Error 704 happened during db
open
, shutting down database
USER: terminating instance due to error 704
Instance terminated by USER, pid = 7702
ORA-1092 signalled during: ALTER DATABASE OPEN...
|
分析trace文件
*** 2011-11-04 07:42:46.273
Recovery of Online Redo Log: Thread 1 Group 1 Seq 40 Reading mem 0
----- Recovery Hash Table Statistics ---------
Hash table buckets = 32768
Longest
hash
chain = 0
Average
hash
chain = 0
/0
= 0.0
Max compares per lookup = 0
Avg compares per lookup = 0
/0
= 0.0
----------------------------------------------
tkcrrsarc: (WARN) Failed to
find
ARCH
for
message (message:0x1)
tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x1)
[ktbdchk] -- readers_dsz -- bad dscn
scn: 0x0000.1020770escn: 0x0000.0021fa09
*** 2011-11-04 07:42:46.530
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [ktbdchk1: bad dscn], [], [], [], [], [], [], []
Current SQL statement
for
this session:
select
ctime, mtime, stime from obj$ where obj
# = :1
Block header dump: 0x0040007a
Object
id
on Block? Y
seg
/obj
: 0x12 csc: 0x00.1020770d itc: 1 flg: - typ: 1 - DATA
fsl: 0 fnx: 0x0 ver: 0x01
Itl Xid Uba Flag Lck Scn
/Fsc
0x01 0x0005.029.0000029a 0x00802381.01f9.03 C--- 0 scn 0x0000.1020770e
|
根据这个错误提示ktbdchk–>bad dscn,猜测ktbdchk是header scn中的ktbdchk,查找1020770e发现是itl comomit scn,通过bbed查看
BBED> p kcvfhckp.kcvcpscn
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x0021fa09
ub2 kscnwrp @488 0x0000
|
通过这里可以知道ORA-00600[ktbdchk1: bad dscn]是因为itl comomit scn远大于datafile header scn,从而oracle认为datafile header scn是错误的,从而提示ktbdchk1: bad dscn.尝试bbed修改itl comomit scn
BBED> p ktbbh
struct ktbbh, 48 bytes @20
ub1 ktbbhtyp @20 0x01 (KDDBTDATA)
union ktbbhsid, 4 bytes @24
ub4 ktbbhsg1 @24 0x00000012
ub4 ktbbhod1 @24 0x00000012
struct ktbbhcsc, 8 bytes @28
ub4 kscnbas @28 0x1020770d
ub2 kscnwrp @32 0x0000
sb2 ktbbhict @36 1
ub1 ktbbhflg @38 0x02 (NONE)
ub1 ktbbhfsl @39 0x00
ub4 ktbbhfnx @40 0x00000000
struct ktbbhitl[0], 24 bytes @44
struct ktbitxid, 8 bytes @44
ub2 kxidusn @44 0x0005
ub2 kxidslt @46 0x0029
ub4 kxidsqn @48 0x0000029a
struct ktbituba, 8 bytes @52
ub4 kubadba @52 0x00802381
ub2 kubaseq @56 0x01f9
ub1 kubarec @58 0x03
ub2 ktbitflg @60 0x8001 (KTBFCOM)
union _ktbitun, 2 bytes @62
sb2 _ktbitfsc @62 0
ub2 _ktbitwrp @62 0x0000
ub4 ktbitbas @64 0x1020770e
BBED> m
/x
09fa2100 offset 64
File:
/u01/oracle/oradata/XFF/system01
.dbf (1)
Block: 122 Offsets: 64 to 79 Dba:0x0040007a
------------------------------------------------------------------------
09fa2100 00016c00 ffffea00 53046903
<32 bytes per line>
BBED>
sum
apply
Check value
for
File 1, Block 122:
current = 0xf404, required = 0xf404
|
启动数据库
SQL> conn /
as
sysdba
Connected
to
an idle instance.
SQL> startup
ORACLE instance started.
Total System
Global
Area 318767104 bytes
Fixed
Size
1219160 bytes
Variable
Size
92276136 bytes
Database
Buffers 218103808 bytes
Redo Buffers 7168000 bytes
Database
mounted.
Database
opened.
|