我在"9i下Move系统表DEPENDENCY$导致索引失效的恢复"、"9i下Move系统表DEPENDENCY$导致索引失效的恢复(续)"和"9i下Move系统表DEPENDENCY$导致索引失效的恢复(续2)"这三篇文章里分别用了两种方法成功将上述库起起来了。但是,我们还留了一个遗憾,那就是由于昨天我还不能够绕开oracle对index cluster block的block check机制,使得我们最后不得不用到了隐含参数*._db_always_check_system_ts=FALSE后才把上述库起起来。
今天,我终于,终于猜出来了怎样绕开index cluster block的block check机制,这就使得用BBED来处理上述问题的手段已接近完美。
之前会报错:
[P550_04_LA:oracle@:/cadrasu01/app/oracle/product/
DBVERIFY: Release
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
DBVERIFY - Verification starting : FILE = /dras20/testdb/system01.dbf
Block Checking: DBA = 4194336, Block Type = KTB-managed data block
data header at 0x
kdbchk: key comref count wrong
keyslot=7
Page 32 failed with check code 6121
DBVERIFY - Verification complete
Total Pages Examined : 52480
Total Pages Processed (Data) : 36943
Total Pages Failing (Data) : 1
Total Pages Processed (Index): 4085
Total Pages Failing (Index): 0
Total Pages Processed (Other): 1750
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 9702
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 676215 (0.676215)
如果你尝试去修改上述block,可能会碰到下述错误,五花八门,不一而足:
DBVERIFY - Verification starting : FILE = /dras20/testdb/system01.dbf
Block Checking: DBA = 4194336, Block Type = KTB-managed data block
data header at 0x
kdbchk: bad row tab 3, slot 5
Page 32 failed with check code 6258
DBVERIFY - Verification starting : FILE = /dras20/testdb/system01.dbf
Block Checking: DBA = 4194336, Block Type = KTB-managed data block
data header at 0x
kdbchk: fsbo(282) wrong, (hsz 280)
Page 32 failed with check code 6129
DBVERIFY - Verification starting : FILE = /dras20/testdb/system01.dbf
Block Checking: DBA = 4194336, Block Type = KTB-managed data block
data header at 0x
kdbchk: row count in table index incorrect
Page 32 failed with check code 6125
DBVERIFY - Verification starting : FILE = /dras20/testdb/system01.dbf
Block Checking: DBA = 4194336, Block Type = KTB-managed data block
data header at 0x
kdbchk: table index offset incorrect
tab 4
Page 32 failed with check code 6124
DBVERIFY - Verification starting : FILE = /dras20/testdb/system01.dbf
Block Checking: DBA = 4194336, Block Type = KTB-managed data block
data header at 0x
kdbchk: non-existent key referenced
table=1 slot=0
Page 32 failed with check code 6140
DBVERIFY - Verification starting : FILE = /dras20/testdb/system01.dbf
Block Checking: DBA = 4194336, Block Type = KTB-managed data block
data header at 0x
kdbchk: key curref < comref
slot=7 curref=15 comref=17
Page 32 failed with check code 6119
我就是从上述最后一个报错中猜出来了应该怎么改了,其实说到底考验的还是你对index cluster block的熟悉程度。
好了,我们来看一下改完后的效果:
[P550_04_LA:oracle@:/cadrasu01/app/oracle/product/
DBVERIFY: Release
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
DBVERIFY - Verification starting : FILE = /dras20/testdb/system01.dbf
DBVERIFY - Verification complete
Total Pages Examined : 52480
Total Pages Processed (Data) : 36707
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 4431
Total Pages Failing (Index): 0
Total Pages Processed (Other): 1751
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 9591
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 698090 (0.698090)
现在去掉隐含参数_db_always_check_system_ts后我们一样可以把上述库打开了:
[P550_04_LA:oracle@:/dras20/testdb]#cat inittestdb.ora|grep _db_always_check_system_ts
[P550_04_LA:oracle@:/dras20/testdb]#sqlplus '/ as sysdba';
SQL*Plus: Release
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL_testdb>startup pfile=/dras20/testdb/inittestdb.ora
ORACLE instance started.
Total System Global Area 504858456 bytes
Fixed Size 743256 bytes
Variable Size 285212672 bytes
Database Buffers 218103808 bytes
Redo Buffers 798720 bytes
Database mounted.
Database opened.
Leave a comment