ORA-8102报错的修复方式

由于自己最近在模拟各种故障,通过特殊手段恢复之后发现数据库不能创建表,创建表提示ORA-08102。具体的处理过程如下:

--//数据库创建表提示ORA-8102错误
[oracle@QXY1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 26 02:48:03 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> create table x (id int);
create table x (id int)
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-08102: index key not found, obj# 39, file 1, block 62281 (2)


--//查询obj#=39的对象
select object_name,object_type from dba_objects where object_id=39;

OBJECT_NAME                    OBJECT_TYPE
------------------------------ --------------------------------------
I_OBJ4                         INDEX

SQL> 

--//参考MOS文章SRDC - Required Diagnostic Data Collection for ORA-08102 Using TFA Collector (Recommended) or Manual Steps (Doc ID 1949651.1)

--//查询ind$索引表里面有,obj$表里面没有
select /*+ index(t i_obj4) */ DATAOBJ#,type#,owner# from obj$  t  
minus
select /*+ full(t1) */ DATAOBJ#,type#,owner# from obj$  t1; 


SQL> select /*+ index(t i_obj4) */ DATAOBJ#,type#,owner# from obj$  t  
  2  minus
  3  select /*+ full(t1) */ DATAOBJ#,type#,owner# from obj$  t1; 

  DATAOBJ#      TYPE#     OWNER#
---------- ---------- ----------
     76842          2         30
     76848          2         87
     76852          0          0

SQL> 

--//查询obj$索引表里面有,ind$表里面没有
 select /*+ full(t1) */ DATAOBJ#,type#,owner# from obj$  t1
  minus
  select /*+ index(t i_obj4) */ DATAOBJ#,type#,owner# from obj$  t;
  

  DATAOBJ#      TYPE#     OWNER#
---------- ---------- ----------
     76839          2         30
     76842          0          0


SELECT DATAOBJ# FROM OBJ$ WHERE OBJ#=76842;

--//76842查询报ORA-00600的错误
SQL> SELECT DATAOBJ# FROM OBJ$ WHERE OBJ#=76842;
SELECT DATAOBJ# FROM OBJ$ WHERE OBJ#=76842
                     *
ERROR at line 1:
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []


SQL> 

--//76848没有记录存在
SELECT DATAOBJ# FROM OBJ$ WHERE OBJ#=76848

SQL> SELECT DATAOBJ# FROM OBJ$ WHERE OBJ#=76848;

no rows selected

SQL> 

--//76852
SELECT DATAOBJ# FROM OBJ$ WHERE OBJ#=76852

SQL> SELECT DATAOBJ# FROM OBJ$ WHERE OBJ#=76852;

no rows selected

SQL> 

--//76839
SELECT DATAOBJ# FROM OBJ$ WHERE OBJ#=76839

SQL> SELECT DATAOBJ# FROM OBJ$ WHERE OBJ#=76839;

  DATAOBJ#
----------
     76839

SQL> 

--//76842报ORA-00600的报错
SQL> SELECT DATAOBJ# FROM OBJ$ WHERE OBJ#=76842;
SELECT DATAOBJ# FROM OBJ$ WHERE OBJ#=76842
                     *
ERROR at line 1:
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []


SQL> 


--//通过上面的查询方式发现,两次查询都有返回obj#=76842, 但是两个的type、owner不一样
--//并且报错的obj#=76842.


select /*+ index(t i_obj4) */ rowid,DATAOBJ#,type#,owner# from obj$  t  
minus
select /*+ full(t1) */ rowid,DATAOBJ#,type#,owner# from obj$  t1; 

SQL> select /*+ index(t i_obj4) */ rowid,DATAOBJ#,type#,owner# from obj$  t  
  2  minus
  3  select /*+ full(t1) */ rowid,DATAOBJ#,type#,owner# from obj$  t1; 

ROWID                DATAOBJ#      TYPE#     OWNER#
------------------ ---------- ---------- ----------
AAAAASAABAAAADxAAb      76852          0          0
AAAAASAABAAAUIeAA4      76842          2         30
AAAAASAABAAAUIeAA5                    66          0
AAAAASAABAAAUIeAA6                    66          0
AAAAASAABAAAUIeAA7                     2          0
AAAAASAABAAAUIeAA8      76848          2         87
AAAAASAABAAAUIeAA9                     2          0

7 rows selected.

select /*+ full(t1) */ rowid,DATAOBJ#,type#,owner# from obj$  t1
   minus
select /*+ index(t i_obj4) */ rowid,DATAOBJ#,type#,owner# from obj$  t  
  ;

ROWID                DATAOBJ#      TYPE#     OWNER#
------------------ ---------- ---------- ----------
AAAAASAABAAAADxAAb      76842          0          0
AAAAASAABAAAUIeAA4      76839          2         30

SQL> 


select name,obj#,dataobj# from obj$ where rowid='AAAAASAABAAAADxAAb';

select name,obj#,dataobj# from obj$ where rowid='AAAAASAABAAAUIeAA4';


SQL> select name,obj#,dataobj# from obj$ where rowid='AAAAASAABAAAADxAAb';

NAME                                                               OBJ#   DATAOBJ#
------------------------------------------------------------ ---------- ----------
_NEXT_OBJECT                                                          1      76842

SQL> 
SQL> select name,obj#,dataobj# from obj$ where rowid='AAAAASAABAAAUIeAA4';

NAME                                                               OBJ#   DATAOBJ#
------------------------------------------------------------ ---------- ----------
AQ_MNTR_MSGS_BUFFQ                                                76839      76839

SQL> 

--//
AAAAASAABAAAUIeAA4

select dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) block#,
dbms_rowid.rowid_row_number(rowid) row#
from obj$ where rowid='AAAAASAABAAAADxAAb';

