I_OBJ1、I_OBJ2、I_OBJ3、I_OBJ4、I_OBJ5这几个都是OBJ$基表的索引,如果损坏会非常麻烦,因为ORACLE 对这些对象的DDL做了严格限制,你没有办法简单修复他们。 如下面的例子: *** 2012-01-31 05:59:24.837Doing block recovery for file 25 block 2256706Bl
I_OBJ1、I_OBJ2、I_OBJ3、I_OBJ4、I_OBJ5这几个都是OBJ$基表的索引,如果损坏会非常麻烦,因为ORACLE 对这些对象的DDL做了严格限制,你没有办法简单修复他们。
如下面的例子:
*** 2012-01-31 05:59:24.837 Doing block recovery for file 25 block 2256706 Block header before block recovery: buffer tsn: 0 rdba: 0x06626f42 (25/2256706) scn: 0x08b7.b1dff478 seq: 0x01 flg: 0x04 tail: 0xf4780601 frmt: 0x02 chkval: 0x8da3 type: 0x06=trans data Doing block recovery for file 25 block 2256706 Block header before block recovery: buffer tsn: 0 rdba: 0x06626f42 (25/2256706) -------------------- It looks like PMON is trying to recover a block, and is unable to do so. select * from dba_extents where 2256706 between block_id and block_id + blocks SQL> i 2 and file_id = 25; SYS I_OBJ5 INDEX SYSTEM 70 25 2256640 1048576 128 25
以上确认了25号文件2256706出现了问题,对应对象为SYS的索引i_obj5 ,但是由于这个是字典基表OBJ$上的索引,所以无法直接重建的:
No ddl is allowed for i_obj5 as it is needed for warm start: SQL> drop index i_obj5; drop index i_obj5 * ERROR at line 1: ORA-00701: object necessary for warmstarting database cannot be altered alter system set events '10293 trace name context forever, level 1'; and also get 3 PMON errorstack at level 5133 in 1 min intervals. dbv userid=sys/pass file= blocksize= start=2256706 end=2256706
以上可以看到对索引做任何操作都会报ORA-701错误,这里我们需要特殊的手段才能真正意义上修复I_OBJ1、I_OBJ2、I_OBJ3、I_OBJ4、I_OBJ5等SYS索引。
Related posts:
原文地址:【Oracle数据库恢复】I_OBJ1、I_OBJ2、I_OBJ3、I_OBJ4、I_OBJ5等SY, 感谢原作者分享。