日期:2014-05-16  浏览次数:20482 次

log file sync(日志文件同步) 与 Log file parallel write 等待事件

log file sync(日志文件同步)等待事件具有一个参数:buffer#。在Oracle Database 10g中,这种等待事件位于Commit等待下面。当处理log file sync等待事件时,注意下面的思想:
????
log file sync 等待时间和事务中指(提交或回滚)相关
????
当进程在log file sync事件上花费大量时间时,这通常表明过多的提交或短事务。

?

触发LGWR进程的条件有:
? 1. 用户提交
? 2. 有1/3重做日志缓冲区未被写入磁盘
? 3. 有大于1M的重做日志缓冲区未被写入磁盘
? 4. 3秒超时
? 5. DBWR 需要写入的数据的SCN大于LGWR记录的SCN,DBWR 触发LGWR写入。

触发DBWR进程的条件有:

?1. DBWR超时,大约3秒
?2. 系统中没有多余的空缓冲区来存放数据
?3.?CKPT 进程触发DBWR

?


????
由用户提交和回滚初始化的写入称为同步写入;其余的写入成为后台写入。log file sync
等待只和同步写入有关。换句话说,用户进程可能正在处理一个大型的事务并生成许多触发LGWR以执行后台写入的大量重做条目,但用户会话从来不需要等待后台写入的完成。然而,一旦用户会话提交或回滚它的事务且_WAIT_FOR_SYNC参数是TRUE时,进程提交LGWR并在log file sync事件上等待LGWR将当前重做条目(包括提交标记)刷新到日志文件。在这种日志同步期间,LGWR进程在log file parallel write事件上等待同步写入的完成,同时用户会话在log file sync事件上等待同步进程的完成。

?

一旦进程进入log file sync等待,就有两种可能性。

一种可能性是LGWR在日志同步完成时提交前台进程时。

另一种情况是在等待已超时的时候(一般在1秒内),在这个时刻,前台进程检查当前日志SCN(System Change Num