●做法:
打开init.ora,添加一行文字:
_allow_resetlogs_corruption=true
然后再进行以下操作:
SVRMGR>shutdown abort;
SVRMGR>startup mount;
SVRMGR>recover database until cancel
此时数据库提示
SVRMGR> recover database until cancel;
ORA-00279: change 3684318 generated at 12/30/2003 10:55:34 needed for thread 1 ORA-00289: suggestion : D:\ORACLE\ORA81\RDBMS\ARC00001.001
ORA-00280: change 3684318 for thread 1 is in sequence #1
Specify log: {=suggested | filename | AUTO | CANCEL}
输入 cancel,这时出现这样的信息:
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'D:\ORACLE\ORADATA\ORACLE\SYSTEM01.DBF'
SVRMGR>alter database open noresetlogs;
提示:
Statement processed.
这时,数据库已经起来了。
●做法2(不得已)
介绍一个意外情况,如果上面的方法不成功,数据库还是不能open,采用recover,restore 都不成功,说明logfile可能已经损坏,数据库打开需要做一致性检查,所以不能正常打开。因为数据库未作过备份,为了尽可能地减少损失,采用打开数据库,然后立刻导出数据的方法。
oracle有一个不推荐的方法,可以使数据库在不进行一致性检查的方式下打开数据库。
做法:
1。为保险起见,将数据库的系统表空间,数据文件,控制文件均做一次备份:copy。
2。在初始化配置文件中(init.ora)加上:
_allow_resetlogs_corruption=true
_corrupted_rollback_segments=(将所有rollback_segments=(...)的内容加到这里)
将rollback_segments=(...)前加上#
3。startup mount
recover database until cancel;
cancel
alter database open resetlogs;
此时数据库已经可以打开了,请立刻将数据export出来,然后重新安装oracle,重新建立