通过bbed解决ORA-00600[4000]案例

数据库启动出现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
   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.
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值