一、概念

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;

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