主页 > 知识库 > 数据库 > Oracle >

Oracle 常见的33个等待事件(7)

来源:网络 作者:liyf0371 发表于:2012-09-04 10:04  点击:
Mode : 被加载对象的数据片段。 Namespace : 被加载对象在v$db_object_cache 视图中namespace名称。 Log file parallel write 后台进程LGWR 负责将log buffer当中的数据写到REDO 文件中,以重用log buffer的数据

Mode被加载对象的数据片段。
Namespace被加载对象在v$db_object_cache 视图中namespace名称。
 
 
  1.  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次数。
 
 
  1.  Log buffer space
当log buffer 中没有可用空间来存放新产生的redo log数据时,就会发生log buffer space等待事件。 如果数据库中新产生的redo log的数量大于LGWR 写入到磁盘中的redo log 数量,必须等待LGWR 完成写入磁盘的操作,LGWR必须确保redo log写到磁盘成功之后,才能在redo buffer当中重用这部分信息。
 
如果数据库中出现大量的log buffer space等待事件,可以考虑如下方法:
增加redo buffer的大小。
提升磁盘的I/O性能
 
  1.  Log file sequential read
这个等待事件通常发生在对redo log信息进行读取时,比如在线redo 的归档操作,ARCH进程需要读取redo log的信息,由于redo log的信息是顺序写入的,所以在读取时也是按照顺序的方式来读取的。
 
这个等待事件包含三个参数:
     Log# 发生等待时读取的redo log的sequence号。
     Block# 读取的数据块号。
     Blocks读取的数据块个数。
 
 
  1.  Log file single write
这个等待事件发生在更新redo log文件的文件头时,当为日志组增加新的日志成员时或者redo log的sequence号改变时,LGWR 都会更新redo log文件头信息。
 
这个等待事件包含三个参数:
     Log#写入的redo log组的编号。
     Block#写入的数据块号。
     Blocks写入的数据块个数。
 
 
  1.  Log file switch(archiving needed)
在归档模式下,这个等待事件发生在在线日志切换(log file switch)时,需要切换的在线日志还没有被归档进程(ARCH)归档完毕的时候。 当在线日志文件切换到下一个日志时,需要确保下一个日志文件已经被归档进程归档完毕,否则不允许覆盖那个在线日志信息(否则会导致归档日志信息不完整)。
 
出现这样的等待事件通常是由于某种原因导致ARCH 进程死掉,比如ARCH进程尝试向目的地写入一个归档文件,但是没有成功(介质失效或者其他原因),这时ARCH进程就会死掉。 如果发生这种情况,在数据库的alert log文件中可以找到相关的错误信息。
 
这个等待事件没有参数。
 
 
  1.  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)等待事件,原因可能是日志文件太小或者日志组太少,所以解决的方法是,增加日志文件的大小或者增加日志组的数量。
 
            这个等待事件没有参数。
 
  1.  Log file sync
这是一个用户会话行为导致的等待事件,当一个会话发出一个commit命令时,LGWR进程会将这个事务产生的redo log从log buffer里面写到磁盘上,以确保用户提交的信息被安全地记录到数据库中。
 
会话发出的commit指令后,需要等待LGWR将这个事务产生的redo 成功写入到磁盘之后,才可以继续进行后续的操作,这个等待事件就叫作log file sync。
 
当系统中出现大量的log file sync等待事件时,应该检查数据库中是否有用户在做频繁的提交操作。

有帮助
(0)
0%
没帮助
(0)
0%