Oracle Hang 管理器 (文件 ID 1983660.1)

mosdoc發表於2016-12-14

文件內容


用途

詳細資訊
  概述:
  術語:
  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 的數量等。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31393455/viewspace-2130456/,如需轉載,請註明出處,否則將追究法律責任。

相關文章