2011-12-02 82 views
1

我有一個JDBC DB2error,操作超時或死鎖,錯誤號爲-913。DB2操作超時或死鎖

場景:操作1執行更新表中的一行,可能需要2分鐘才能完成操作。

操作2試圖通過報價單號讀取同一行。

有一個默認鎖定CS(transaction_read_commited)。 60秒後我看到'操作超時或死鎖', 這是超時還是死鎖情況?

有沒有什麼辦法可以通過增加連接超時或鎖定超時來避免死鎖?

建議各地將欣賞..

回答

1

您可以通過修改locktimeout參數來增加鎖定超時。

db2 update db cfg using locktimeout 180 

這改變了等待2分鐘。你也可以把-1,無限期地等待。

欲瞭解更多信息http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.config.doc/doc/r0000329.html

的情況是不是死鎖,因爲操作2並無持有任何資源,它只是試圖訪問該行被更新。

+0

檢查當前超時: 'db2 get db cfg for [數據庫名]''' 其中[databasename]是數據庫的名稱 – mstaessen

0

2分鐘排?他們試圖去做什麼?

無論如何,是的,這是一個超時問題 - 您的操作2正在使用(假定)默認超時。這可以設置每個文件,並且(至少對於iSeries,並且可能對於所有版本的DB2)默認爲60秒。

我不知道,如果這個值可以從SQL設置單獨 - 你必須使用i系列本機命令CHGPFCHGLF(放慢參數WAITFILE/WAITRECORD,在),如果這是你的平臺(你沒沒有指定)。我並不真的推薦它 - 看看你是否無法更快地運行更新語句......或者,看看如何改變你的架構以允許某種方式。

+0

該操作可能會加載一個blob,如果傳輸速度很慢,則2分鐘可能正常。 – AngocA