ALTER SYSTEM ARCHIVE LOG
Thread 1 cannot allocate new log, sequence 2594
Checkpoint not complete
这个实际上是个比较常见的错误。通常来说是因为在日志被写满时会切换 日志组,这个时候会触发一次checkpoint,DBWR会把内存中的脏块往数据文件中写,只要没写结束就不会释放这个日志组。如果归档模式被开启的 话,还会伴随着ARCH写归档的过程。如果redo log产生的过快,当CPK或归档还没完成,LGWR已经把其余的日志组写满,又要往当前的日志组里面写redo log的时候,这个时候就会发生冲突,数据库就会被挂起。并且一直会往alert.log中写类似上面的错误信息。
解决办法:我觉得要看预警日志的情况,如果一直以来online redo log切换的比较频繁,这个时候就要适当增大每个日志组的大小,同时可适当增加日志组。
如果online redo log切换的比较频繁只是偶尔的事件,则可以增大每个日志组的大小。
增加日志组(添加日志组的实验是在我本本的虚拟机上做的,组成员比较小):
1、查看日志组状态
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 130 52428800 512 2 YES INACTIVE 1847225 14-AUG-13 1877602 16-AUG-13
2 1 131 52428800 512 2 NO CURRENT 1877602 16-AUG-13 2.8147E+14
3 1 129 52428800 512 2 YES INACTIVE 1826391 11-AUG-13 1847225 14-AUG-13
2、查看日志组文件
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE
---------- ------- ------- -------------------------------------------------- --------------------------------------------------
1 ONLINE +DATA/orcl/onlinelog/group_1.257.818327073 NO
1 ONLINE +FRA/orcl/onlinelog/group_1.257.818327079 YES
2 ONLINE +DATA/orcl/onlinelog/group_2.258.818327083 NO
2 ONLINE +FRA/orcl/onlinelog/group_2.258.818327089 YES
3 ONLINE +DATA/orcl/onlinelog/group_3.259.818327091 NO
3 ONLINE +FRA/orcl/onlinelog/group_3.259.818327095 YES
6 rows selected.
3、alter database add logfile group 4 ('+DATA/orcl/onlinelog/redo04.log','+FRA/orcl/onlinelog/redo04.log') size 50M;
Database altered.
4、
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 130 52428800 512 2 YES INACTIVE 1847225 14-AUG-13 1877602 16-AUG-13
2 1 131 52428800 512 2 NO CURRENT 1877602 16-AUG-13 2.8147E+14
3 1 129 52428800 512 2 YES INACTIVE 1826391 11-AUG-13 1847225 14-AUG-13
4 1 0 52428800 512 2 YES UNUSED 0 0
5、
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE
---------- ------- ------- -------------------------------------------------- --------------------------------------------------
1 ONLINE +DATA/orcl/onlinelog/group_1.257.818327073 NO
1 ONLINE +FRA/orcl/onlinelog/group_1.257.818327079 YES
2 ONLINE +DATA/orcl/onlinelog/group_2.258.818327083 NO
2 ONLINE +FRA/orcl/onlinelog/group_2.258.818327089 YES
3 ONLINE +DATA/orcl/onlinelog/group_3.259.818327091 NO
3 ONLINE +FRA/orcl/onlinelog/group_3.259.818327095 YES
4 ONLINE +DATA/orcl/onlinelog/redo04.log NO
4 ONLINE +FRA/orcl/onlinelog/redo04.log NO
8 rows selected.