Oracle RAC HM(Hang Manager)

在Oracle数据库中,挂起(hang)指某一个进程由于无法获得申请的资源而进入的等待状态,这种等待状态只有在获得申请的资源后才能够解除,HM实现对hang的管理,包括了对于hang的监控,分析,记录和解决。


等待链是由阻塞进程和等待进程构成的,而阻塞进程中会存在一个或多个根阻塞进程,这个进程阻塞了所有的其他进程,如果根阻塞进程正在忙于一些操作,那么也许这种等待链的出现是正常的,如果阻塞进程处于空闲状态,那么也许这种等待链的出现就是不正常的,而打破等待链的方法,就是终止根阻塞进程。HM能够主动发现数据库中存在的等待链,并从多个角度对它们进行分析,如果发现了真正影响数据库性能的hang,会根据具体的情况来决定是否要解决问题,而且即使不能直接解决,也会将相应的诊断信息记录下来并持续监控。


HM的工作由七个阶段构成

阶段1(搜集阶段):在这个阶段,每个实例的dia0进程会定期搜集hang analyze信息。

阶段2(发现阶段):在这个阶段,每个实例的dia0进程会分析搜集到的hang alalyze信息,找到出现hang的会话,并发送给主节点的dia0进程。

阶段3(绘制阶段):在这个阶段,主节点的dia0进程根据每个实例的dia0进程发送过来的信息,绘制等待链。

阶段4(分析阶段):在这个阶段,主节点dia0进程根据绘制的等待链,分析是否的确出现了hang。

阶段5(验证阶段):在这个阶段,主节点dia0进程会再次执行阶段1-4,之后将阶段4的分析结果和这一次的分析结果进行对比,验证是否真的发生了hang。

阶段6(定位阶段):在这个阶段,主节点dia0进程根据验证阶段的结果定位到等待链的根阻塞进程。

阶段7(解决阶段):在这个阶段,主节点dia0进程根据参数_hang_resoluton_scope的值判断hang是否能够被解决。


HM不会尝试解决的hang

情况1:如果hang是由于tx enqueue,tm enqueue等与应用程序相关的排队导致的。

情况2:如果hang是由于无法归档引起的log file switch等待事件导致的。

情况3:如果hang是由于cf enqueue导致的。

情况4:如果hang是由于备份(例如rman)导致的。

HM虽然不会去解决这些hang,但是仍然会发现它们并进行监控。


HM的参数

_hang_detection_enabled:该参数决定HM特性在数据库中是否被启用,默认值为true。

_hang_detection_interval:该参数指定HM搜集hang analyze信息的时间间隔,默认值为32s。

_hang_verification_interval:该参数指定HM验证hang的时间间隔,默认值为46s。

_hang_resolution_scope:该参数指定HM解决hang时能够操作的范围,默认值为process,允许的值如下:

off:表示HM只会继续监控hang,而不会做任何操作去解决hang。

process:表示HM可以通过终止根阻塞进程的方式来解决hang,但是这里的根阻塞进程不能是数据库重要的后台进程,因为这会导致实例crash。

instance:表示HM可以通过终止实例的方式来解决hang。


猜你喜欢

转载自blog.51cto.com/13598811/2147192