今天看到有一个朋友因为Move了一个系统表DEPENDENCY$,在没有Rebuild索引的情况下,重起数据库,结果收到ORA-01502错误,数据库无法启动.
在这种情况下,最好的情况是拥有备份,能够从备份中恢复.如果没有备份就很麻烦了(本案例恰恰没有备份).
和D.C.B.A讨论这个问题的时候,开始想到了3个办法:
1.通过某种手段跳过索引检测
事实证明在9i中这很难;而且这是在Bootstrap$的检测过程中发生的.
2.通过BBED进行修复
这种方法应该可行,但是会极其复杂小心.
3.使用DUL或类DUL工具
最后这种方法是万不得已.
DCBA在跟进这个案例,参考:
http://www.anysql.net/blog/p/movesystem.php
但是我们应该记住,永远不要让你的数据库处于这样的境地,这真的很危险.
这一问题的根本原因在于,数据库启动过程中,会进行如下验证:
这一验证会导致如下执行计划:
这里的'INDEX UNIQUE SCAN OBJ#(36)"就导致了最后的错误:
可惜Oracle并不允许置所有索引于不顾,否则就有救了.
套用一句名言:幸运的数据库大致相同,不幸的数据库却各有各的不幸.
Thu Nov 17 01:55:30 2005
Errors in file /dcdb/admin/hidc/udump/hidc_ora_56602.trc:
ORA-00704: bootstrap process failure
ORA-00604: error occurred at recursive SQL level 1
ORA-01502: index 'SYS.I_DEPENDENCY1' or partition of such index is in unusable
在这种情况下,最好的情况是拥有备份,能够从备份中恢复.如果没有备份就很麻烦了(本案例恰恰没有备份).
和D.C.B.A讨论这个问题的时候,开始想到了3个办法:
1.通过某种手段跳过索引检测
事实证明在9i中这很难;而且这是在Bootstrap$的检测过程中发生的.
2.通过BBED进行修复
这种方法应该可行,但是会极其复杂小心.
3.使用DUL或类DUL工具
最后这种方法是万不得已.
DCBA在跟进这个案例,参考:
http://www.anysql.net/blog/p/movesystem.php
但是我们应该记住,永远不要让你的数据库处于这样的境地,这真的很危险.
这一问题的根本原因在于,数据库启动过程中,会进行如下验证:
|
这一验证会导致如下执行计划:
|
这里的'INDEX UNIQUE SCAN OBJ#(36)"就导致了最后的错误:
|
可惜Oracle并不允许置所有索引于不顾,否则就有救了.
套用一句名言:幸运的数据库大致相同,不幸的数据库却各有各的不幸.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




