Hex dump of corrupt header 3 = CHKVAL 。。。。。 6BF8DFF0 00000000 00000000 00000000 991D0601 [................] Block Checking: DBA = 4246024, Block Type = KTB-managed data block **** actual rows locked by itl 2 = 1 != # in trans. header = 0 ---- end index block validation rechecking block failed with error code 6401 Disk Block image: buffer tsn: 0 rdba: 0x0040ca08 (1/51720) scn: 0x0000.0a2c991d seq: 0x01 flg: 0x06 tail: 0x991d0601 frmt: 0x02 chkval: 0x221e type: 0x06=trans data Block header dump: 0x0040ca08 Object id on Block Y seg/obj: 0x3 csc: 0x00.a2c991b itc: 3 flg: O typ: 2 - INDEX fsl: 0 fnx: 0x0 ver: 0x01 Itl Xid Uba Flag Lck Scn/Fsc 0x01 0x0002.002.00020b74 0x0080080c.0f56.01 CB-- 0 scn 0x0000.09cdb7c4 0x02 0x0009.007.00021f49 0x00800093.10c7.21 --U- 1 fsc 0x0000.0a2c991d 0x03 0x0009.023.00021f3d 0x00800093.10c7.1f --U- 1 fsc 0x0012.0a2c991c Leaf block dump =============== header address 104080500=0x6342474 kdxcolev 0 KDXCOLEV Flags = - - - kdxcolok 0 kdxcoopc 0x80: opcode=0: iot flags=--- is converted=Y kdxconco 1 kdxcosdc 0 kdxconro 160 kdxcofbo 356=0x164 kdxcofeo 3406=0xd4e kdxcoavs 5096 kdxlespl 0 kdxlende 1 kdxlenxt 0=0x0 kdxleprv 4246023=0x40ca07 kdxledsz 8 kdxlebksz 8012
从上面的错误可以看出,实际上这个Index block中有2个需要操作的ITL,其LCK都为1. 而Oracle认为这个block
这里需要操作的ITL应该只有1个。 这应该就是掉电导致没写入更改的原因。
换句话,要处理这个坏块,我们只需要将第3个ITL的信息改掉就行了。 通过bbed可以很容易的处理,修改状态,LCK等信息即可。
下面我继续看第2个ora-00600 [6006]错误。 我以前讲过多次,对于Oracle ora-00600错误,后面第一个错误号的范围
是4000~8000,其都跟Oracle事务有关系。 这里也不例外。 从这里的错误来看,Oracle smon进程在恢复事务(10, 38) on object 36
时出现异常,进而抛出该错误。
| 1 2 3 4 5 6 7 8 | 1* |
可以看到,9i中,object id=36 也是一个Index。 从这里的alert log来看,无法得到导致ora-00600 6006错误是什么block导致。
我们这里搜索smon trace即可,怎么搜索呢,很简单,搜索 seg/obj: 0×24即可,我们可以搜到如下内容:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | ----- end of leaf block dump ----- |
根据这里的uba信息,我们还能搜索到回滚段的信息,如下;
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | index state cflags wrap# uel scn dba parent-xid nub stmt_num |