log file switch completion,log file switch (archiving needed) log file switch (checkpoint incomplete)
这三个等待事件是没有参数的,在10g中,它位于configuration类下
SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name in( 'log file switch completion',
2 'log file switch (checkpoint incomplete)','log file switch (archiving needed)');
NAME PARAMETER1 PARAMETER2 PARAMETER3 WAIT_CLASS
--------------------------------------------- ---------- ---------- ---------- -------------------------------------------------------
log file switch (checkpoint incomplete) Configuration
log file switch (archiving needed) Configuration
log file switch completion Configuration
当这三个等待事件出现比较频繁,可能是由于事物繁忙,导致redo生成过快,日志文件过小造成的。
这个时候可以考虑增大日志文件大小,增加日志文件组,删除以前过小的日志文件。
另外
log file switch (checkpoint incomplete)也有可能是dbwr写太慢,引起的,可能需要增加dbwr数量,调整I/O。
log file switch (archiving needed) 这个等待事件也有可能是归档太慢,应该将归档日志存放在I/O快速的磁盘上,增加归档进程
调整log_archive_max_processes归档进程。
在日志切换的过程中,lgwr进程首先要关闭current日志组,然后打开下一个日志组,这个过程中任何DML操作都无法进行,直到切换完成。日志切换的时候需进行归档,checkpoint,如果归档慢,DBWR慢,必然导致前台业务等待,这个等待过程如果比较长,会导致用户响应缓慢,所以出现了上述三类等待事件,应该引起足够重视,Oracle推荐的日志切换事件一般是20分钟,当然在业务很繁忙的情况下日志切换比较频繁,可能几分钟就切换一次,如果没有引起log file switch 之类的等待事件,就不需要增大日志文件了,太大的日志文件可能导致损失过多的数据。