資料庫Hang住怎麼辦 - HANGANALYZE[final]

tolywang發表於2012-10-05

 
Oracle8.1.6之後才有了HANGANALYZE 命令,Oracle9i之後功能增強,提供在Oracle RAC叢集環境
的”cluster wide”資訊,這意味著將為所有的cluster中的session生成資訊,不管命令從哪個
instance發出的。
一般有三種使用HANGANALYZE的方法:
(1).會話級別
ALTER SESSION SET EVENTS 'immediate trace name HANGANALYZE level ';
例子:ALTER SESSION SET EVENTS 'immediate trace name HANGANALYZE level 10';
(2).單例項級別(以sysdba登入)
ORADEBUG hanganalyze
例子:
sqlplus  /  as  sysdba
SQL> ORADEBUG hanganalyze 10
備註: 如果因為Hang導致sqlplus都不能登入,可以使用:
sqlplus -prelim / as sysdba ,這時連線到的是SGA,而不是資料庫,沒有session被建立。
 
(3).叢集範圍級別(以sysdba登入)
sqlplus  /  as  sysdba
SQL> ORADEBUG setmypid
 SQL> ORADEBUG setinst all
 SQL> ORADEBUG -g def hanganalyze

其中Level的定義如下:
1-2:只有hanganalyze輸出,不dump任何程式
3:Level2+Dump處在IN_HANG狀態的程式
4:Level3+Dump處在等待鏈裡面的blockers(狀態為LEAF/LEAF_NW/IGN_DMP)
5:Level4+Dump處在等待鏈中的所有程式(狀態為NLEAF)
10 - Dump all processes (IGN state)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-747822/,如需轉載,請註明出處,否則將追究法律責任。

相關文章