联机日志文件Inacitve状态表示这个日志包含的数据修改已经同步到数据文件中,实例恢 复时已不需要它,所以它的丢失不会造成任何的数据丢失,但是会造成数据库无法打开,解 决方法是把丢失的inactive删除掉,重新添加新的联机日志。
1)模拟灾难
首先查 看log的状态:
SQL> select group#,sequence#,status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 1 INACTIVE
2 2 INACTIVE
3 3 CURRENT
Group#1的状态为inactive,我们找出它所对应的磁盘文件:
SQL> select group#,member from v$logfile where group#=1;
GROUP# MEMBER
------ ---- --------------------------------------------------
1 I:\INTEL_DATA\O04DMS0\REDO01.O04DMS0
关闭数据库:
SQL> shutdown immediate;
把REDO01.O04DMS0文件在操作系统级 别删除。
2)根据错误信息定位问题
启动数据库会出现以下错误:
SQL> startup
ORACLE instance started.
Total System Global Area 281018368 bytes
Fixed Size 1296292 bytes
Variable Size 251660380 bytes
Database Buffers 25165824 bytes
Redo Buffers 2895872 bytes
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312:online log 1 thread 1: 'I:\INTEL_DATA\O04DMS0\REDO01.O04DMS0'
从以上错误信息中,可以看到联机日志文件丢失导致无法打开数据库,查一下丢失日志的 状态:
SQL> select group#,sequence#,status from v$log where group#=1;
GROUP# SEQUENCE# STATUS
---------- ---------- ---------- ------
1 1 INACTIVE
幸运 地是,丢失的联机日志状态为inactive,那么我们不需要做什么,只要删除它即可,但是最 好在删除它之前先增加一组联机日志:
SQL> alter database add logfile group 4 ('I:\INTEL_DATA\O04DMS0\REDO04.O04DMS0') size 100M;
Database altered.