在对NOARCHIVE 的数据库做恢复时,需要还原controlfile和datafile,如果仅仅是还原datafile,在打开数据库时,会提示出错:
RMAN> alter database open;
RMAN-00571: ====================================
RMAN-00569: ======== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: =====================================================
RMAN-03002: failure of alter db command at 03/13/2008 10:40:29
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/backup1/data/test/oradata/system01.dbf'
这是因为在OPEN数据库时,ORACLE会用controlfile的文件头记录的SCN和datafile的SCN去做对比,如果发现不一致,那要用日志来做恢复,没有归档日志,那就无从恢复可以。
如果什么方法都尝试过了,还是无法正常启动ORACLE,但又想找回现在数据库的数据,那该如何处理。
启用隐藏参数_allow_resetlogs_corruption 来做强制启动:
1.修改init.ora 参数文件:
加上:
_allow_resetlogs_corruption='TURE'
2. 用pfile 来启动oracle数据库:
SQL> startup mount pfile=$ORACLE_HOME/dbs/inittest.ora
ORACLE instance started.
Total System Global Area 757040840 bytes
Fixed Size 730824 bytes
Variable Size 352321536 bytes
Database Buffers 402653184 bytes
Redo Buffers 1335296 bytes
Database mounted.
SQL> alter database open resetlogs;
Database altered.
至此ORACLE数据库处于open状态,但是该数据库处于非常疯狂的状态。
Open后,系统的LOGFILE的SCN为重置为datafile的SCN号。
在做不完整恢复时的log信息:
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------------
1 1 31 10485760 1 NO INACTIVE 70812 13-MAR-08
2 1 32 10485760 1 NO CURRENT 70814 13-MAR-08
3 1 30 10485760 1 NO INACTIVE 70809 13-MAR-08
强制启动后的log信息,注意当前的FIRST_CHANGE#变小了,而且非current的LOG变为0.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------------
1 1 0 10485760 1 YES UNUSED 0
2 1 1 10485760 1 NO CURRENT 70681 13-MAR-08
3 1 0 10485760 1 YES UNUSED 0
这样一种状态的数据库处于疯狂中,因为某些文件中含有比当前 SCN 号还要大的数据块,结果会导致系统报大量 ORA-00600 错误。唯一可以做的是,整个数据库导出,重建数据库来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/40239/viewspace-206228/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/40239/viewspace-206228/