隐含参数 _allow_resetlogs_corruption 的作用
在数据库MOUNT状态下
alter system set "_allow_resetlogs_corruption"=true scope=spfile;
因为参数文件有改变,所以需要用
create pfile='/tmp/pfile27.ora' from spfile;
备份一下参数文件
使用情况:
当前日志损坏;
有活动事务,非正常关闭;
没有数据库备份;
_allow_resetlogs_corruption的作用:
Oracle会跳过某些一致性检查,从而使数据库可能跳过不一致状态,Open打开。
可以在某些特定的条件下,强制打开数据库。
如redo log损坏的情况下打开数据库,但这样数据库很可能出现不一致。
建议打开后马上导出所有应用数据,然后重建数据库。
看看对这个参数的解释:
SQL> select KSPPDESC from X$KSPPI where ksppinm='_allow_resetlogs_corruption';
_allow_resetlogs_corruption之后scn不就已经一致了么。
然后你就可以去掉这个参数,也可以打开数据库了。
没有人强迫你要重建数据库,只要你愿意冒一点风险
使用未写入文档参数_ALLOW_RESETLOGS_CORRUPTION进行崩溃恢复经典作者:硕博网 文章来源:中华硕博网 点击数: 更新时间:2008-5-3中华硕博网(http://www.china-b.com)全球500所高校指定报名中心--使用未写入文档参数_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.ora中加入如下参数
_allow_resetlogs_corruption=TRUE
8、执行如下语句
sql>connect internal
sql>startup mount
sql>@alter_df.sql
sql>alter database open
9、如在alter database open时仍旧报错,使用until cancel恢复
sql>recover database until cancel;
sql>alter database open resetlogs;
10、经过"9",数据库一定被打开了,数据库被打开后,马上执行一个full export
11、down掉库,去掉_all_resetlogs_corrupt参数
12、重建库
13、import并完成恢复
14、建议执行一下ANALYZE TABLE ...VALIDATE STRUCTURE CASCADE;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23577591/viewspace-691599/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23577591/viewspace-691599/