Oracle 11g 新特性 – HM(Hang Manager)簡介
在這篇文章中我們會對Oracle 11g 新特性—hang 管理器(Hang Manager) 進行介紹。我們需要說明,HM 只在RAC 資料庫中存在。
在我們診斷資料庫問題的時候,經常會遇到一些資料庫/程式 hang住的問題。對於hang的問題,一般來說,常見的原因有以下兩種。
死鎖(cycle)。對於這種hang, 除非迴圈被打破,問題會永遠存在。
某個堵塞者(blocker) 程式在持有了某些資源後堵住了其他程式。當然,根據堵塞的情況,我們可以把blocker
分為直接堵塞程式(immediate blocker)和根堵塞程式(root blocker)。而root blocker 在通常情況下會處於兩種狀態。
2.1 根堵塞程式處於空閒狀態,對於這種情況,終止這個程式能夠解決問題。
2.2 根堵塞程式正在等待某些和資料庫無關的資源(例如:等待I/O),對於這種情況,終止這個程式也許能解決問題。但是,從資料庫的角度來講,這已經超出了資料庫的範疇。
而從資料庫的角度來講, oracle有幾種死鎖的發現機制。 在這篇文章中我們會介紹11g RAC的新特性 hang管理器。hang 管理器的基本步驟是。
1.分配一部分記憶體空間用於存放hang analyze dump 資訊。
2.定期蒐集hang analyze dump資訊(本地和全域性)
3. 分析蒐集到的dump資訊,並確認系統中是否存在hang。
4. 利用分析的結果來解決hang問題。
接下來,我們對每個步驟進行具體的介紹。
步驟1: ORACLE 會分配一部分記憶體空間,我們稱之為 hang analysis
cache,用來存放蒐集的hang analyze dump i資訊。這部分記憶體空間在每個節點的資料庫例項上都存在。
步驟2:oracle 會定期蒐集hang
analyze 資訊,由於,HM特性是針對RAC資料庫的特性,hang analyze的級別會包括本地和全域性。另外,負責蒐集這些dump 資訊的後臺程式是DIA0(這個程式從11g才被介紹)。預設情況下每3秒鐘蒐集本地級別hang analyze dump, 每10 秒蒐集全域性級別hang analyze dump。
步驟3:因為,每個節點都會蒐集hang
analyze dump 資訊,那麼,意味著每個例項都會擁有自己的DIA0程式,負責完成本地的hang 分析。但是,對於RAC資料庫,很多hang的情況會包含多個例項的程式。所以,我們需要一個例項上的DIA0 程式作為master,來對多個例項蒐集到的資訊進行分析。對於11g版本,節點號最小的例項的DIA0程式會成為HM的master程式。當然,在例項級別發生了重新配置後,主(master)DIA0 程式會重新在存在的例項中重新被選舉出來。
對於hang的問題,HM採用以下的機制來進行檢測,當HM分析過幾個hang analyze dump(每30秒進行一次分析,至少經過三次分析)後,就會發現有一些程式之間存在著等待關係(我們可以稱之為open chain),而且在這段時間之內沒有任何的改變(例如,一直等待相同的等待事件),那麼,我們就可以懷疑,這些程式之間出現了hang的情況。而在進一步的驗證之後,的確發現這些程式之間存在著等待關係,那麼就會找到這個等待鏈(open chain)的根阻塞程式,並嘗試通過終止阻塞程式的方式來解決這個hang.當然,對於死鎖(dead lock)這種情況,我們採用的方式是,終止等待環中的一個程式。下面的圖形說明了以上的基本邏輯。
步驟4: 在確認hang的確發生之後,根據hang的型別選擇對應的解決方案。對於HM 來說,如果這個hang線管的程式滿足以下條件之一,那麼HM就無法解決這個hang.
1. 除資料庫以外的其他層面的程式也和這個hang相關,例如:asm例項的程式。
2. 是由於使用者應用層面導致的,例如:TX鎖。
3. 並行查詢
4. 需要使用者手動干預。例如:阻塞程式在等待“log file switch ”(這種等待很可能是由於歸檔目錄對應的filesystem空間不足導致的。即使HM中知道了阻塞程式,hang的情況也無法得到解決)。
如果,hang是HM無法解決的型別,那麼HM會繼續跟蹤這個問題。
而對於HM能夠解決的問題,其解決的辦法就是終止根阻塞程式。但是,如果這個阻塞程式是oracle 的主要後臺程式,終止它就會導致例項crash。所以,HM在解決hang的時候,也存在解決範圍。這個範圍是由隱含引數"_hang_resolution_scope" 控制的,這個引數可以有三個值off(預設值,也就是說HM不會去解決hang),process(允許HM終止阻塞程式,如果該程式不是主要的後臺程式),instance(允許HM終止阻塞程式,即使該程式是主要的後臺程式。終止該程式會導致例項終止)。
最後,我們對和HM 相關的一些引數和trace 檔案進行簡單的介紹。
引數:
_hang_resolution=TRUE 或者 FALSE。這個引數用於控制HM是否解決hang。
_hang_resolution_scope=OFF,PORCESS或者 INSTANCE。這個引數用於控制HM解決問題的範圍。
_hang_detection= <number>。 HM檢測hang的時間間隔,預設值為30(秒)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22990797/viewspace-1966986/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle:19c 新特性——Memoptimized Rowstore 簡介OracleZed
- Oracle 11g DG新特性--Automatic block repairOracleBloCAI
- 新特性:/dev/shm對Oracle 11g的影響devOracle
- Oracle 11g 新特性:只讀表(Read-only)Oracle
- ES2015新特性簡介
- ECMAScript 2020(ES11)新特性簡介
- ECMAScript 2021(ES12)新特性簡介
- ECMAScript 2018(ES9)新特性簡介
- ECMAScript 2019(ES10)新特性簡介
- ECMAScript 2017(ES8)新特性簡介
- ECMAScript 2016(ES7)新特性簡介
- oracle 11g 新特性之動態繫結變數窺視(一)Oracle變數
- oracle 11g 新特性之動態繫結變數窺視(二)Oracle變數
- Oracle 11g新特新--SQL Test Case BuilderOracleSQLUI
- Oracle 11g dataguard 配置簡約步驟Oracle
- Oracle Text簡介Oracle
- Oracle PSU 簡介Oracle
- Oracle:srvctl 簡介Oracle
- Oracle:PGA 簡介Oracle
- 【kingsql分享】Oracle Database 19c的各種新特性介紹SQLOracleDatabase
- 新特性 Hook 簡述Hook
- TiDB 5.0.0新特性介紹TiDB
- 【kingsql分享】Oracle Database 20c 十大新特性介紹SQLOracleDatabase
- Oracle merge 與 PG新特性 UPSERTOracle
- Oracle:RAC 程式簡介Oracle
- Oracle Data Guard簡介Oracle
- Oracle 12c新特性--ASMFD(ASM Filter Driver)特性OracleASMFilter
- 開工大吉:Oracle 18c已經發布及新特性介紹Oracle
- [譯] Chrome 71 新特性介紹Chrome
- AnalyticDB for PostgreSQL 6.0 新特性介紹SQL
- Apache Cassandra 4.0新特性介紹Apache
- Angular 8的新特性介紹Angular
- webpack4新特性介紹Web
- 【IDL】IDL 8.4新特性介紹
- JavaScript 6 的新特性介紹JavaScript
- Oracle 12C新特性-History命令Oracle
- Oracle 12C新特性In-MemoryOracle
- Oracle 12c 兩個新特性Oracle
- 1 Oracle Database 19c 新特性OracleDatabase