下午15:33分突然接到测试组一个MM的电话说数据库无法连接,于是赶紧登录到数据库尝试登录,果然连接后 长时间处于等待状态。当时第一感觉是不是归档满了,于是查看了当前RAC环境下每个节点的alert日志。结果其中一个节点日志在15:30分报错:
ORA-16038: 日志 3 序列号 5035 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 3 线程 1:
第一时间做了日志的清理,结果还是不行。于是又查看了ASM存储磁盘的剩余量发现也没问题。没法只能上网取经,有网友说是闪回区爆满,根据我当前环境的部署我觉得这点不可能,因为我的归档不放在这个位置所以不可能是闪回区不够。后来从一片国外网站上看到,该问题其实是redo 日志本身的问题。
1、查看alert告警日志:
ORA-16038: 日志 3 序列号xxxx无法归档
ORA-00313: open failed for members of log group 4 of thread 1
ORA-00312: online log 3 thread 2: '/opt/Oracle/db04/oradata/ORCL/redo03.log'
从这里我们可看出日志组4的数据文件损坏或丢失了,该错误信息指出的日志组和日志名为借鉴只用但是错误码一致。
2、查看文档:
该错误码英文为:The error produced as because it failed to archive online redolog due to a corruption in the online redo file. 大致意思就是说:当前归档失败的原因是因为在线日志中有脏数据。
3、解决办法:
清除非归档的日志。
SQL>select group#,sequence#,archived,status from v$log;
该结果会显示哪些日志没有归档,结果显示第3组日志还没有归档。这有可能就是脏日志。我们可以清除掉这组日志。
4、清除
SQL>alter database clear unarchived logfile group 3;
5、执行完以上操作后尝试切换日志组
SQL>alter system switch logfile;
在经过第4步骤后尝试连接,已经成功!此时如果是生产需赶紧对数据库做次全备。