联机日志文件都不存在的情况:
(1). sqlplus /nolog
(2). conn / as sysdba;
(3). startup;
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
(4). startup mount;
(5). 通过v$log视图确定哪些是当前联机日志和非当前联机日志
SQL> select * from v$log; (current为当前联机日志)
(6). 通过Clear方式恢复非当前联机日志group 2 和group 3
SQL> alter database clear logfile group 2; (如果是该日志组还没有归档:alter database clear unarchived logfile group 2;)
SQL> alter database clear logfile group 3; (如果是该日志组还没有归档:alter database clear unarchived logfile group 3;)
(7). 恢复当前联机日志 group 1,先演示确认一下通过clear的方式无法恢复当前联机日志
SQL> alter database clear logfile group 1; (报错)
(8). 设置隐含参数_allow_resetlogs_corruption为“TRUE”
SQL> create pfile from spfile;
SQL> shutdown immediate;
在生成的pfile(对应文件是D:\oracle\product\10.2.0\db_1\database\INITorcl.ORA)最后一行添加如下内容,保存退出
_allow_resetlogs_corruption=TRUE
使用pfile启动数据库到mount状态
SQL> startup mount pfile=D:\oracle\product\10.2.0\db_1\database\INITorcl.ORA;
(9). 利用until cancel进行恢复
SQL> recover database until cancel;
(10). resetlogs方式打开数据库
SQL> alter database open resetlogs;
这时在日志文件所在的目录中就可以看到被恢复出来的当前联机日志REDO01.LOG
(10). 恢复过程完成
后续任务一:进行全库的EXP备份
C:\>exp system/system file=exp_full_backup.dmf log=exp_full_backup.log full=y
后续任务二:取消隐含参数_all_resetlogs_corrupt
后续任务三:重建数据库
后续任务四:使用IMP将刚刚备份的文件导入到数据库中
后续任务五:检查并处理掉无效的对象
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21070542/viewspace-607548/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21070542/viewspace-607548/