Oracle-等待事件解读
概述等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件。 1). 空闲等待事件 ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件。 2). 非空闲等待事件 专门针对 ORACLE 的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注与研究的。 在 Oracle 10g 中的等待事件可以通过 v$event_name 视图来查看等待事件的相关信息。 常见等待事件Buffer busy waits从本质上讲,这个等待事件的产生仅说明了一个会话在等待一个 Buffer(数据块),但是导致这个现象的原因却有很多种。 常见的两种是:
Oracle 操作的最小单位是块( Block),即使你要修改一条记录,也需要对这条记录所在的这个数据块做操作。 当一个会话修改一个数据块时,是按照以下步骤来完成的: Buffer latch内存中数据块的存放位置是记录在一个 hash 列表( cache buffer chains)当中的。 当一个会话需要访问某个数据块时,它首先要搜索这个 hash 列表,从列表中获得数据块的地址,然后通过这个地址去访问需要的数据块,这个列表 Oracle会使用一个 latch 来保护它的完整性。 当一个会话需要访问这个列表时,需要获取一个 Latch,只有这样,才能保证这个列表在这个会话的浏览当中不会发生变化。 产生 buffer latch 的等待事件的主要原因是:
Control file parallel write控制文件频繁写入的原因很多,比如: 当系统出现日志切换过于频繁的情形时,可以考虑适当地增大日志文件的大小来降低日志切换频率。 当系统出现大量的 control file parallel write 等待事件时,可以通过比如降低控制文件的拷贝数量,将控制文件的拷贝存放在不同的物理磁盘上的方式来缓解I/O 争用。 等等…….(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |