Oracle11gRAC中的等待事件

1、RAC中等待事件的分类

集群的等待事件属于以下类别之一:

面向块的等待
gc current block 2-way
gc current block 3-way
gc cr block 2-way
gc cr block 3-way

面向消息的等待
gc current grant 2-way
gc current grant 3-way
gc cr grant 2-way
gc cr grant 3-way

面向争用的等待
gc current block busy
gc cr block busy
gc current buffer busy

面向负载的等待
gc current block congested
gc cr block congested
gc current grant congested
gc cr grant congested

2、具体说明

2.1 gc current block 2-way

该等待事件发生在下列过程中:

实例A请求主控实例B控制的一个数据块的授权,该数据块缓存位于实例B上,实例B通过缓存融合机制将这个数据块的当前版本发送到请求者。这个事件表明存在写/写争用。

可以考虑以下措施:

AWR报告中的“Current Blocks Received”部分的内容应当可以帮助确定争用最严重的对象。

确保对争用最严重的对象采用了良好的数据库对象设计实践、数据库对象布局和空间管理实践。

使用适当的应用程序分区方案,对应用程序进行优化。

2.2 gc current block 3-way

该等待事件发生在下列过程中:

一个实例请求访问一个数据块的授权。主控相应资源的实例接收请求,并将消息转发给当前拥有者,告诉它放弃所有权。这个拥有实例通过缓存融合机制将数据块当前版本的副本发送

给请求方,并将独占锁传送给发出请求的实例。这个事件同样表明存在写/写争用。采取的措施与上面相同。

2.3 gc cr block 2-way

该等待事件发生在下列过程:

实例A以共享模式请求CR块和锁,主控实例拥有当前块,制作CR副本并通过缓存融合发送。该事件表明存在写/读争用。

可以参考以下措施:

AWR报告中的“Segments by CR Blocks Received”部分应当可以帮助确定争用最严重的对象。

其它措施同上。

2.4 gc cr block 3-way

类似2.3,只不过主控实例与拥有实例并非同一实例。

2.5 gc current grant 2-way

该等待时间发生在下列过程:

当一个实例需要当前模式的一个数据块时,它将这一请求发送给主控实例。主控实例发现所有实例目前都没有锁定被请求块。向发送请求的实例发回一条消息,授予它对这个数据块的共

享锁。发出请求的块随后从磁盘读取块。这一事件不代表任何争用。

可以参考以下措施:

SQL优化,减少它请求的块数。

2.6 gc current block busy

当一个请求需要当前模式的数据块时,它向主控实例发送一条请求。这个请求最终通过缓存融合传送获得数据块;但是,由于以下原因之一会使数据块传送被延迟:

这个块正被另一个实例的一个会话使用。

由于拥有这个数据块的实例不能马上将相应的重做记录写到联机重做日志文件中,因此数据块传送被延迟。

我们可以通过v$session/v$session_event来查找这一事件导致的最长等待时间的程序或会话:

select e.sid, e.time_waited,s.program,s.module
from v$session_event e,v$session select
where s.sid=e.sid
and e.event='gc current block busy'
order by e.time_waited;

这个时间表明存在严重的写/写争用。

可以考虑研究日志写入性能,以及应用程序分区。

2.7 gc cr disk read

如果一个实例接收到发送CR缓冲区的请求,但这个缓冲区并没有缓存在本地,那么将返回这个等待事件。请求方等待全局缓存当前请求,在返回读取磁盘状态时,请求方从磁盘读取所

请求的块。出现这一等待事件的典型情景为:长时间运行的查询要查找某些撤销块,但它无法在拥有该撤销段的实例的本地缓存中找到这些块,在全局缓存的所有其它缓存中也找不到,

在此期间通常就会出现该等待事件。这并非一种常见的性能问题。

2.8 buffer busy global CR

当一个实例需要生成当前块的CR版本时,这个块要么是在本地缓存中,要么是在远程缓存中。如果是后一种情况,那么其他实例上的LMS将尝试创建CR块;如果是前一种情况,那么执行

查询的前台进程将执行CR块生成操作。在创建CR版本时,实例需要读取事务表,并从回滚/撤销段中读取在这个块的活动事务表中应用的撤销块。

有时,这一清楚/回滚过程可能会导致对本地和远程撤销头与撤销块进行多次查询。对远程撤销头和撤销块进行查询会导致“global cache cr request”。由于会经常访问撤销头,因此

还会产生缓冲区等待。在可以生成CR镜像之前,这个进程将一直等待时间“buffer busy global CR”。

2.9 gc cr failure

如果从一个CR块的拥有者处请求该块,但请求者收到一条故障状态消息,那么会触发这一等待事件。

可能的原因如下:

在传递期间丢失块。

校验和错误。

块中的格式或SCN无效。

可以查询系统统计视图V$SYSSTAT来了解“gc blocks lost”或“gc claim blocks lost”。

如果经常看到gc blocks lost等待事件,那么应当请系统管理员和网络管理员一同查看硬件和网络层。

2.9 gc cr block busy

与gc current block busy类似。只是发出请求的时间已经请求CR模式的块。

2.10 gc current buffer busy

因为来自另一个实例的传递已经被延迟,但同一个实例上的另一个会话已经发起了锁定请求,而且正在等待主控实例的相应,因此,本地实例上的多个会话正在同时访问相同的块。这

一事件表明存在对这个块的本地争用。

2.11 gc current block congested

当一个实例需要当前模式的块时,它向主控实例发出请求。请求者通过缓存融合获得该块。但是,由于GCS的工作量过重而使块传递延迟。

这一事件并不意味着存在块级别的任何并发或争用,但是它的确表明GCS的负载过多。

2.12 gc cr block congested

同上,只不过请求的是CR块。






  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值