SQL> select dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) block#,
  2  dbms_rowid.rowid_row_number(rowid) row#
  3  from obj$ where rowid='AAAAASAABAAAUIeAA4';

     FILE#     BLOCK#       ROW#
---------- ---------- ----------
         1      82462         56
         
         

BBED> set dba 1,82462 
        DBA             0x0041421e (4276766 1,82462)

BBED> map 
 File: /u01/app/oradata/QXY1/system01.dbf (1)
 Block: 82462                                 Dba:0x0041421e
------------------------------------------------------------
 KTB Data Block (Table/Cluster)

 struct kcbh, 20 bytes                      @0       

 struct ktbbh, 72 bytes                     @20      

 struct kdbh, 14 bytes                      @92      

 struct kdbt[1], 4 bytes                    @106     

 sb2 kdbr[57]                               @110     

 ub1 freespace[1481]                        @224     

 ub1 rowdata[6483]                          @1705    

 ub4 tailchk                                @8188    


BBED> p *kdbr[56]
rowdata[0]
----------
ub1 rowdata[0]                              @1705     0x2c

BBED>  x /rnnncnnncc
rowdata[0]                                  @1705    
----------
flag@1705: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@1706: 0x02
cols@1707:   18

col    0[4] @1708: 76839 
col    1[4] @1713: 76839 
col    2[2] @1718: 30 
col   3[18] @1721: AQ_MNTR_MSGS_BUFFQ
col    4[2] @1740: 1 
col    5[0] @1743: *NULL*
col    6[2] @1744: 2 
col    7[7] @1747: xx...4.
col    8[7] @1755: xx...4.
col    9[7] @1763: xx...4.
col   10[2] @1771: ..
col   11[0] @1774: *NULL*
col   12[0] @1775: *NULL*
col   13[1] @1776: .
col   14[0] @1778: *NULL*
col   15[2] @1779: ..
col   16[2] @1782: ..
col   17[2] @1785: ..


BBED> 

 

--//查看创建表时产生的trace文件

DDE: Problem Key 'ORA 600 [kdsgrp1]' was flood controlled (0x2) (incident: 84576)
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []
oer 8102.2 - obj# 39, rdba: 0x0040f349(afn 1, blk# 62281)

