这个错误由于在异常终止online rebuild的时候,还没来得及清理相应的临时段和标志位,系统认为online rebuild操作还在进行造成的。
根据文章 Session Was Killed During The Rebuild Of Index ORA-08104 (文档 ID 375856.1)说明
1.等smon清理
2.在10g之后用dbms_repair.online_index_clean手工清理这些信息,在Oracle 9i下,需要打Bug 3805539 后才可以使用该工具
DECLARE RetVal BOOLEAN; OBJECT_ID BINARY_INTEGER; WAIT_FOR_LOCK BINARY_INTEGER; BEGIN OBJECT_ID := 53367; WAIT_FOR_LOCK := NULL; RetVal := SYS.DBMS_REPAIR.ONLINE_INDEX_CLEAN (); COMMIT; END; /
3.修改字典数据
(1)先查看ind$ flags 标志,如果不正确,就减去512.
sql>update ind$ set flags=flags-512 where obj#=<object id>;
(2)drop journal table,这个步骤可能会报资源忙,因为有大量的日志正在插入,可以反复重试一下。
sql>drop table <owner>.sys_journal_<object_id>;
注意:
这个步骤不能反,如果先删除sys_journal_<object_id>临时表,然后再修改index的flags状态,则会报出ora-600 [4610]号错误,即数据字典不一致的错误。
原创文章,转载请注明: 转载自ORADBCA
本文链接地址: ORA-08104: this index object ##### is being online built or rebuilt