Oracle Hang 管理器 (文档 ID 1983660.1)

文档内容


用途

详细信息
  概述:
  术语:
  12.1.0.1 的 Hang 管理器
  ORA 32701 事件
  初始参数
 
V$ 视图
  V$HANG_INFO
  V$HANG_SESSION_INFO
  (G)V$HANG_STATISTICS


适用于:

Oracle Database - Enterprise Edition - 版本 12.1.0.1 到 12.1.0.1 [发行版 12.1]
本文档所含信息适用于所有平台

用途

 这个文档介绍了 RAC 数据库下 Hang 管理器的基本知识。

详细信息

概述:

Oracle 数据库从 10.2.0.1 版本开始推出了 Hang 管理器功能,Hang 管理器能够及时发现数据库 Hang 问题,而且,如果启用了 Hang 解决功能,Hang 管理器还能及时解决发现的 Hang 问题。随着版本的升级,Hang 管理器完善了依赖的等待事件架构和提高了自身功能。然而,只有在 11.2.0.2 数据库上,Hang 管理器通过终止会话或进程方式解决 Hang 问题。在 12.1.0.1 版本上,这依然是默认的解决 hang 问题方式。

只有在 RAC 数据库上,Hang 管理器才有效,可以检查初始参数 CLUSTER_DATABASE 决定是否是 RAC 数据库,值 TRUE 表示是 RAC 数据库。

术语:

  • Cross Boundary Hang
    • 这种 hang 指发生在 ASM 和 DB 之间。在 12.1.0.1 版本上,Hang 管理器能够发现数据库和 ASM 之间的 hang 或者 ASM 和数据库之间的 hang。
  • Deadlock or Closed Chain
    • 死锁指引起死锁的会话形成了一个互相阻塞,互相等待的闭环链,所有的会话即是等待者又阻塞者。只有让其中一个会话被终止解决死锁问题。
  • Hang or Open Chain
    • 从 Hang 管理器的角度出发,hang 就是许多会话被阻塞不动,这些会话不像死锁是一个闭环链,而是打开的链。这种开环链有一个最终的阻塞会话,他阻塞了其他所有会话,开放链有一个最终的等待会话,这个会话被其他所有会话所阻塞。
  • Immediate Waiter
    • 在开环链的 hang 中,被最终会话阻塞的会话。
  • Quality of Service (QoS) Management
    • 从 Hang 管理器的角度出发,hang 就是许多会话被阻塞不动,这些会话不像死锁是一个闭环链,而是打开的链。这种开环链有一个最终的阻塞会话,他阻塞了其他所有会话,开放链有一个最终的等待会话,这个会话被其他所有会话所阻塞。
  • Root (also known as Victim or Final Blocker)
    • 在开环链的 hang 中,阻塞所有会话的会话。
  • Self-Resolved Hang
    • 这是一种会被 Hang 管理器发现且立刻消失的 Hang。既可能因为 root 或 Immediate 等待的会话获得了资源不再等待,或者它们中一个或两个会话都被终止,但不是 Hang 管理器终止的。

12.1.0.1 的 Hang 管理器

自从 11.2.0.2 数据库,Hang 管理器通过终止 root 会话或进程解决它发现的 Hang 问题。默认情况下,Hang 管理器不会造成数据库实例终止和节点驱逐,它也不解决所有发现的 Hang 问题。以下几种情况 Hang 管理器不解决 Hang 的问题。1. 如果应用问题造成的 Hang,Hang管理器等待应用用户去解决这个 hang。2. 如果持有 root 阻塞会话的实例正面临 CPU/IO 性能压力,Hang 将被延迟解决,在延长的时间内,Hang 有可能自动消失。3.不解决任何 ASM hang 问题。

从 12.1.0.1 版本开始,只要启用了 QoS,Hang 管理器利用 QoS 提供的信息决定是否忽略或解决 Hang 问题。只要 QoS 允许 Hang 管理器解决 Hang 问题,这将比 Hang 管理器发现和解决 Hang 更快,或者 Hang 解决可能被延迟。

在 12.1.0.1 之前的版本,Hang 管理器仅能发现数据库或者 ASM 上的 hang 问题,不能发现数据库和 ASM 之间的 Hang ( Cross Boundary Hang),并且没有方式去发现它。在 12.1.0.1 版本上,完善后的 Hang 管理器,能够发现 ASM 和数据库之间的 Hang,记录信息到各种trace 文件中,协助诊断这类 hang 问题。

ORA 32701 事件

当 Hang 管理器解决了 Hang 问题后,它将 ORA-32701 告警信息写到 alert 日志中。下面是 ORA-32701 样例:

ORA-32701: Possible hangs up to hang ID=24 detected
Incident details in: /ee/oracle/oracle_base/diag/rdbms/orcl/orcl1/incident/incdir_1944098/orcl1_dia0_34930694_i1944098.trc
DIA0 terminating blocker (ospid: 28311778 sid: 3398 ser#: 1) of hang with ID = 24
     requested by master DIA0 process on instance 2
     Hang Resolution Reason: Automatic hang resolution was performed to free a
    critical database process.
     by terminating session sid:3398 with serial # 1 (ospid:28311778)

 
上述告警日志表示 Hang ID 是 24 的 hang 被解决。列出了 root 会话的 ID,serial 信息,进程 ID,会话运行的数据库实例 ID。最后,Hang 管理器简短地描述了为什么解决这个 Hang。针对这个例子,一个用户会话阻塞了一个关键的数据库进程,导致用户会话被终止,保证被阻塞的关键数据库进程继续运行。

备注:ORA-32701 不代表 Hang 管理器有问题。相反,它表示 Hang 管理器发现和解决了 Hang 事件。

初始参数

当前,Hang 管理器没有可以调整的初始参数,只有 Oracle 支持工程师能够调整 Hang 管理器的运行方式。


V$ 视图

Hang 管理器的信息记录在数据字典视图,Oracle 数据库手册描述了这些视图。下面仅是部分视图的概述。更详细的视图信息,请参考 Oracle 数据库手册。

V$HANG_INFO

这个视图用于查看 Hang 管理器发现的 Hang 和死锁信息,但它不含已经解决的 Hang 信息。仅包含 32个活动的 hang 信息。

V$HANG_SESSION_INFO

这个视图用于查看每个 Hang 阻塞链上的会话信息,仅包含 Root 会话和其余前 20个会话的信息。

(G)V$HANG_STATISTICS

这个视图包含 Hang 管理器发现的 Hang 和死锁的统计信息。例如:发现的 Hang 和死锁的数量,Hang 管理器解决的 Hang 数量,忽略的 Hang 的数量和 Self-resolved Hang 的数量等。

请使用浏览器的分享功能分享到微信等