当前日志组是指在被后台进程LGWR写入事务变化的日志组。如果在关闭状态下,当前日志组全部损坏或出现介质失败,那么数据库不能重启。
1)查看当前的日志组状态。
SQL> select group#,member,type,status from v$logfile;
GROUP# MEMBER TYPE STATUS
---------- ---------------------------------------- ------- -------
3 F:\APP\YANG\ORADATA\ORACL\REDO03.LOG ONLINE
2 F:\APP\YANG\ORADATA\ORACL\REDO02.LOG ONLINE
1 F:\APP\YANG\ORADATA\ORACL\REDO01.LOG ONLINE
SQL> select group#,members,sequence#,status from v$log;
GROUP# MEMBERS SEQUENCE# STATUS
---------- ---------- ---------- ----------------
1 1 7 ACTIVE
2 1 8 ACTIVE
3 1 9 CURRENT
2)在关闭状态下,删除日志组以模拟当前日志组全部损坏。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
-----删除当前日志组。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1334380 bytes
Variable Size 142607252 bytes
Database Buffers 385875968 bytes
Redo Buffers 5844992 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员
ORA-00312: 联机日志 3 线程 1: 'F:\APP\YANG\ORADATA\ORACL\REDO03.LOG'
3)当在关闭情况下,当前日志组所有日志成员全部出现介质损坏时,因为数据文件和控制文件处于一致状态,所以我们只需使用RECOVER DATABASE UNTIL CANCEL 命令执行基于取消的不完全的恢复。然后使用RESETLOGS 方式打开数据库。
SQL> recover database until cancel
完成介质恢复。
SQL> alter database open resetlogs;
数据库已更改。
SQL> select group#,member,type,status from v$logfile;
GROUP# MEMBER TYPE STATUS
---------- ---------------------------------------- ------- -------
3 F:\APP\YANG\ORADATA\ORACL\REDO03.LOG ONLINE
2 F:\APP\YANG\ORADATA\ORACL\REDO02.LOG ONLINE
1 F:\APP\YANG\ORADATA\ORACL\REDO01.LOG ONLINE
SQL> select group#,members,sequence#,status from v$log;
GROUP# MEMBERS SEQUENCE# STATUS
---------- ---------- ---------- ----------------
1 1 1 CURRENT
2 1 0 UNUSED
3 1 0 UNUSED
注意:别忘了 备份全数据库。