1. 程式人生 > >oracle 重做日誌文件無法自動創建保存問題Thread 1 cannot allocate new log, sequence 233678

oracle 重做日誌文件無法自動創建保存問題Thread 1 cannot allocate new log, sequence 233678

ora- mem alt 就是 項目 eight 日誌 bold 增加

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裏面了,如下圖

技術分享圖片

oracle 重做日誌文件無法自動創建保存問題Thread 1 cannot allocate new log, sequence 233678