*** 2020-03-26 03:19:22.119
kdk key 8102.2:
  ncol: 4, len: 16
  key: (16):  04 c3 08 45 2b 01 80 01 80 06 00 40 00 f1 00 1b
  mask: (4096):
 a1 02 7f 00 00 00 00 00 00 00 00 00 00 00 5e bc 62 61 7f 00 00 00 00 00 00
 61 7f 00 00 00 30 00 00 00 00 00 00 e0 5b bc 62 61 7f 00 00 18 04 00 00 00
 00 00 00 18 04 00 00 00 00 00 00 e0 5b bc 62 61 7f 00 00 18 04 00 00 00 00
 00 00 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0 31 fc e2 ff 7f 00
 00 f5 78 32 09 00 00 00 00 f0 30 fc e2 ff 7f 00 00 1b 43 33 09 00 00 00 00
 d8 3c 3b 09 00 00 00 00 ac bd 7e 04 00 00 00 00 a8 49 be 62 61 7f 00 00 31
 b3 1e 09 00 00 00 00 20 31 fc e2 ff 7f 00 00 5b 24 39 09 00 00 00 00 a8 e1
 3d 67 00 00 00 00 18 04 00 00 00 00 00 00 30 00 00 00 00 00 00 00 00 00 00
 00 61 7f 00 00 01 00 00 00 ff 7f 00 00 01 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 e8 03 00 00 00 00 00 00 28 7a bd 62 61 7f 00 00 a0 3f af 0b 00
 
 
 
 
 --//dump 1号文件的62281(索引块)
 

SQL> ALTER system dump datafile 1 block 62281;

System altered.

SQL> 

--//trace文件
col 1; len 2; (2):  c1 03
col 2; len 2; (2):  c1 1f
col 3; len 6; (6):  00 41 42 1e 00 36
row#295[1877] flag: ------, lock: 0, len=20
col 0; len 4; (4):  c3 08 45 27
col 1; len 2; (2):  c1 02
col 2; len 2; (2):  c1 1f
col 3; len 6; (6):  00 41 42 1e 00 37
row#296[1857] flag: ------, lock: 0, len=20
col 0; len 4; (4):  c3 08 45 2b              <======修改为 c3 08 45 28
col 1; len 2; (2):  c1 03
col 2; len 2; (2):  c1 1f
col 3; len 6; (6):  00 41 42 1e 00 38
row#297[1801] flag: ------, lock: 0, len=20
col 0; len 4; (4):  c3 08 45 31
col 1; len 2; (2):  c1 03
col 2; len 2; (2):  c1 58
col 3; len 6; (6):  00 41 42 1e 00 3c
row#298[1821] flag: ------, lock: 0, len=18
col 0; len 4; (4):  c3 08 45 35               <======修改 c3 08 45 2B
col 1; len 1; (1):  80
col 2; len 1; (1):  80
col 3; len 6; (6):  00 40 00 f1 00 1b


--//
select display_raw('c3084531','NUMBER') from dual;
c3084528=》76839
C308452B=》76842
c3084535=》76852
c3084531=> 76848
76852

SQL> select /*+ index(t i_obj4) */ rowid,DATAOBJ#,type#,owner# from obj$  t  
  2  minus
  3  select /*+ full(t1) */ rowid,DATAOBJ#,type#,owner# from obj$  t1; 

ROWID                DATAOBJ#      TYPE#     OWNER#
------------------ ---------- ---------- ----------
AAAAASAABAAAADxAAb      76852          0          0
AAAAASAABAAAUIeAA4      76842          2         30
AAAAASAABAAAUIeAA5                    66          0
AAAAASAABAAAUIeAA6                    66          0
AAAAASAABAAAUIeAA7                     2          0
AAAAASAABAAAUIeAA8      76848          2         87
AAAAASAABAAAUIeAA9                     2          0

7 rows selected.

select /*+ full(t1) */ rowid,DATAOBJ#,type#,owner# from obj$  t1
   minus
select /*+ index(t i_obj4) */ rowid,DATAOBJ#,type#,owner# from obj$  t  
  ;

ROWID                DATAOBJ#      TYPE#     OWNER#
------------------ ---------- ---------- ----------
AAAAASAABAAAADxAAb      76842          0          0
AAAAASAABAAAUIeAA4      76839          2         30

SQL> 


------------------ ---------- ---------- ----------
AAAAASAABAAAADxAAb      76852          0          0   <=======修改为76842
AAAAASAABAAAUIeAA4      76842          2         30   <=======修改为76839
AAAAASAABAAAUIeAA5                    66          0
AAAAASAABAAAUIeAA6                    66          0
AAAAASAABAAAUIeAA7                     2          0
AAAAASAABAAAUIeAA8      76848          2         87
AAAAASAABAAAUIeAA9                     2          0

--//bbed修改
set offset 116 + 1857

BBED> set offset 116
        OFFSET          116

BBED> set offset +1857
        OFFSET          1973

BBED> d
 File: /u01/app/oradata/QXY1/system01.dbf (1)
 Block: 62281            Offsets: 1973 to 2484           Dba:0x0040f349
------------------------------------------------------------------------
 000004c3 08452b02 c10302c1 1f060041 421e0038 000004c3 08452702 c10202c1 
 1f060041 421e0037 0000ff02 c1020180 0600402e 9f005000 00ff02c1 02018006 
 00402e9f 00480000 ff02c102 01800600 402e9f00 3e0000ff 02c10201 80060040 
 2e9f0038 0000ff02 c1020180 0600402e 9f003200 00ff02c1 02018006 00402e9f 
 002c0000 ff02c102 01800600 402e9f00 260000ff 02c10201 80060040 2e9f001e 
 0000ff02 c1020180 0600402e 9f001200 00ff02c1 02018006 00402e9e 004f0000 
 ff02c102 01800600 402e9e00 4d0000ff 02c10201 80060040 2e9e0035 010004c3 
 08452b01 80018006 004000f1 001b0000 04c30845 2602c103 02c11f06 0041421e 
 00360100 04c30845 26018001 80060040 00f1001b 000004c3 08452502 c10302c1 
 1f060041 421e0034 000004c3 08452402 c10202c1 1f060041 421e0031 000004c3 
 08452302 c10302c1 1f060041 421e0030 000004c3 08452202 c10202c1 1f060041 
 421e002f 000004c3 08452102 c10302c1 1f060041 421e0033 000004c3 08451c02 
 c1020180 06004142 1e003200 0004c308 451a02c1 03018006 00402989 00290000 
 04c30844 4902c102 02c15606 0041421e 000a0000 04c30844 4802c102 02c15606 
 0041421e 00090000 04c30844 4702c102 02c15606 0041421e 00080000 04c30844 
 4602c102 02c15606 0041421e 00070000 04c30844 4502c102 02c15606 0041421e 

 <32 bytes per line>

BBED> 

BBED> set offset +6
        OFFSET          1979

BBED> d
 File: /u01/app/oradata/QXY1/system01.dbf (1)
 Block: 62281            Offsets: 1979 to 2490           Dba:0x0040f349
------------------------------------------------------------------------
 2b02c103 02c11f06 0041421e 00380000 04c30845 2702c102 02c11f06 0041421e 
 00370000 ff02c102 01800600 402e9f00 500000ff 02c10201 80060040 2e9f0048 
 0000ff02 c1020180 0600402e 9f003e00 00ff02c1 02018006 00402e9f 00380000 
 ff02c102 01800600 402e9f00 320000ff 02c10201 80060040 2e9f002c 0000ff02 
 c1020180 0600402e 9f002600 00ff02c1 02018006 00402e9f 001e0000 ff02c102 
 01800600 402e9f00 120000ff 02c10201 80060040 2e9e004f 0000ff02 c1020180 
 0600402e 9e004d00 00ff02c1 02018006 00402e9e 00350100 04c30845 2b018001 
 80060040 00f1001b 000004c3 08452602 c10302c1 1f060041 421e0036 010004c3 
 08452601 80018006 004000f1 001b0000 04c30845 2502c103 02c11f06 0041421e 
 00340000 04c30845 2402c102 02c11f06 0041421e 00310000 04c30845 2302c103 
 02c11f06 0041421e 00300000 04c30845 2202c102 02c11f06 0041421e 002f0000 
 04c30845 2102c103 02c11f06 0041421e 00330000 04c30845 1c02c102 01800600 
 41421e00 32000004 c308451a 02c10301 80060040 29890029 000004c3 08444902 
 c10202c1 56060041 421e000a 000004c3 08444802 c10202c1 56060041 421e0009 
 000004c3 08444702 c10202c1 56060041 421e0008 000004c3 08444602 c10202c1 
 56060041 421e0007 000004c3 08444502 c10202c1 56060041 421e0006 000004c3 

 <32 bytes per line>

BBED> m /x 28
 File: /u01/app/oradata/QXY1/system01.dbf (1)
 Block: 62281            Offsets: 1979 to 2490           Dba:0x0040f349
------------------------------------------------------------------------
 2802c103 02c11f06 0041421e 00380000 04c30845 2702c102 02c11f06 0041421e 
 00370000 ff02c102 01800600 402e9f00 500000ff 02c10201 80060040 2e9f0048 
 0000ff02 c1020180 0600402e 9f003e00 00ff02c1 02018006 00402e9f 00380000 
 ff02c102 01800600 402e9f00 320000ff 02c10201 80060040 2e9f002c 0000ff02 
 c1020180 0600402e 9f002600 00ff02c1 02018006 00402e9f 001e0000 ff02c102 
 01800600 402e9f00 120000ff 02c10201 80060040 2e9e004f 0000ff02 c1020180 
 0600402e 9e004d00 00ff02c1 02018006 00402e9e 00350100 04c30845 2b018001 
 80060040 00f1001b 000004c3 08452602 c10302c1 1f060041 421e0036 010004c3 
 08452601 80018006 004000f1 001b0000 04c30845 2502c103 02c11f06 0041421e 
 00340000 04c30845 2402c102 02c11f06 0041421e 00310000 04c30845 2302c103 
 02c11f06 0041421e 00300000 04c30845 2202c102 02c11f06 0041421e 002f0000 
 04c30845 2102c103 02c11f06 0041421e 00330000 04c30845 1c02c102 01800600 
 41421e00 32000004 c308451a 02c10301 80060040 29890029 000004c3 08444902 
 c10202c1 56060041 421e000a 000004c3 08444802 c10202c1 56060041 421e0009 
 000004c3 08444702 c10202c1 56060041 421e0008 000004c3 08444602 c10202c1 
 56060041 421e0007 000004c3 08444502 c10202c1 56060041 421e0006 000004c3 

 <32 bytes per line>

BBED> set offset 116
        OFFSET          116

BBED> set offset +1821
        OFFSET          1937

BBED> set offset + 6
BBED-00207: invalid offset specifier (+)


BBED> set offset +6
        OFFSET          1943

BBED> d
 File: /u01/app/oradata/QXY1/system01.dbf (1)
 Block: 62281            Offsets: 1943 to 2454           Dba:0x0040f349
