文档内容
|
|
用途 |
|
|
详细信息 |
| 概述: |
| 术语: |
| 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 样例:
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。针对这个例子,一个用户会话阻塞了一个关键的数据库进程,导致用户会话被终止,保证被阻塞的关键数据库进程继续运行。
初始参数
当前,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 的数量等。