標籤:
名詞術語
1.Cross Boundary Hang
交叉邊界hang。在12.1.0.1中,hang manager可以檢測database和asm之間的hang。
2.Deadlock or Closed Chain
死結或關閉鏈條。打破死結鏈條的唯一方法是讓其中某些會話完成其工作或被終止。
3.Hang or Open Chain
hang或開放鏈條。從hang manager角度講,hang就是一些會話無法進一步處理工作,這不是死結或迴圈鏈條。hang or open chain有一個根本阻塞者,阻塞了這個鏈條中的其他所有會話,也包含一個被其它會話阻塞的最終等待者。
4.Immediate Waiter
在open chain中,該會話被產生hang的根本會話所阻塞。
5.Quality of Service (QoS) Management
QoS(服務品質管理)是資料庫中自動的、基於策略的監控整個系統的負載請求的服務。管理應用需要的資源、調整系統配置,保障應用的效能。
6.Self-Resolved Hang
自處理的hang。被hang manager檢測到的已經不再存在的hang或死結。
Hang Manager
在診斷資料庫問題的時候,經常會遇到資料庫/進程hang住的問題。對於hang的問題,一般來說,常見的原因有以下兩種:
1.死結(cycle)。對於這種hang, 除非迴圈被打破,問題會永遠存在。
2.某個堵塞者(blocker)進程在持有了某些資源後堵塞了其他進程,其它進程無法擷取資源。
可以把blocker分為直接堵塞進程(immediate blocker)和根堵塞進程(root blocker)。而root blocker在通常情況下會處於兩種狀態。
(1)根堵塞進程處於空閑狀態,對於這種情況,終止這個進程能夠解決問題。
(2)根堵塞進程正在等待某些和資料庫無關的資源(例如:等待I/O),對於這種情況,終止這個進程也許能解決問題。但是,從資料庫的角度來講,這已經超出了資料庫的範疇。
Hang Manager是從10.2.0.1被引進的。主要用途是檢測和處理hang問題。隨著版本的增加,功能也不斷的被完善加強。但是,實際上從11.2.0.2開始,Hang Manager才實際開始解決hang問題,通過終止產生hang的根本會話或進程來實現。
Hang Manager只在RAC資料庫中生效。
預設情況下,hang manager不會終止一個執行個體或者將執行個體從叢集環境中剔除;也不會自動解決其檢測到的hang問題。目前也不能解決ASM hang問題。
從12.1.0.1開始,如果rac叢集中的QoS處於active狀態,hang manager會使用QoS提供的附加資訊來決定是否應該忽略或者解決一個hang問題。 如果QoS傾向於hang manager解決hang問題,hang manager會比平時使用更少的時間來檢測和處理hang問題,而不是延遲處理。
在12.1.0.1之前,hang只會在資料庫內部或者asm中被檢測。從12.1.0.1開始,hang manager會檢測資料庫和asm之間產生的hang。
當hang manager 解決hang問題時,會在alert日誌中給出一個ora-32701事件:
ORA-32701: Possible hangs up to hang ID=24 detectedIncident details in: /ee/oracle/oracle_base/diag/rdbms/orcl/orcl1/incident/incdir_1944098/orcl1_dia0_34930694_i1944098.trcDIA0 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 manager的基本步驟
1.分配一部分記憶體空間用於存放hanganalyze dump資訊。這部分記憶體空間在每個節點的資料庫執行個體上都存在
2.定期搜集hanganalyze dump資訊(本地和全域)
HM特性是針對RAC資料庫的特性,hanganalyze的層級包括本地和全域。另外,負責搜集這些dump資訊的後台進程是DIA0(這個進程從11g才被引入)。預設情況下每3秒鐘搜集本地層級hanganalyze dump, 每10秒搜集全域層級hanganalyze dump
3. 分析搜集到的dump資訊,並確認系統中是否存在hang
每個執行個體都會擁有自己的DIA0進程,負責完成本地的hang分析。但是,對於RAC資料庫,很多hang的情況會包含多個執行個體的進程。所以需要一個執行個體上的DIA0進程作為master,來對多個執行個體搜集到的資訊進行分析。對於11g版本,節點號最小的執行個體的DIA0進程會成為HM的master進程。當然,在執行個體層級發生了重新設定後,主(master)DIA0 進程會重新在存在的執行個體中重新被選舉出來
4. 利用分析的結果來解決hang問題。
hang manager資訊查看:
SQL> select * from v$hang_info;SQL> select * from v$hang_session_info;SQL> select * from gv$hang_statistics; INST_ID STATISTIC# NAME VALUE---------- ---------- --------------------------------------------- ---------- 1 0 number of deadlocks detected and ignored 0 1 1 number of hangs detected 0 1 2 number of local hangs 0 1 3 number of global hangs 0 1 4 number of transient hangs 0 1 5 hangs ignored due to high CPU on root‘s node 0 1 6 hangs ignored due to high IO on root‘s node 0 1 7 hangs ignored due to application contention 0 1 8 hangs ignored due to long running operations 0 1 9 hangs monitored due to archiving issues 0 1 10 hangs ignored due to archiving issues 0 1 11 hangs ignored, blocked by remote database 0 1 12 hangs ignored due to SQL parsing 0 1 13 hangs ignored due to dumping system state 0 1 14 hangs ignored, instance termination required 0 1 15 hangs ignored, only one active instance 0 1 16 number of explicitly resolved hangs 0 1 17 number of self-resolved hangs 0 1 18 total self-resolved hang time in seconds 0 1 19 minimum self-resolved hang time in seconds 0 1 20 maximum self-resolved hang time in seconds 0 1 21 number of HSC matched hangs 0 1 22 hangs resolved due to instance termination 0 2 0 number of deadlocks detected and ignored 0 2 1 number of hangs detected 0 2 2 number of local hangs 0 2 3 number of global hangs 0 2 4 number of transient hangs 0 2 5 hangs ignored due to high CPU on root‘s node 0 2 6 hangs ignored due to high IO on root‘s node 0 2 7 hangs ignored due to application contention 0 2 8 hangs ignored due to long running operations 0 2 9 hangs monitored due to archiving issues 0 2 10 hangs ignored due to archiving issues 0 2 11 hangs ignored, blocked by remote database 0 2 12 hangs ignored due to SQL parsing 0 2 13 hangs ignored due to dumping system state 0 2 14 hangs ignored, instance termination required 0 2 15 hangs ignored, only one active instance 0 2 16 number of explicitly resolved hangs 0 2 17 number of self-resolved hangs 0 2 18 total self-resolved hang time in seconds 0 2 19 minimum self-resolved hang time in seconds 0 2 20 maximum self-resolved hang time in seconds 0 2 21 number of HSC matched hangs 0 2 22 hangs resolved due to instance termination 046 rows selected.SQL>
Oracle Hang Manager