客服回覆範例 -- Dead Lock 問題處理

底下Sample為經過美編再重新匯整出來的實際案例。

問題描述

虛擬DBA (ODP) 於客戶 Oracle 的 alert log中發現有 dead lock訊息,自動發出 Alert Mail 通知管理人員以及上駟雲端客服

說明
雲端技術客服收到Alert Mail時,主動發出 mail 與客戶連繫。
雲端技術客服

Dear XXX:

XXX DB 在 13:26 發生Dead Lock,若需追蹤,請將 trace file 寄給我們分析,謝謝!
/u01/.............../prod_ora_17631.trc

best regards,
上駟科技技術客服

說明
客戶回傳trace file
 

trace file 夾檔。

客戶
說明
雲端技術客服分析 tracel file,將結果回傳給客戶。
雲端技術客服

XXX 您好:

由trace 中可得知是兩個session 互相佔用對方所需的資源 (session 6256 與 session 6524), 執行程式資訊如下:

Session id6256
Current SQLUPDATE table SET f1= :B1, f2 = :B2 WHERE f3 = :B3 AND f4 = :B4 AND f5 = :B1
Process id291

Session id6254
Current SQLUPDATE table SET f1= :B1, f2 = :B2 WHERE f3 = :B3 AND f4 = :B4 AND f5 = :B1
Process id72

從trace file 內容來看,互咬的SQL 是相同的,所以有可能是在同一時間執行相同的程式或是使用到共同的模組,結果處理的資料剛好互相被彼此咬住了,因此造成Dead Lock。

Dead lock的形成跟程式邏輯以及效能有點相關,有時是因為相同程式同時被執行,所進行的工作類似,但是卻是鎖定了彼此都需要的資料才造成的,有時是因為程式效能比較差,鎖定的時間比較久,就容易跟其他程式造成互鎖的狀況。一般而言被踢掉的那個使用者重新再執行一次即可順利完成,但若是常常發生dead lock,是可以進一步追查程式中是否有容易造成dead lock的情形。

best regards,
上駟科技技術客服

說明
結案!!

回上頁