------------------------------------------------------------------------
 35018001 80060040 00f1001b 010004c3 08453001 80018006 004000f1 001b0000 
 04c30845 2802c103 02c11f06 0041421e 00380000 04c30845 2702c102 02c11f06 
 0041421e 00370000 ff02c102 01800600 402e9f00 500000ff 02c10201 80060040 
 2e9f0048 0000ff02 c1020180 0600402e 9f003e00 00ff02c1 02018006 00402e9f 
 00380000 ff02c102 01800600 402e9f00 320000ff 02c10201 80060040 2e9f002c 
 0000ff02 c1020180 0600402e 9f002600 00ff02c1 02018006 00402e9f 001e0000 
 ff02c102 01800600 402e9f00 120000ff 02c10201 80060040 2e9e004f 0000ff02 
 c1020180 0600402e 9e004d00 00ff02c1 02018006 00402e9e 00350100 04c30845 
 2b018001 80060040 00f1001b 000004c3 08452602 c10302c1 1f060041 421e0036 
 010004c3 08452601 80018006 004000f1 001b0000 04c30845 2502c103 02c11f06 
 0041421e 00340000 04c30845 2402c102 02c11f06 0041421e 00310000 04c30845 
 2302c103 02c11f06 0041421e 00300000 04c30845 2202c102 02c11f06 0041421e 
 002f0000 04c30845 2102c103 02c11f06 0041421e 00330000 04c30845 1c02c102 
 01800600 41421e00 32000004 c308451a 02c10301 80060040 29890029 000004c3 
 08444902 c10202c1 56060041 421e000a 000004c3 08444802 c10202c1 56060041 
 421e0009 000004c3 08444702 c10202c1 56060041 421e0008 000004c3 08444602 

 <32 bytes per line>

BBED> m /x 2b
 File: /u01/app/oradata/QXY1/system01.dbf (1)
 Block: 62281            Offsets: 1943 to 2454           Dba:0x0040f349
------------------------------------------------------------------------
 2b018001 80060040 00f1001b 010004c3 08453001 80018006 004000f1 001b0000 
 04c30845 2802c103 02c11f06 0041421e 00380000 04c30845 2702c102 02c11f06 
 0041421e 00370000 ff02c102 01800600 402e9f00 500000ff 02c10201 80060040 
 2e9f0048 0000ff02 c1020180 0600402e 9f003e00 00ff02c1 02018006 00402e9f 
 00380000 ff02c102 01800600 402e9f00 320000ff 02c10201 80060040 2e9f002c 
 0000ff02 c1020180 0600402e 9f002600 00ff02c1 02018006 00402e9f 001e0000 
 ff02c102 01800600 402e9f00 120000ff 02c10201 80060040 2e9e004f 0000ff02 
 c1020180 0600402e 9e004d00 00ff02c1 02018006 00402e9e 00350100 04c30845 
 2b018001 80060040 00f1001b 000004c3 08452602 c10302c1 1f060041 421e0036 
 010004c3 08452601 80018006 004000f1 001b0000 04c30845 2502c103 02c11f06 
 0041421e 00340000 04c30845 2402c102 02c11f06 0041421e 00310000 04c30845 
 2302c103 02c11f06 0041421e 00300000 04c30845 2202c102 02c11f06 0041421e 
 002f0000 04c30845 2102c103 02c11f06 0041421e 00330000 04c30845 1c02c102 
 01800600 41421e00 32000004 c308451a 02c10301 80060040 29890029 000004c3 
 08444902 c10202c1 56060041 421e000a 000004c3 08444802 c10202c1 56060041 
 421e0009 000004c3 08444702 c10202c1 56060041 421e0008 000004c3 08444602 

 <32 bytes per line>

BBED> sum apply
Check value for File 1, Block 62281:
current = 0x3f2b, required = 0x3f2b

BBED> verify 
DBVERIFY - Verification starting
FILE = /u01/app/oradata/QXY1/system01.dbf
BLOCK = 62281

Block Checking: DBA = 4256585, Block Type = KTB-managed data block
**** row 298: key out of order
---- end index block validation
Block 62281 failed with check code 6401

DBVERIFY - Verification complete

Total Blocks Examined         : 1
Total Blocks Processed (Data) : 0
Total Blocks Failing   (Data) : 0
Total Blocks Processed (Index): 1
Total Blocks Failing   (Index): 1
Total Blocks Empty            : 0
Total Blocks Marked Corrupt   : 0
Total Blocks Influx           : 0
Message 531 not found;  product=RDBMS; facility=BBED


