解決Can not allocate log問題的方法

cnhtm發表於2009-12-02

RAC環境ORACLE其中一個節點報告大量的cannot allocate new log提示,詳細資訊如下:

ORACLE Instance xxdb2 - Can not allocate log, archival required
Tue Dec 1 16:04:35 2009
Thread 2 cannot allocate new log, sequence 7466
All online logs needed archiving
Current log# 3 seq# 7465 mem# 0: +XXDBGROUP/xxdb/onlinelog/group_3.268.6409755
Current log# 3 seq# 7465 mem# 1: +XXDBGROUP/xxdb/onlinelog/group_3.269.6409755

檢查上面的提示,其中有一行是"All online logs needed archiving". 說明所有的redo log都需要歸檔。

導致這個問題的原因是redo log的group太少,當大transaction執行的時候,將所有的redo log都用了,transaction還沒有完成。

[@more@]

解決的方法是增加redolog 的group或增大group各member的尺寸,我選擇增加group數量的方法。過程如下:

檢查現在的歸檔日誌情況:

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ----------------------------- ---------

1 1 7501 104857600 1 NO CURRENT 504828041 01-DEC-09
2 1 7500 104857600 1 YES INACTIVE 503944970 01-DEC-09

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ----------------------------- ---------
3 2 7464 104857600 1 NO ACTIVE 503944966 01-DEC-09
4 2 7465 104857600 1 NO CURRENT 504828036 01-DEC-09

4 rows selected.

發現現在資料庫的兩個節點上,每個節點有2組日誌,計劃每個節點增加到4組。過程如下:

SQL> alter database add logfile thread 1 group 5 ;

SQL> Database altered.

SQL> alter database add logfile thread 2 group 6 ;

SQL> Database altered.

SQL> alter database add logfile thread 1 group 7 ;

SQL> Database altered.

SQL> alter database add logfile thread 2 group 8 ;

SQL> Database altered.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22049049/viewspace-1029263/,如需轉載,請註明出處,否則將追究法律責任。

相關文章