朋友的一个问题:9i的库open之后大量ora-00600错误(二)

2014-11-24 16:16:09 · 作者: · 浏览: 9
data 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* select owner,object_name,object_type from dba_objects where object_id=36 SQL> / OWNER OBJECT_NAME OBJECT_TYPE ------------------------------ ------------------------- ------------------ SYS I_OBJ1 INDEX SQL>

可以看到,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 ----- [1] Error during leaf key undo operation: 3 count=3 KTB Redo op: 0x04 ver: 0x01 op: L itl: xid: 0x000a.02b.00021f77 uba: 0x008000c9.1036.4d flg: C--- lkc: 0 scn: 0x0000.0a2c96d4 Dump kdilk : itl=2, kdxlkflg=0x1 sdc=77869776 indexid=0x4000d9 block=0x0040cf0f purge leaf row (6): 05 c4 02 0d 15 16 dump block being looked at now Block header dump: 0x0040cf0f Object id on Block Y seg/obj: 0x24 csc: 0x00.a2ca278 itc: 3 flg: O typ: 2 - INDEX fsl: 0 fnx: 0x40cf10 ver: 0x01 Itl Xid Uba Flag Lck Scn/Fsc 0x01 0x000a.00c.0001fe24 0x00800272.0eee.01 CB-- 0 scn 0x0000.098b9ed9 0x02 0x000a.00d.00021f8b 0x008000ce.1036.37 C--- 0 scn 0x0000.0a2c9bfa 0x03 0x0004.01a.00021f16 0x00800964.104c.3c C--- 0 scn 0x0000.0a2c9c22 Leaf block dump =============== header address 1804271732=0x6b8b0074 kdxcolev 0 KDXCOLEV Flags = - - - kdxcolok 0 kdxcoopc 0x80: opcode=0: iot flags=--- is converted=Y kdxconco 1 kdxcosdc 0 kdxconro 223 kdxcofbo 482=0x1e2 kdxcofeo 3017=0xbc9 kdxcoavs 4411 kdxlespl 0 kdxlende 0 kdxlenxt 0=0x0 kdxleprv 4247310=0x40cf0e kdxledsz 6 kdxlebksz 8012

根据这里的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 ------------------------------------------------------------