发现测试用的一个DB在startup时报如下错误:
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-16038: log 1 sequence# 56 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 1 thread 1: '/u02/oradata/orcl/redo01.log'
参照网上一篇文章得以解决:http://www.cnblogs.com/jimeper/archive/2008/04/14/1153234.html
从v$log中找到当前日志状态,可知当前日志组是3,而group 1还未归档;
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 56 NO INACTIVE
3 58 NO CURRENT
2 57 NO INACTIVE
用alter database clear logfile命令尝试重构logfile group 1,失败;
SQL> alter database clear logfile group 1;
alter database clear logfile group 1
*
ERROR at line 1:
ORA-00350: log 1 of instance orcl (thread 1) needs to be archived
ORA-00312: online log 1 thread 1: '/u02/oradata/orcl/redo01.log'
失败的原因是group 1还没有归档,需要加上”unarchived”参数;
SQL> alter database clear unarchived logfile group 1;
Database altered.
成功,下面DB就可以正常open了;
SQL> alter database open;
Database altered.
SQL>