使用未写入文档参数"_ALLOW_RESETLOGS_CORRUPTION"进行崩溃恢复经典

什么情况可能使用该参数
有些时侯可能你的库处于非归档的模式下,而你的联机重做日志又currupted,你的数据文件不能 完成完全的恢复。而这时当你试图打开数据库时,oracle提示你用resetlogs选项,当你使用该选项 时oracle又不允许你使用该选项,总之你想打开数据库,可就是打不开。

1、最好做一个物理的库的全备

2、使用sqlplus 启动库至mount
sqlplus /nolog
sql>connect internal
sql>startup mount
3、确保所有的数据文件都处于"END BACKUP"状态
sql>set pages 0 feedback off lines 132
sql>spool alter_df.sql
sql>SELECT 'alter database datafile '||file_name||' END BACKUP;' from v$datafile;
sql>spool off
sql>@alter_df.sql
4、试着打开数据库
sql>alter database open;
如数据库成功打开,余下的都不需要做了,到此为止
5、如果你在打开时被要求进行恢复,使用"UNTIL CANCEL"这种进行恢复,然后再发出ALTER DATABASE OPEN RESETLOGS这个命令
sql>recover database until cancel;
sql>alter database open resetlogs;
6、如果数据库仍不能打开,把库down掉
sql>shutdown immediate
7、在init

 1<sid>.ora中加入如下参数   
 2_allow_resetlogs_corruption=TRUE   
 38、执行如下语句   
 4sql&gt;connect internal   
 5sql&gt;startup mount   
 6sql&gt;@alter_df.sql   
 7sql&gt;alter database open   
 89、如在alter database open时仍旧报错,使用until cancel恢复   
 9sql&gt;recover database until cancel;   
10sql&gt;alter database open resetlogs;   
1110、经过"9",数据库一定被打开了,数据库被打开后,马上执行一个full export   
1211、down掉库,去掉_all_resetlogs_corrupt参数   
1312、重建库   
1413、import并完成恢复   
1514、建议执行一下ANALYZE TABLE ...VALIDATE STRUCTURE CASCADE;</sid>
Published At
Categories with 数据库类
Tagged with
comments powered by Disqus