正德厚生,臻于至善

Oracle Event -- PlaceHolder Event 和 Fixed-up Event

从Oracle 10g开始, RAC相关等待事件引入了从属关系。 某些事件扮演"Placeholder"角色,而另一些事件扮演"Fixed-up"角色。

"Placeholder"事件是指进程在全局资源(即数据块)"获取过程中"等待的事件。 "Fixed-up"事件表示记录进程"获取之后",表明数据块的获取方法的事件。

必须注意的是,"获取过程中"和"获取之后"之间的视角差异决定了 "Placeholder"事件和 "Fixed-up"事件的作用。 例如,在一致读取 (CR) 模式下向远程节点请求特定块的进程将等待"gc cr request"(Placeholder),直到该块被收到。如果收到实际块作为请求的结果,则最终报告将等待"gc cr block 2-way"( Fixed-up)。 也就是说,"Placeholder"事件将更改为特定的"Fixed-up"事件,这取决于进程获得的结果。

"Placeholder"和 "Fixed-up" 事件系统中的另一个注意事项是监视方法。 "Placeholder"事件在"获取过程中"观察到,因此在提供当前等待信息的 V\$SESSION_WAIT视图中观察到。 此外,如果尚未更改为"Fixed-up"事件,V\$SESSION_EVENT视图中也会观察到。 另一方面,由于"Fixed-up"事件在"获取之后"观察到,因此在 V\$SESSION_WAIT 视图中不能被观察到,仅在 V\$SESSION_EVENT 或 V\$SYSTEM_EVENT 视图中可以被观察到。 因此,如果查询 V\$SYSTEM_EVENT 视图,则仅能观察到"Fixed-up"事件,如 "gc cr block 2-way",而不能观察到"Placeholder"事件,如 "gc cr request"事件。

gc cr/ current request 的 fixed-up 事件
gc cr/ current request事件是"Placeholder"事件,根据获取数据块的手段,有下面几种类型的"Fixed-up"事件:

如果从主节点发送块映像(即,如果主节点是持有者节点)   

gc cr block2-way
gc current block 2-way

从第三个持有者节点(而不是主节点)发送块映像时

gc cr block 3-way
gc current block 3-way

授予从主节点读取块的权限

gc cr grant 2-way
gc current grant 2-way

在发送块映像的过程中发生冲突时

gc cr block busy
gc current block busy

在授予读取块的权限的过程中发生冲突时

gc cr grant busy
gc current grant busy

发送块图像时出现拥塞时

gc cr block congested
gc current block congested

在授予读取块的权限的过程中出现拥塞时

gc cr grant congested
gc current grant congested

如果对块传输请求的响应丢失 (10g R2)
gc cr block lost
gc current block lost

这些"Fixed-up"事件有助于更详细地分析等待症状的原因。即使"Placeholder"是相同的"gc cr request"事件,依据"Fixed-up"事件是"gc cr block 2-way"还是"gc cr block busy"事件,发生等待行为的原因和解决方案可能完全不同。
赞(0) 打赏
未经允许不得转载:徐万新之路 » Oracle Event -- PlaceHolder Event 和 Fixed-up Event

评论 抢沙发

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫

微信扫一扫

登录

找回密码

注册