當前位置:
首頁 > 最新 > DBA必備技能:資料庫掛起時進行轉儲分析診斷案例

DBA必備技能:資料庫掛起時進行轉儲分析診斷案例

在上周末培訓中,有同學問起:如何在資料庫掛起時進行診斷和分析?這裡就是這樣一個案例。分析、深入,解資料庫之疑難。

在 Oracle 資料庫的運行過程中,可能會因為一些異常遇到資料庫掛起失去響應的狀況,在這種狀況下,我們可以通過對系統狀態進行轉儲,獲得跟蹤文件進行資料庫問題分析;很多時候資料庫也會自動轉儲出現問題的進程或系統信息;這些轉儲信息成為我們分析故障、排查問題的重要依據。

本章通過實際案例的詳細分析,講解如何逐層入手、層層剖析的分析資料庫故障。

1.1 狀態轉儲的常用命令

當資料庫出現一些掛起狀態時,往往會嚴重影響到資料庫使用,進程級的問題影響範圍較小,而系統級的問題則會影響全局。

在出現資料庫系統或進程失去響應時,如果 SQL*Plus 工具仍然可以連接,可能視圖查詢沒有相應,但是可以通過 oradebug 工具來進行進程及系統狀態信息的轉儲,從而可以進行 Hang 分析。

DUMP 進程狀態可以使用:

alter sessions set events immediate trace name processstate level ;

或者使用:

oradebug setmypid

oradebug ulimit

oradebug dumpprocessstate

當診斷資料庫掛起時,可以使用 DUMP 命令轉儲整個系統狀態:

altersessions set events immediate trace name systemstate level ;

或:

oradebugsetmypid

oradebugulimit

oradebugdump systemstate

如果為了獲取全面一點的信息,可以使用 Level 10。

SQL> oradebug setmypid

SQL> oradebug unlimit

SQL> oradebug dump systemstate 10

另外如果系統掛起,無法用 SQL*Plus 連接,從 Oracle 10g 開始,可以使用 sqlplus -prelim 選項強制登錄,然後即可進行系統狀態信息轉儲:

sqlplus -prelim / as sysdba

oradebug unlimit;

oradebug dump systemstate 10

1.2 WAITED TOO LONG FOR A ROW CACHEENQUEUE LOCK! 案例

在一次客戶現場培訓中,客戶提出一個系統正遇到問題,請求我協助診斷解決,理論聯繫實踐,這是我在培訓中極力主張的,我們的案例式培訓業正好遇到了實踐現場。

問題是這樣的:

此前一個 Job 任務可以在秒級完成,而現在運行了數小時也無法結束,一直掛起在資料庫中,殺掉進程重新手工執行,嘗試多次,同樣無法完成。

客戶的資料庫環境為:

Oracle Database 10gEnterprise Edition Release 10.2.0.3.0 - 64bit Production

With thePartitioning, OLAP and Data Mining options

介入問題診斷首先需要收集數據,我最關注兩方面的信息:

1. 告警日誌文件,檢查是否出現過異常

2. 生成 AWR 報告,檢查資料庫內部的運行狀況

通常有了這兩部信息,我們就可以做出初步判斷了。

檢查資料庫的告警日誌文件,我們發現其中出現過一個如下錯誤:

>>> WAITED TOO LONG FOR A ROW CACHE ENQUEUELOCK! > WAITED TOO LONG FOR A ROWCACHE ENQUEUE LOCK! pid=212

System State dumped to trace file/opt/oracle/admin/eygle/udump/eygle_ora_2123.trc

分析這一類的轉儲文件,可以幫助我們快速定位和找到問題的根源。有些時候,在系統出現異常掛起或莫名的性能問題時,也可以通過手工轉儲來獲得系統的狀態信息輸出,幫助我們進行資料庫性能數據收集,進而分析可能的原因。

而通過這樣的 DUMP 文件,輔助我們上一節提到的 ass109.awk 腳本,則可以很容易的同一般用戶進行遠程的診斷和故障處理,以下是一個朋友在系統出現 Hang 住掛起時轉儲的狀態文件分析,通過分析結果我們可以清晰的判斷是歸檔的原因導致了系統出現 Library Cache Lock 和 Buffer Busy Waits 等等待:

通過這個簡單的分析結果,再結合原始跟蹤文件分析,非常有助於我們理解 Oracle 資料庫的的等待事件以及內部工作原理。

加入"雲和恩墨大講堂"微信群,參與討論學

關注公眾號,獲得後續精彩分享

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 推酷 的精彩文章:

開發者自述:我是如何理解決策樹的
如何優雅的使用 Vim
深入理解 FastCGI 協議以及在 PHP 中的實現
马化腾VS朱啸虎:自爆微信支付数据妥不妥当?
Pyenv 使用筆記

TAG:推酷 |

您可能感興趣

如何對分散式 NewSQL 資料庫 TiDB 進行性能調優
進行P2P理財必備的三項技能
AI賦能 手機智慧化轉型進行時
ACEMD之利用HTMD進行配體結合分析
MATLAB採集手機內置感測器數據進行實時演算法設計的方法
手機鈕一按,銀行可對資產配置進行智能化診斷和點評
MELISA設備可利用智能手機進行生物醫學測試
美研究者開發能夠利用智能手機進行生物醫學測試的MELISA設備
價值投資?如何進行資產配置
P2P網貸備案進行時 律合金融踐行合規衝刺備案
穩定胸痛患者通過高危斑塊檢測進行危險分層——PROMISE研究二次分析
MIT又出黑科技 為植入式醫療設備進行無線充電
NASA將進行無人機空域集成技術驗證試驗
ACEMD入門:利用HTMD進行項目實踐
如何使用Ensembl資料庫對基因變異進行分類
用腦電波控制智能假肢:如何利用深度學習技術進行EGG數據分類
將DOC文件格式轉換成PDF文件格式,並進行許可權設置
NASA摺疊機翼成功進行縮比飛行試驗
NASA分散式電力推進系統電動飛機即將進行首飛
Coicheck官方:技術問題已解決 現已恢復部分加密貨幣交易;僅不到2%消費者使用加密貨幣進行網上購物