开发者社区> yangyi_dba> 正文

Oracle 等待事件 一

简介: 以前一直想整理一下关于Oracle 的等待事件,总是没时间。现在觉得应该着手做了,其中的一些知识来自于自己的一点研究,如有错误,望大家指正。。。。。 一 Oracle等待事件主要有两类事件: 1 空闲等待  空闲等待意味着Oracle正在等待某种动作的发生,实际上并不是因为繁忙而等待,而是因为没有事情做所以等待,如:smon timer,SMON进程的一些操作时每隔一段实际循环执行的,即使系统不忙,此事件也不立即发生,而是等待计时器达到一定的时间才执行,此时出现的smon timer 等待事件,而系统并没有出现性能上的问题。
+关注继续查看

以前一直想整理一下关于Oracle 的等待事件,总是没时间。现在觉得应该着手做了,其中的一些知识来自于自己的一点研究,如有错误,望大家指正。。。。。

一 Oracle等待事件主要有两类事件:

1 空闲等待

 空闲等待意味着Oracle正在等待某种动作的发生,实际上并不是因为繁忙而等待,而是因为没有事情做所以等待,如:smon timer,SMON进程的一些操作时每隔一段实际循环执行的,即使系统不忙,此事件也不立即发生,而是等待计时器达到一定的时间才执行,此时出现的smon timer 等待事件,而系统并没有出现性能上的问题。多数的空闲等待对数据库性能的影响不大,可以不必过多的关注。

空闲等待事件有:(加注释的比较典型)

      1 dispatcher timer  调度器计时器

      2 lock element cleanup

  3 Null event  null事件

 4  parallel query dequeue wait

  5  parallel query idle wait - Slaves

  6 pipe get 管道取操作

  7  PL/SQL lock timer

  8 pmon timer- pmon

  9  rdbms ipc message  数据库ipc 消息

  10 slave wait

  11  smon timer    smon 计时器

  12 SQL*Net break/reset to client

  13 SQL*Net message from client  来自客户端的消息

  14  SQL*Net message to client  发送消息到客户端

  15 SQL*Net more data to client

  16 virtual circuit status 虚拟环路状态消息

  17 client message  客户机消息

2 非空闲等待事件:

        通常数据库发生竞争时就会出现非空闲的等待事件,即某种操作A发生时,A所需要的资源正在被其他的操作占用,而这种独占的资源不能被操作A请求立即得到,操作请求被堵塞而发生等待。这些等待事件是我们在调整数据库的时候应该关注与研究的。非空闲的等待主要有:

Buffer busy wait    :    表示在等待对数据告诉缓存区的访问,这种等待出现在会话读取数据到buffer中或者修改buffer中的数据时。

Db file parrle write        于dbwr进程相关的等待,一般都代表了io能力出现问题。通常与配置的多个dbwr进程或者dbwr的io slaves个数有关,当然也可能意味这在设备上出现io竞争!
Db file scattered read        表示发生了于全表扫描的等待。通常意味者全表扫描过多,或者io能力不足,或者io竞争。
Db file sequential read        表示发生了于索引扫描有关的等待。

Db file single write        表示在检查点发生时与文件头写操作相关的等待。

Direct path read        表示于直接io读相关的等待。

Direct path write        同上
Enqueue        表示于内部队列机制有关的等待,例如保护内部资源或者组件的锁的请求等,一种并发的保护机制。
Free buffer inspected        表示在将数据读入数据告诉缓冲区的时候等待进程找到足够大的内存空间。

Free buffer waits        表述数据告诉缓存区缺少内存空间。通常于数据高速缓冲区内存太小或者脏数据写出太慢导致。

Latch free       表示某个锁存器发生了竞争。

