http://blog.csdn.net/robinson1988/article/details/4904911
SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name in( 'log file sync','log file parallel write');
NAME PARAMETER1 PARAMETER2 PARAMETER3 WAIT_CLASS
--------------------------------------------- ---------- ---------- ---------- ----------------------------------------------------------------
log file parallel write files blocks requests System I/O
log file sync buffer# Commit
log file parallel write等待事件位于System I/O类,它有三个参数,第一个参数表示将要写的文件个数,第二个参数表示将要写入的block个数,第三个参数表示I/O请求的个数。
log file sync 等待事件位于Commit类下,它只有一个参数,它表示log file中block的块号
当用户发出commit,rollback的时候,就会触发lgwr进程将产生的redo record写入到log file中,这个过程称为日志同步写入。
其余条件的redo record 写入到log file称为后台写入。
出现log file sync等待事件是很频繁的,它很短,如果系统在awr报告,statspack报告中发现有log file sync
通常是由于过于频繁的提交,日志文件所在磁盘I/0缓慢,或者是log buffer太大引起的。
很多人不理解为什么log buffer过大会造成log file sync等待事件,这是由于log buffer过大,会使lgwr懒惰,因为日志写的触发条件有一个是1/3的log buffer满。当设置过大的log buffer,也会让一次性写入过大的redo record到log file中,写得过多导致log file sync等待。有一个隐含参数可以控制redo 写的阀值:_log_io_size。
所以没有必要将log buffer设置过大,只要没有出现log buffer space等待事件,log buffer大小就足够,而且通常默认情况下log buffer是足够的。
注意log file sync是用户commit/rollback触发的。
当一个session等待lgwr将log buffer的redo record 写入到log file 就会产生log file parallel write等待事件
log file parallel write 是由lgwr进程引起的,不是user commit/rollback引起的,这点从oracle的分类我们就可以看出。
通常出现该等待事件是由于重做日志所在磁盘I/O缓慢,或者存在争用。
一般情况下log file parallel write和log file sync都是同时出现的。