等待事件快速定位診斷

yezhibin發表於2010-12-31
        當使用者提交其某個session發生等待事件,通常是通過v$session_wait檢視是

等待什麼事件,根據等待事件的種類,查詢相應造成該session等待的其他session

資訊。面對這些問題,我習慣用oradebug dump systemstate命令來診斷,能夠很

直接找到blocking session。

       具體步驟:

1、檢視blocked session 對應的PID
 
SQL>select pid from v$process
           where addr in (select paddr from v$session
                                       where sid=blocked_session);

2、SQL>oradebug setmypid
      SQL>oradebug dump systemstate 266
                等待幾分鐘
      SQL>oradebug dump systemstate 266
      SQL>oradebug tracename_file

3、檢視trace檔案,查詢步驟1 PID資訊“PROCESS PID"
       可以知道當前blocked session的等待資訊是什麼,提取handle address資訊

4、在跟蹤檔案中查詢handle address,獲得對應的PROCESS PID資訊,

5、我們通過獲得的PID資訊,找出blocking session的SID,從而進一步進行分析。

SQL>select sid from v$session
           where paddr=(select addr from v$process
                                      where pid=xxxx)。
 


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

相關文章