SQL> select /*+ index(t i_obj4) */ rowid,DATAOBJ#,type#,owner# from obj$  t  
  2  minus
  3  select /*+ full(t1) */ rowid,DATAOBJ#,type#,owner# from obj$  t1; 

ROWID                DATAOBJ#      TYPE#     OWNER#
------------------ ---------- ---------- ----------
AAAAASAABAAAUIeAA5                    66          0
AAAAASAABAAAUIeAA6                    66          0
AAAAASAABAAAUIeAA7                     2          0
AAAAASAABAAAUIeAA8      76848          2         87
AAAAASAABAAAUIeAA9                     2          0

SQL> select /*+ full(t1) */ rowid,DATAOBJ#,type#,owner# from obj$  t1
  2     minus
  3  select /*+ index(t i_obj4) */ rowid,DATAOBJ#,type#,owner# from obj$  t  
  4    ;

no rows selected

SQL> 

--//
SQL> 
SQL> create table x(id int);
create table x(id int)
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [kdBlkCheckError], [1], [62281], [6401], [], [], [], [], [], [], [], []

--//出现6401的主要原因就是索引本身是排序的,经过bbed修改之后变成了无序的,如下;
--//trace文件
col 1; len 2; (2):  c1 03
col 2; len 2; (2):  c1 1f
col 3; len 6; (6):  00 41 42 1e 00 36
row#295[1877] flag: ------, lock: 0, len=20
col 0; len 4; (4):  c3 08 45 27
col 1; len 2; (2):  c1 02
col 2; len 2; (2):  c1 1f
col 3; len 6; (6):  00 41 42 1e 00 37
row#296[1857] flag: ------, lock: 0, len=20
col 0; len 4; (4):  c3 08 45 2b              <======修改为 c3 08 45 28
col 1; len 2; (2):  c1 03
col 2; len 2; (2):  c1 1f
col 3; len 6; (6):  00 41 42 1e 00 38
row#297[1801] flag: ------, lock: 0, len=20
col 0; len 4; (4):  c3 08 45 31                 <=======31大于下面的2b,所以会报row 298: key out of order
col 1; len 2; (2):  c1 03
col 2; len 2; (2):  c1 58
col 3; len 6; (6):  00 41 42 1e 00 3c
row#298[1821] flag: ------, lock: 0, len=18
col 0; len 4; (4):  c3 08 45 35               <======修改 c3 08 45 2B
col 1; len 1; (1):  80
col 2; len 1; (1):  80
col 3; len 6; (6):  00 40 00 f1 00 1b

--// c3 08 45 31 转换10进制
SQL>   select display_raw('c3084531','NUMBER') from dual;

DISPLAY_RAW('C3084531','NUMBER')
--------------------------------------------------------------------------------
76848


SQL> select object_id, object_name from dba_objects where object_id = 76848;

no rows selected


--//所有把c3 08 45 31 中的31改为 大于28小于 2b,那么这里就先改为一个 29

--//
set dba 1,62281
set offset 116 + 1801 + 6

BBED> set offset 116
        OFFSET          116

BBED> set offset +1801
        OFFSET          1917

BBED> set offset +6
        OFFSET          1923

BBED> d
 File: /u01/app/oradata/QXY1/system01.dbf (1)
 Block: 62281            Offsets: 1923 to 2434           Dba:0x0040f349
