一、概念
redo log file分为online redo log 和archived redo log file
online redo log就是当前正在使用的日志文件
archived redo log file就是已经归档了的日志文件
二、查看日志:
SQL>select * from v$logfile;
三、问题现象:
数据库startup,出现如下报错:
SQL> startup
ORACLE instance started.
Total System Global Area 5049942016 bytes
Fixed Size 8631096 bytes
Variable Size 1543507144 bytes
Database Buffers 3489660928 bytes
Redo Buffers 8142848 bytes
Database mounted.
ORA-00742: Log read detects lost write in thread 1 sequence 17 block 73667
ORA-00312: online log 2 thread 1:
'/data/u01/app/oracle/fast_recovery_area/orcl/ORCL/onlinelog/o1_mf_2_h6v7ky8f_.log'
ORA-00312: online log 2 thread 1:
'/data/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_2_h6v7kwv8_.log'
三、分析
经过查看报错,发现log2的online日志,应该是不一致了,应该是在强制关机时,缓存中的数据未能及时写到log2中,导致数据库无法打开
四、查看SCN:三个点的都正常,控制文件中的scn和数据文件和数据头文件中的一致
SQL> select checkpoint_change# from v$database;
SQL> select checkpoint_change# from v$datafile;
SQL> select checkpoint_change# from v$datafile_header;
五、解决方案:通过rman
RMAN看一会恢复redolog的数据(online log和archive log);但因为当前archivelog归档日志未开启,所以只能尝试恢复online log
1、SQL>rman target /进入rman环境
2、RMAN> startup mount;
3、RMAN> restore database;
4、RMAN> recover database;
5、RMAN> alter database open resetlogs;
文章评论