今天在做实验时,把其中一个日志文件弄成了clearing_current状态,下面是我的处理过程:
首先我的第一想法是,重建,由于我的库为打开归档的,所以:
SQL> alter database clear unarchived logfile group 2;
alter database clear unarchived logfile group 2
*
ERROR at line 1:
ORA-00322: log 2 of thread 1 is not current copy
ORA-00312: online log 2 thread 1: '/database/oracle/oradata/yyjc/redo02.log'
出错了,不可以恢复,我的第二部想法是弄懂clearing_current是什么意思?
CLEARING_CURRENT:The current log is being cleared of a closed thread. The log can stay in this status if there is some failure in the switch such as an I/O error writing the new log header.
可能是由于切换时,产生I/O错误,不知道怎么解决?
我的第二步想法是,给日志组2,添加一个成员,然后删除之前那个成员:
SQL> ALTER DATABASE ADD LOGFILE MEMBER '/database/oracle/oradata/yyjc/redo02b.log' to group 2;
Database altered.
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/database/oracle/oradata/yyjc/redo02.log';
ALTER DATABASE DROP LOGFILE MEMBER '/database/oracle/oradata/yyjc/redo02.log'
*
ERROR at line 1:
ORA-00362: member is required to form a valid logfile in group 2
ORA-01517: log member: '/database/oracle/oradata/yyjc/redo02.log'
可是还是不行,他俩的状态都一样了,真是画蛇添足啊
SQL> select a.group#,a.status,b.member from v$log a,v$logfile b where a.group#=b.group#;
GROUP# STATUS MEMBER
---------- ------------------------------------------------ --------------------------------------------------
1 UNUSED /database/oracle/oradata/yyjc/redo01.log
3 UNUSED /database/oracle/oradata/yyjc/redo03.log
2 CLEARING_CURRENT /database/oracle/oradata/yyjc/redo02.log
2 CLEARING_CURRENT /database/oracle/oradata/yyjc/redo02b.log
最后只能不完全恢复了
SQL> recover database until cancel;
Media recovery complete.SQL> alter database open resetlogs;
Database altered.
希望大家给给意见,还能怎么恢复?