Monday, January 02, 2012

Oracle 資料庫校能調校 -- 使用ADDM來解決Row Lock問題

By leverage "Oracle By Example - Chapter 10: Monitoring and Tuning the Database"
Oracle Database10g以後,最簡單對資料庫進行校能診斷的方法就是使用ADDM(Automatic Database Diagnostics Monitor)
在進行OEM (DB Console)主畫面之後,直接點選"Performance"頁籤,就可以看到資料庫執行校能的狀態
由畫面上可以看到有等待的事件--"Application"
點選"Application"就會進入到"Active Sessions Waiting"。在圖示的地方就可以很清楚地看到"enq TX: row lock contention"。我們裝傻一下。
往下捲到底層,可以看到"Additional Monitoring Links",點選"Snapshot"
接著按下"Create"
這時候會問你是否要手動建立snapshot(Are you sure you want to create a manual snapshot?)按下"Yes"。
當snapshot建立完成,按下右上角的"Database"頁籤
往下捲到"ADDM Performance Analysis",應該至少會出現2個警示,其中一個就會是"Row Lock Waits"
ADDM會自動定期(預設大約是1小時一次)地去檢視資料庫的執行校能並主動找出有問題的地方,然後顯示在這個地方
點選"Row Lock Waits"連結,可以再看到更細部的說明
點選Session ID再看細部資訊。其中可以看到那一個SQL指令造成Row Lock
此時,可以非常確定造成Row Lock 的原因了。按下"Performance"頁籤,並往下捲,點選"Additional Monitoring Links"下的"Blocking Sessions"
點選造成Row Lock的Session ID,再按下"Kill Session"
確認要 "Kill Session"的ID,按下"Yes"
到此,問題已完全解決。

No comments: