【故障】cursor: pin S wait on X等待事件大量出現

浪漫雙魚發表於2011-09-05

問題描述:

EM裡面看到Concurrency等待的活動回話數比較高,系統有hang死風險

問題分析:

檢查了Oracle資料庫的告警日誌無任何錯誤。

檢視ash報告:

Top User Events

Event

Event Class

% Activity

Avg Active Sessions

cursor: pin S wait on X

Concurrency

92.42

13.88

CPU + Wait for CPU

CPU

2.53

0.38

inactive session

Other

2.17

0.33

 

SQL Id

SQL Text

dr5d0nwpa93f7

select vin into :b0 from v_cardepot_doc where jjdh=:b1

分析:發現大量cursor: pin S wait on X等待產生,而等待是sqlselect vin into :b0 from v_cardepot_doc where jjdh=:b1

為了查清楚等待事件產生的原因,使用oracle oradebug hanganalyze工具分析如下:

Chain 1 : :

    <1/88/23640/0x2e3179e8/905404/Streams AQ: qmn slave idle wait>

Chain 2 : :

    <1/94/2283/0x2e3142c8/479260/cursor: pin S wait on X>

Chain 3 : :

    <1/95/3246/0x2e319188/762088/No Wait>

Chain 4 : :

    <1/97/377/0x2e310ba8/901216/cursor: pin S wait on X>

Chain 5 : :

    <1/98/2980/0x2e315288/827636/cursor: pin S wait on X>

Chain 6 : :

    <1/100/50945/0x2e30bce8/487534/cursor: pin S wait on X>

Chain 7 : :

    <1/101/23319/0x2e30d488/892972/cursor: pin S wait on X>

Chain 8 : :

    <1/103/4990/0x2e3046c8/856140/cursor: pin S wait on X>

Chain 9 : :

    <1/105/35394/0x2e30e448/680074/cursor: pin S wait on X>

Chain 10 : :

    <1/106/14845/0x2e30fbe8/860208/cursor: pin S wait on X>

分析:從dump結果看,大量的等待事件並沒有被程式所阻塞。所以判斷直接殺掉這些程式此故障就解決了。

解決辦法:

分析後,判斷可能是由於網路或者其他原因導致客戶端程式到伺服器連線閃斷,造成session hang死情況,由於oracle的清理資源策略的緣故,所以導致大量死掉的session掛在系統上,而消耗大量的資源。

找應用確認後,發現一臺通過dblink連線查詢的一臺db死掉了,可見最初的分析是正確的。

綜述:直接殺掉所有客戶端的程式

ps –ef|grep ora|grep LOCAL=NO|awk ‘{print $2}’|xargs kill -9

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

相關文章