ORA-16059: empty log file or invalid next available block ORACLE 报错 故障修复 远程处理

文档解释

ORA-16059: empty log file or invalid next available block

Cause: An attempt was made to archive an empty or invalid log file.

Action: No action is required.

这是ORACLE的一个错误消息,表示当前在操作的数据库日志文件不可用、无效,或已被清空。

官方解释

当发生一次故障,并尝试切换时,检查下列因素:

(1) 如果日志文件对象任何时候被移除;

(2) 上一次Oracle恢复之后,到这次故障发生之前,没有进行过检查点;

(3) 日志文件-> 日志文件组 -> 日志序列可用的状态发生了变化(例如删除);

(4) 如果日志文件大小改变了;或

(5) 日志文件被破坏了。

常见案例

1. 由于磁盘空间不足,应用程序端将一个老的redo log文件删除,而没有对数据库操作,导致上一个redo log文件不可用;

2. 看一个redo log 文件内容有一个发生变化,就会导致此日志文件不可用;

3. 如果有一个正在使用的redo log被尝试替换,也会出现无效的下一个可用块的情况;

4. 当一个redo log文件尺寸发生变化而不被正确改变,会导致此日志文件不可用;

5. 如果由于失败导致一个redo log文件被重新创建,日志文件的大小会发生变化而不正确改变,会导致此日志文件不可用。

一般处理方法及步骤

1. 使用“v$log”视图将无效日志文件标记为不可用;

2. 重建无效日志,或重新指定已存在的,但由于其他原因已无效的日志;

3. 若需要,还需对日志进行基线备份;

4. 执行一次日志切换:

ALTER SYSTEM SWITCH LOG FILE;

5. 执行完成后,可通过以下语句重新激活当前日志文件:

ALTER DATABASE CLEAR LOGFILE;

6. 如果使用RMAN进行备份,重新运行此备份,看是否还可以正常运行;

7. 如果仍然出错,请重新设置日志文件;

ALTER DATABASE ADD LOGFILE MEMBER ‘LOGFILENAME’ REUSE;

8. 如果RMAN备份仍然不能正常工作,那么到此为止,recovery后系统将无法恢复。


数据运维技术 » ORA-16059: empty log file or invalid next available block ORACLE 报错 故障修复 远程处理