log file switch (archiving needed)
SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'log file switch (archiving needed)';
EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER3
---------- -------------------------------------------------- --------------- --------------- --------------------
112 log file switch (archiving needed)
在归档模式下,这个等待事件发生在在线日志切换(log file switch)时,需要切换到的在线日志还没有被归档进程(ARCH)归档完毕的时候。当在线日志文件切换到下一个日志时,需要确保下一个日志已经被归档完毕,否则不允许覆盖那个在线日志信息(否则会导致归档日志信息不完整)。
出现这样的等待事件通常是由于某种原因导致ARCH进程死掉,比如ARCH进程尝试向目的地写入一个归档文件,但是没有成功(介质失效或其它原因),这时ARCH进行就会死掉。如果发生这种情况,在数据库alert文件中可以找到相关的告警信息。
这个等待事件没有参数。
log file switch (checkpoint incomplete)
SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'log file switch (checkpoint incomplete)';
EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER3
---------- -------------------------------------------------- --------------- --------------- --------------------
110 log file switch (checkpoint incomplete)
当一个在线日志切换到下一个在线日志时,必须保证要切换到的在线日子上记录的信息(比如一些脏数据块产生的redo log)被写到磁盘上(checkpoint),这样做的原因是,如果一个在线日志文件的信息被覆盖,而依赖这些redo信息做恢复的数据块尚未被写到磁盘上(checkpoint),此时系统down掉的话,Oracle将没有办法进行实例恢复。
在v$log视图里面记录了在线日志的状态。通常来说在线日志有三个状态。
Active:这个日志上面保护的信息还没有完成checkpoint。
Inactive:这个日志上面保护的信息已经完成checkpoint。
Current:当前的日志。
如果系统中存在大量的log file switch (checkpoint incomplete)等待事件,原因可能是日志文件太小或者日志文件组太少,所以解决方式是,增加日志文件的大小或者增加日志文件组数量。
这个等待事件没有参数。