1.現象
資料庫執行個體不能響應用戶端的發起的請求。
2.種類
-Oracle的進程在等待某個資源或事件
-Oracle Process Spins,所謂Spin,就是指Oracle進程中的代碼在執行某個過程時,陷入迴圈。在v$session視圖中,往往可以看到Hang住的會話
一直處於"ACTIVE"狀態.
3.從故障範圍來看,無響應故障可以分為以下幾種情況:
-單個或部分會話Hang住
-單個資料執行個體Hang住
-OPS或RAC中的多個執行個體或所有執行個體都Hang住
4.無響應故障成因分析
-資料庫主機負載過高,嚴重的超過主機承受能力
--應用設計不發,資料效能低下,活動會話數大量增加
--主機記憶體嚴重不足,引起大量的換頁
-日常維護不當
--歸檔日誌的儲存空間滿
--對DML操作比較多的大表進行move,增加外鍵約束
--不正確的資源計劃配置
-Oracle資料庫的Bug
-其他方面的一些原因
--如RAC資料庫中,如果一個節點退出或加入RAC的過程中,當進行Resource Reconfiguration時,會使系統凍結一段時間
5.無故障處理流程
-確認系統的影響範圍
-同時詢問系統維護和開發人員,受影響的系統在出現故障前是否有過變動
包括主機、硬體、作業系統、網路、資料庫及應用
-為了避免由於網路、資料庫監聽或用戶端因素影響分析,登入到主機上進行操作
-如果不能登入主機,嘗試關閉業務系統,重啟主機,監控主機資源
-登入主機後,先用top,topas等命令查詢系統CPU使用,實體記憶體,虛擬內在的使用,IO使用等情況
-使用SQLPLUS串連資料,使用gdb,dbx等debugger工具對資料庫進行system state dump;使用strace truss等工具檢查異常進程的系統調用
使用用pstack,procstack等工具察看異常進程的call stack等
6.使用sqlplus串連上資料後,進行hanganalyze,system state dump等操作;檢查等待事件,異常會話等正在執行的SQL等
7.找到故障原因,盡量收集資料
8.如急須恢複,可通過kill會話,重啟動資料庫執行個體等方式,先恢複應用
9.根據最終診斷結果,對資料庫升級打補丁或者修改應用等方式從根本上解決問題。