Mon Nov 26 09:10:16 2018 Thread 1 cannot allocate new log, sequence 233678 Checkpoint not complete Current log# 1 seq# 233677 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG Thread 1 advanced to log sequence 233678 (LGWR switch) Current log# 2 seq# 233678 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG
最近项目的c++程序老是自动停止工作,检查c++日志找到了ORA-03113: 通信通道的文件结尾, 这种错误都是指的oracle的归档日志满了才会报这样的错,
可项目的oracle数据库的归档功能都是关闭的,初步排除归档日志的问题
再次查找资料,找到了oracle运行的日志文件(oracle运行的日志,错误啥的都在这),路径如下:D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_orcl.log
打开log搜索error就发现了Thread 1 cannot allocate new log这样的错误,查找资料后,这样的错误是oracle的重做日志文件无法正确切换保存的问题。
根据网上的介绍,多数解决方法为新增几个重做日志文件就可以了
先查询一下oracle的重做日志文件:
select group#,sequence#,bytes,members,status from v$log;
select * from v$logfile;
select * from v$log;
发现有三个重做日志文件,RED001,RED002,RED003状态一个为current,两个为active,没有inactive,也就是说都在使用,没有空闲的,
就考虑是不是重做日志文件太少了
于是以 sqlplus /nolog登陆,conn / as sysdba登陆后,执行了如下命令:
--增加一个名字为RED004.LOG的log文件 alter database add logfile (‘D:\app\Administrator\oradata\orcl\RED004.LOG‘) size 50M; --执行一下手动切换日志文件命令 alter system switch logfile;
我按照顺序增加了2个(重做日志文件必须按照顺序增加),也就是说我的重做日志文件为RED001,RED002,RED003,RED004,RED005一共有5个
重做日志路径在D:\app\Administrator\oradata\orcl文件夹下,数据库的dbf也在这
再次执行select * from v$log; 状态如下,有了2个空闲的inactive
再次检查alert_orcl.log日志,没有文章开始的错误了,说明重做日志文件已经正常保存了(下面黑色字体表示重做日志文件已经正常了)
Mon Nov 26 17:02:20 2018
Thread 1 advanced to log sequence 233879 (LGWR switch)
Current log# 3 seq# 233879 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG
注:新加重做日志文件,不需要停止数据库,直接sqlplus / nolog conn / as sysydba 操作即可
在解决过程中发现alert_orcl.log 太大了我这有240M,打开很慢,
于是直接重命名这个文件,重新建了一个空的,过了一会日志文件就输出到那个空的log里面了,如下图
原文地址:https://www.cnblogs.com/-txf-/p/10021721.html