------------------------------------------------------------------------
 3102c103 02c15806 0041421e 003c0000 04c30845 2b018001 80060040 00f1001b 
 010004c3 08453001 80018006 004000f1 001b0000 04c30845 2802c103 02c11f06 
 0041421e 00380000 04c30845 2702c102 02c11f06 0041421e 00370000 ff02c102 
 01800600 402e9f00 500000ff 02c10201 80060040 2e9f0048 0000ff02 c1020180 
 0600402e 9f003e00 00ff02c1 02018006 00402e9f 00380000 ff02c102 01800600 
 402e9f00 320000ff 02c10201 80060040 2e9f002c 0000ff02 c1020180 0600402e 
 9f002600 00ff02c1 02018006 00402e9f 001e0000 ff02c102 01800600 402e9f00 
 120000ff 02c10201 80060040 2e9e004f 0000ff02 c1020180 0600402e 9e004d00 
 00ff02c1 02018006 00402e9e 00350100 04c30845 2b018001 80060040 00f1001b 
 000004c3 08452602 c10302c1 1f060041 421e0036 010004c3 08452601 80018006 
 004000f1 001b0000 04c30845 2502c103 02c11f06 0041421e 00340000 04c30845 
 2402c102 02c11f06 0041421e 00310000 04c30845 2302c103 02c11f06 0041421e 
 00300000 04c30845 2202c102 02c11f06 0041421e 002f0000 04c30845 2102c103 
 02c11f06 0041421e 00330000 04c30845 1c02c102 01800600 41421e00 32000004 
 c308451a 02c10301 80060040 29890029 000004c3 08444902 c10202c1 56060041 
 421e000a 000004c3 08444802 c10202c1 56060041 421e0009 000004c3 08444702 

 <32 bytes per line>

BBED> m /x 29
 File: /u01/app/oradata/QXY1/system01.dbf (1)
 Block: 62281            Offsets: 1923 to 2434           Dba:0x0040f349
------------------------------------------------------------------------
 2902c103 02c15806 0041421e 003c0000 04c30845 2b018001 80060040 00f1001b 
 010004c3 08453001 80018006 004000f1 001b0000 04c30845 2802c103 02c11f06 
 0041421e 00380000 04c30845 2702c102 02c11f06 0041421e 00370000 ff02c102 
 01800600 402e9f00 500000ff 02c10201 80060040 2e9f0048 0000ff02 c1020180 
 0600402e 9f003e00 00ff02c1 02018006 00402e9f 00380000 ff02c102 01800600 
 402e9f00 320000ff 02c10201 80060040 2e9f002c 0000ff02 c1020180 0600402e 
 9f002600 00ff02c1 02018006 00402e9f 001e0000 ff02c102 01800600 402e9f00 
 120000ff 02c10201 80060040 2e9e004f 0000ff02 c1020180 0600402e 9e004d00 
 00ff02c1 02018006 00402e9e 00350100 04c30845 2b018001 80060040 00f1001b 
 000004c3 08452602 c10302c1 1f060041 421e0036 010004c3 08452601 80018006 
 004000f1 001b0000 04c30845 2502c103 02c11f06 0041421e 00340000 04c30845 
 2402c102 02c11f06 0041421e 00310000 04c30845 2302c103 02c11f06 0041421e 
 00300000 04c30845 2202c102 02c11f06 0041421e 002f0000 04c30845 2102c103 
 02c11f06 0041421e 00330000 04c30845 1c02c102 01800600 41421e00 32000004 
 c308451a 02c10301 80060040 29890029 000004c3 08444902 c10202c1 56060041 
 421e000a 000004c3 08444802 c10202c1 56060041 421e0009 000004c3 08444702 

 <32 bytes per line>

BBED> sum apply
Check value for File 1, Block 62281:
current = 0x272b, required = 0x272b

BBED> verrify 
BBED-00200: invalid keyword (verrify)


BBED> verify 
DBVERIFY - Verification starting
FILE = /u01/app/oradata/QXY1/system01.dbf
BLOCK = 62281


DBVERIFY - Verification complete

Total Blocks Examined         : 1
Total Blocks Processed (Data) : 0
Total Blocks Failing   (Data) : 0
Total Blocks Processed (Index): 1
Total Blocks Failing   (Index): 0
Total Blocks Empty            : 0
Total Blocks Marked Corrupt   : 0
Total Blocks Influx           : 0
Message 531 not found;  product=RDBMS; facility=BBED


BBED> 


--//索引报错已经没有了
--//再次创建表测试下
SQL> create table x(id int);

Table created.

SQL> insert into x values (10);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from x;

        ID
----------
        10

SQL> 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值