文档解释
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后系统将无法恢复。