客服回覆範例 -- Dead Lock 問題處理
底下Sample為經過美編再重新匯整出來的實際案例。


Dear XXX:
XXX DB 在 13:26 發生Dead Lock,若需追蹤,請將 trace file 寄給我們分析,謝謝!
/u01/.............../prod_ora_17631.trc
best regards,
惟肯科技技術客服

trace file 夾檔。



XXX 您好:
由trace 中可得知是兩個session 互相佔用對方所需的資源 (session 6256 與 session 6524), 執行程式資訊如下:
Session id | 6256 |
---|---|
Current SQL | UPDATE table SET f1= :B1, f2 = :B2 WHERE f3 = :B3 AND f4 = :B4 AND f5 = :B1 |
Process id | 291 |
Session id | 6254 |
---|---|
Current SQL | UPDATE table SET f1= :B1, f2 = :B2 WHERE f3 = :B3 AND f4 = :B4 AND f5 = :B1 |
Process id | 72 |
從trace file 內容來看,互咬的SQL 是相同的,所以有可能是在同一時間執行相同的程式或是使用到共同的模組,結果處理的資料剛好互相被彼此咬住了,因此造成Dead Lock。
Dead lock的形成跟程式邏輯以及效能有點相關,有時是因為相同程式同時被執行,所進行的工作類似,但是卻是鎖定了彼此都需要的資料才造成的,有時是因為程式效能比較差,鎖定的時間比較久,就容易跟其他程式造成互鎖的狀況。一般而言被踢掉的那個使用者重新再執行一次即可順利完成,但若是常常發生dead lock,是可以進一步追查程式中是否有容易造成dead lock的情形。
best regards,
惟肯科技技術客服
