Oracle等待事件之四---log相关等待事件

原创 2016年08月29日 16:14:31

一、Log file parallel write

后台进程LGWR负责将log buffer当中的数据写入到REDO文件中,以重用log buffer的数据。如果每个REDO LOG组里面有2个以上的成员,那么LGWR进程将会并行地将REDO信息写入到这些文件中。

如果数据库中出现这个等待事件的瓶颈,主要原因可能是磁盘I/O性能不够或者REDO文件的分布导致了I/O的争用,比如同一个组的REDO成员文件放在相同的磁盘上。

这个等待事件有三个参数:

Files:操作需要写入的文件个数。

Blocks:操作需要写入的数据块个数。

Requests:操作需要执行的I/O次数。

二、Log buffer space

当log buffer 中没有可用空间来存放新产生的redo log数据时,就会发生log buffer space等待事件。如果数据库中新产生的redo log的数据量大约LGWR写入到磁盘中的redo log数量,必须等待LGWR完成写入磁盘的操作,LGWR必须确保redo log写到磁盘成功之后,才能在redo buffer当中重要这部分信息。

如果数据库中出现大量的log buffer space等待事件,可以考虑如下方法:

(1)增加redo buffer的大小。

(2)提升磁盘的I/O性能。

三、Log file sequential read

这个等待事件通常发生在对redo log信息进行读取时,比如在线redo的归档操作,ARCH进程需要读取redo log的信息,由于redo log的信息时顺序写入的,所以在读取时,也是按照顺序的方式来读取。

这个等待事件包含三个参数:

Log#:发生等待时读取的redo log的sequence号。

Block#:读取的数据块号。

Blocks:读取的数据块个数。

四、Log file single write

这个等待事件发生在更新redo log文件的文件头时,当为日志组增加新的日志成员时或者redo log的sequence号改变时,LGWR都会更新redo log文件头信息。

这个等待事件包含三个参数:

Log#:写入的redo log组的编号。

Block#:写入的数据块号。

Blocks:写入的数据块个数。

五、Log file switch(archiving needed)

在归档模式下,这个等待事件发生在在线日志切换(log file switch)时,需要切换的在线日志还没有被归档进程(ARCH)归档完毕的时候。当在线日志文件切换到下一个日志时,需要确保下一个日志文件已经被归档进程归档完毕,否则不允许覆盖那个在线日志信息(否则会导致归档日志信息不完整)。

出现这样的等待事件,通常是由于某种原因导致ARCH进程死掉,比如ARCH进程尝试向目的地写入一个归档文件,但是没有成功(介质失效或者其他原因),这时ARCH进程就会死掉。如果发生这种情况,在数据库的alert log文件中可以找到相关的错误信息。

这个等待事件没有参数。

六、Log file switch(Checkpoint incomplete)

当一个在线日志切换到下一个在线日志时,必须保证要切换到的在线日志上的记录的信息(比如一些脏数据块产生的redo log)被写到磁盘上(Checkpoint),这样做的原因是,如果一个在线日志文件的信息被覆盖,而依赖这些redo信息做到恢复的数据块尚未被写到磁盘上(Checkpoint),此时系统down掉的话,Oracle将没有办法进行实例恢复。

在v$log视图里记录了在线日志的状态,通常来说,在线日志有三种状态。

Active:这个日志上面保护的信息还没有完成Checkpoint。

Inactive:这个日志上面保护的信息已完成Checkpoint。

 Current:当前的日志。

Oracle在做实例恢复时,会使用状态为current和Active的日志进行实例恢复。

如果系统中出现大量的log file switch(Checkpoint incomplete)等待事件,原因可能是日志文件太小或者日志组太少,所以解决的办法是,增加日志文件的大小或者增加日志组的数量。

这个等待事件没有参数。

七、Log file sync

这是一个用户会话行为导致的等待事件,当一个会话发出一个commit命令时,LGWR进程会将这个事务产生的redo log从log buffer里面写到磁盘上,以确保用户提交的信息被安全的记录到数据库中。

会话发出的commit指令后,需要等待LGWR将这个事务产生的redo成功写入到磁盘之后,才可以继续进行后续的操作,这个等待事件就叫做log file sync。

当系统中出现大量的log file sync等待事件时,应该检查数据库中是否有用户在频繁的提交操作。

这种等待事件通常发生在OLTP系统中,OLTP系统中存在很多小的事务,如果这些事务频繁被提交,可能引起大量的log file sync的等待事件。

这个等待事件包含一个参数:

Buffer#:redo buffer中需要被写入到磁盘中的buffer。


相关文章推荐

ORACLE AWR报告之 log file sync等待事件优化的总结【转自ITPUB】

 来自白大师(白鳝)对log file sync等待事件优化的总结,供各位puber们学习参考: 一、  log file sync平均等待事件时间超过7ms,如果等待时间过长,说明log...

深入理解Oracle中的shared pool与library cache组件及相关等待事件

传统的’library cache pin’在10.2.0.2之后默认被取代, 此处PIN被Mutex及其ref count取代。 当进程执行游标语句时或者需要PIN,或者需要hard parse一个...
  • wanglha
  • wanglha
  • 2014年11月21日 11:09
  • 585

Oracle OWI 等待事件历史视图及相关视图

Oracle提供的等待事件视图使得我们可以获取指定session以及实例级别等待事件的详细信息,这些视图分别是v$session_wait,v$session_event,以及v$system_eve...

深入理解Oracle中的shared pool与library cache组件及相关等待事件

SQL执行: 1,
  • cn_mos
  • cn_mos
  • 2014年11月16日 15:30
  • 334

Oracle等待事件说明一

  • 2010年05月28日 13:39
  • 88KB
  • 下载

oracle常见等待事件

  • 2015年03月26日 09:34
  • 335KB
  • 下载

"log file sync" 等待事件

当一个用户提交(commits)或者回滚(rollback),session的redo信息需要写出到redo logfile中. 用户进程将通知LGWR执行写出操作,LGWR完成任务以后会通知用户进...
  • TianyaG
  • TianyaG
  • 2013年07月16日 13:21
  • 619

Oracle常见的33个等待事件

  • 2015年09月02日 15:13
  • 197KB
  • 下载

oracle等待事件

  • 2013年04月22日 21:43
  • 41KB
  • 下载

"log file sync"等待事件-2

“log file sync”有三个参数: P1 = buffer# P2 = 未使用 P3 = 未使用 buffer# 这个buffer编号(在日志缓冲区中)的所有改变必须刷新到磁盘,...
  • bisal
  • bisal
  • 2013年10月18日 17:36
  • 2098
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle等待事件之四---log相关等待事件
举报原因:
原因补充:

(最多只允许输入30个字)