熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

系統Hang住時用oradebug分析的方法

2013-11-13 15:43:32  來源: Oracle 

  某個用戶做分析表的操作時進程被阻塞library cache lock引起阻塞的進程也就是普通的查詢該表的語句

  原因是有很多這個表相關的SQL在執行產生這方面的沖突分析的時候要修改相關的統計數據而統計數據對於SQL分析是有影響的如果一個SQL在執行過程中是不允許修改和表相關的一些信息的

  如果系統hang住了可以使用oradebug做一個HANGANALYZE來分析

  HANGANALYZE是系統級的分析屬於輕量級分析不會對系統產生影響

  例如做一個級的分析

  做的方法分兩部

  在SQLPLUS裡用SYS賬號

    oradebug setmypid

    oradebug hanganalyze

  之後將會生成一個trace報告例如以下內容

  ==============

  HANG ANALYSIS:

  ==============

  Open chains found:

  Chain : <sid/sess_srno/proc_ptr/ospid/wait_event> :

  <//xed//PX Deq: Join ACK>

   <//xedd//library cache pin>

  Chain : <sid/sess_srno/proc_ptr/ospid/wait_event> :

  <//xedb//No Wait>

  Chain : <sid/sess_srno/proc_ptr/ospid/wait_event> :

  <//xedc//No Wait>

  說明

  nodenum定義每個session的序列號

  sidsession的sid

  sess_srnosession的Serial#

  ospidOS的進程ID

  statenode的狀態

  adjlist表示blocker node

  predecessor表示waiter node

  示例中SID=的就是被HANG主的會話SID=就是阻塞者

  Sid=的這個進程掛死了但是他持有了library cache pin所以阻塞了殺掉(OSPID=)就解決問題了

  而後根據等待事件的信息具體原因具體分析

  HANGANALYZE報告裡的阻塞有可能是HANG住也有可能只是由於比較慢引起的所以在分析的時候可以做一個HANGANALYZE然後隔幾分鐘再做一次兩次對比著看如果是比較慢引起的兩次報告的情況會發生變化如果是HANG住了是不會變化的


From:http://tw.wingwit.com/Article/program/Oracle/201311/17196.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.