log file switch( 日志文件切换)
log file switch 当日志文件发生切换时出现, 在数据库进行日志切换时, 后台进程 LGWR
需要关闭当前日志组,切换并打开下一个日志组,在这个切换过程中, 数据库的所有 DML 操作都处于停顿状态,直至这个切换完成。
log file switch 主要包含两个子事件 log file switch( archiving needed)和 log file switch( checkpoint incomplete)。
( 1) log file switch( archiving needed),即日志切换( 需要归档), 这个等待事件出现时通
常是因为日志组循环写满以后, 在需要覆盖先前日志时,发现日志归档尚未完成,出现该等待。
由于 Redo 不能写出,该等待出现时,数据库将陷于停顿状态。
出现该等待,可能表示 I/O 存在问题、归档进程写出缓慢,也有可能是日志组设置不合理
等原因导致。 针对不同原因,可以考虑采用的解决办法有:
(1)可以考虑增大日志文件和增加日志组;
(2)移动归档文件到快速磁盘;
(3)调整 log_archive_max_processes 参数等。
( 2) log file switch( checkpoint incomplete),即日志切换(检查点未完成)。 当所有的日志组都写满之后, LGWR 试图覆盖某个日志文件,如果这时数据库没有完成写出由这个日志文件所保护的脏数据时(检查点未完成),该等待事件出现。 该等待出现时,数据库同样将陷于停顿状态。
同时警告日志文件中会记录如下信息:
Fri Nov 18 14:26:57 2005
Thread 1 cannot allocate new log, sequence 7239
Checkpoint not complete
Current log# 5 seq# 7238 mem# 0: /opt/oracle/oradata/hsmkt/redo05.log
该等待事件通常表示 DBWR 写出速度太慢或者 I/O 存在问题。为解决该问题, 用户可能
需要考虑增加额外的 DBWR 或者增加日志组或日志文件大小。 log file switch 引起的等待都是非常重要的,如果出现就应该引起重视,并由 DBA 介入进行及时处理。