ORA-16038

来源:互联网 发布:阿里云服务器能转让吗 编辑:程序博客网 时间:2024/05/15 12:57

From: http://blog.sina.com.cn/s/blog_69f38bff0100n3dz.html

 

发现测试用的一个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 NOINACTIVE
3 58 NOCURRENT
2 57 NOINACTIVE

用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>