作家
登录

Oracle中常见的33个等待事件小结

作者: 来源: 2017-10-25 09:50:10 阅读 我要评论

Latch addr: 会话申请的latch在SGA中的虚拟地址。

经由过程以下的SQL语句可以根据这个地址找到它对应的Latch名称:

  1. /* Formatted on 6/27/2011 1:12:48 PM (QP5 v5.114.809.3010) */ 
  2.  select * from v$latch a,v$latchname b where 
  3.  addr=latch addr -- 这里的latch addr 是你大年夜等待事宜中看到的值  
  4. and a.latch#=b.latch#;  

3. Control file parallel write

控制文件频繁写入的原因很多,比如:

  • 日记切换太过频繁,导致控制文件信息响应地须要频繁更新。
  • 体系I/O 出现瓶颈,导致所有I/O出现等待。

当体系出现大年夜量的control file parallel write 等待事宜时,可以经由过程比如降低控制文件的拷贝数量,将控制文件的拷贝存放在不呵9依υ?理磁盘上的方法来缓解I/O 争用。

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

Files: Oracle 要写入的┞菲握文件个数。

所以latch free 等待事宜在10g今后的版本中并不常见,而是以具体的Latch 等待事宜出现。

Blocks: 写入控制文件的数据块数量。

Requests: 写入控制请求的I/O 次数。

4. Control file sequential read

当数据库须要攫取控制文件上的信息时,会出现这个等待事宜,因为控制文件的信息是次序写的,所以攫取的时刻也是次序的,是以称为控制文件次序读,它经常产生在以下情况:

  • 备份控制文件
  • RAC 情况下不合实例之寄┞菲握文件的信息共享
  • 攫取控制文件的文件头信息
  • 攫取控制文件其他信息

File#: 要攫守信息的┞菲握文件的文件号。

Block#: 攫取控制文件信息的肇端数据块号。

Blocks: 须要攫取的┞菲握文件数据块数量。

5. Db file parallel read

这是一个很轻易引起误导的等待事宜,实际上这个等待事宜和并行操作(比如并行萌芽,并行DML)没有关系。 这个事宜产生在数据库恢复的时刻,当有一些数据块须要恢复的时刻,Oracle会以并行的方法把他们大年夜数据文件中读入到内存中进行恢复操作。

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

Files: 操作须要攫取的文件个数。

Blocks: 操作须要攫取的数据块个数。

Requests: 操作须要履行的I/O次数。

6. Db file parallel write

这是一个后台等待事宜,它同样和用户的并行操作没有关系,它是由后台过程DBWR产生的,当后台过程DBWR向磁盘上写入脏数据时,会产生这个等待。

DBWR会批量地将脏数据并行地写入稻磁逄上响应的数据文件中,在这个批次功课完成之前,DBWR将出现这个等待事宜。如不雅仅仅是章一?等待事宜,对用户的操作并没有太大年夜的影响,当伴跟着出现free buffer waits等待事宜时,解释此时内存中可用的空间不足,这时刻会影响到用户的操作,比如影响到用户将脏数据块读入到内存中。

当出现db file parallel write等待事宜时,可以经由过程启用操作体系的异步I/O的方法来缓解这个等待。当应用异步I/O时,DBWR不再须要一向比及所稀有据块全部写入稻磁逄上,它只须要比及这个数据写入到一个百分比之后,就可以持续进行后续的操作。

这个等待事宜有两个参数:

Requests: 操作须要履行的I/O次数。

Timeouts: 等待的超不时光。

7. Db file scattered read

这个等待事宜在实际临盆库中经常可以看到,这是一个用户操作引起的等待事宜,当用户发出每次I/O须要攫取多个数据块如许的SQL 操作时,会产生这个等待事宜,最常见的两种情况是全表扫描(FTS: Full Table Scan)和索引快速扫描(IFFS: index fast full scan)。

这个名称中的scattered( 分散),可能会导致很多人认为它是以scattered 的方法来攫取数据块的,其实恰好相反,当产生这种等待事宜时,SQL的操作都是次序地攫取数据块的,比如FTS或者IFFS方法(如不雅忽视须要攫取的数据块已经存在内存中的情况)。

这里的scattered指的是攫取的数据块在内存中的存放方法,他们被攫取到内存中后,是以分散的方法存在在内存中,而不是持续的。

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

File#: 要攫取的数据块地点数据文件的文件号。

Driver id: 办事器端和客户端连接应用的协定信息。

Block#: 要攫取的肇端数据块号。

Blocks: 须要攫取的数据块数量。

8. Db file sequential read

这个等待事宜在实际临盆库也很常见,当Oracle 需液每次I/O只攫取单个数据块如许的操作时,会产生这个等待事宜。最常见的情况有索引的拜访(除IFFS外的方法),回滚操作,以ROWID的方法拜访表中的数据,重建控制文件,对文件头做DUMP等。

这里的sequential也并非指的是Oracle 按次序的方法来拜访数据,和db file scattered read一样,它指的是攫取的数据块在内存中是以持续的方法存放的。

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

File#: 要攫取的数据块锁在数据文件的文件号。

Block#: 要攫取的肇端数据块号。

9. Db file single write

当这个等待事宜很明显时,须要推敲是不是数据库中的数据文件数量太大年夜,导致Oracle 须要花较长的时光来做所有文件头的更新操作(checkpoint)。

File#: 须要更新的数据块地点的数据文件的文件号。

Block#: 须要更新的数据块号。


  推荐阅读

  芯片开源成功难 谁来挑战ARM架构?

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 这场开源活动大年夜软件而起,>>>详细阅读


本文标题:Oracle中常见的33个等待事件小结

地址:http://www.17bianji.com/lsqh/38167.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)