Library cache load lock        表示在将对象装入到库高速缓冲区的时候出现了等待。这种事件通常代表者发生了负荷很重的语句重载或者装载,可能由于sql语句没有共享池区域偏小导致的。
Library cache lock        表示与访问库高速缓存的多个进程相关的等待。通常表示不合理的共享池大小。
Library cache pin        这个等待事件也与库高速缓存的并发性有关,当库高速缓存中的对象被修改或者被检测的时候发生
Log buffer space        表示日志缓冲区出现了空间等待事件。这种等待事件意味者写日志缓冲区的时候得不到相应的内存空间,通常发生在日志缓冲区太小或者LGWR进程写太慢的时候。
Log file parallel write        表示等待LGWR向操作系统请求io开始直到完成io。在触发LGWR写的情况下入3秒,1/3,1MB、DBWR写之前可能发生。这种事件发生通常表示日志文件发生了io竞争或者文件所在的驱动器较慢。
Log file single write        表示写文件头块的时候出现了等待。一般都是发生在检查点发生时。
Log file switch  (archiveing needed)        由于归档过慢造成日志无法进行切换而发生的等待。这种等待事件的原因可能比较多,最主要的原因是归档速度赶不上日志切换的速度。可能的原因包括了重作日志太了,重作日志组太少,归档能力低,归档文件发生了io竞争,归档日志挂起,或者归档日志放在了慢的设备上。
Log file switch (checkpoint incomplete)        表示在日志切换的时候文件上的检查点还没有完成。一般意味者日志文件太小造成日志切换切换太快或者其他原因。
Log file sync        表示当服务进程发出commit或者rollbabk命令后,直到LGWR完成相关日志写操作这段时间的等待。如果有多个服务进程同时发出这种命令,LGWR不能及时完成日志的写操作,就有可能造成这种等待。
Transaction        表示发生一个阻赛回滚操作的等待。
Undo segment extension        表示在等待回滚段的动态扩展。这表示可能事务量过大,同时也意味者可能回滚段的初始大小不是最优,minextents设置偏小。考虑减少事务,或者使用最小区数更多的回滚段。

参考:

《Oracle 数据性能优化》

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【MOS】常见问题cursor library cache类型的等待事件
【MOS】常见问题:'cursor:mutex ..'/ 'cursor:pin ..'/ 'library cache:mutex ..'类型的等待事件 (文档 ID 1525791.
924 0
oracle等待事件11——重做缓冲区上的等待事件
1、latch:redo writing  , latch :redo allocation  ,latch:redo copy oracle 为了保护将重做记录复制到重做缓冲区的一连串过程,使用以下三个锁存器: 1)rodo writing 锁存器:为了占有重做缓冲区内的空间,向LGWR请求写入工作的进程需要获得redo writing锁存器。
919 0
Oracle中常见的33个等待事件小结
一. 等待事件的相关知识 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件。1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件。
900 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23523 0
enq:Library cache lock/pin等待事件
前言:ORACLE数据库内存两个很重要的部分:Buffer cache和Library cache,早期已经有整理过一篇关于Buffer cache的管理和关于Buffer cache的等待事件(cache buffers chains),一直想整理一篇关于Library cache的文章,刚好在oracle的官网上看到了相应的文档,顺手记录下来,供大家参考。
960 0
oracle等待事件12——网络上的等待事件
网络上的相关等待时间有如下几种: --SQL*NET message from / to client --SQL*NET more data from /to client --SQL*NET message from /to dblink --SQL*NET more data from / to dblink 这些事件大部分视为Idle(空闲)事件,所以分析性能问题时一般不予考虑。
945 0
oracle等待事件10——I/O上的等待事件 下篇
5、direct path read temp / direct path write temp 为了排序工作在临时区域读写时,等待direct path read temp、direct path write temp事件。
924 0
ORACLE等待事件:SQL*Net message from client & SQL*Net message to client
在ORACLE当中有两个很常见的等待事件“SQL*Net message from client”与“SQL*Net message to client”,两者有点区别,下面整理这方面的资料如下:     SQL*Net message from client      表示服务端等待着Cilent发来请求让它处理,这时就会产生SQL*Net message from client等待事件。
1118 0
oracle等待事件8——段上的等待事件
1、enq:HW-contention 为防止多个进程同时修改HWM而提供的锁称为HW锁(官方文档解释:Space management operations on a specific segment)。
1034 0
oracle等待事件9——I/O上的等待事件 上篇
1、db file scattered read oracle在执行全表扫描(FTS:full table scan)或全索引扫描(index full scan)时,为保障性能,尽量一次性读取多个块,这称为Multi Block I/O。
961 0
+关注
yangyi_dba
数据库相关技术专家
972
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载