ORA-00742 ORA-00312特殊恢复

ERROR:

ORA-00742: 日志读取在线程 1 序列 20 块 40649 中检测到写入丢失情况

ORA-00312: 联机日志 2 线程 1: '/oracle/oradata/SEM/redo02.log'

SQL> RECOVER DATABASE UNTIL CANCEL;                 //尝试recover之
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误 ORA-01152:
文件 1 没有从过旧的备份中还原 ORA-01110:
数据文件 1: '/oracle/oradata/SEM/system01.dbf'

SQL> alter database open resetlogs;                     
alter database open resetlogs
*
第 1 行出现错误:
ORA-01152: 文件 1 没有从过旧的备份中还原 ORA-01110:               //果真如上所述open时回出现这个错误
数据文件 1: '/oracle/oradata/SEM/system01.dbf'


alert.log中记录如下:

Errors in file /oracle/diag/rdbms/sem/SEM/trace/SEM_pr00_3546.trc:
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01152: 文件 1 没有从过旧的备份中还原
ORA-01110: 数据文件 1: '/oracle/oradata/SEM/system01.dbf'
ORA-1547 signalled during: ALTER DATABASE RECOVER  DATABASE UNTIL CANCEL  ...
Tue Sep 03 03:29:40 2013
Checker run found 15 new persistent data failures


查看scn的状态

SQL> select checkpoint_change# from v$database;            //控制文件的scn

CHECKPOINT_CHANGE#
------------------
           6505947

SQL> select checkpoint_change# from v$datafile;            //数据文件的scn

CHECKPOINT_CHANGE#
------------------
           6530705
           6530705
           6530705
           6530705
           6530705
           6530705
           6530705
           6530705
           6530705
           6530705
           6530705

CHECKPOINT_CHANGE#
------------------
           6530705
           6530705
           6530705
           6530705

已选择 15 行。

SQL> select checkpoint_change# from v$datafile_header;              //数据文件头的scn

CHECKPOINT_CHANGE#
------------------
           6530705
           6530705
           6530705
           6530705
           6530705
           6530705
           6530705
           6530705
           6530705
           6530705
           6530705

CHECKPOINT_CHANGE#
------------------
           6530705
           6530705
           6530705
           6530705

已选择 15 行。


很明显控制文件中的scn没赶上数据文件和数据头文件中的变化 然后尝试不玩全恢复

SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 6530705 (在 09/01/2013 02:59:56 生成) 对于线程 1 是必需的 ORA-00289:
建议: /oracle/archivelog/1_20_824696280.dbf
ORA-00280: 更改 6530705 (用于线程 1) 在序列 #20 中


指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。

SQL> alter database open resetlogs;

数据库已更改。

再查看控制文件中的scn的状态

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           6530709                                                           //控制文件中的scn号只差几个,这几个可能是我open之后scn自己增加的几个  也就是说此次恢复和数据文件中的一样了


至此数据库实例就成功起来了

###############################

迷途小运维原创

作者:hohn

转载请注明出处

你可能感兴趣的:(Oracle)