簡體   English   中英

在什么情況下會導致LockAcquisitionException和SQLCODE = -911,SQLSTATE = 40001,SQLERRMC = 68

[英]In what condition will cause LockAcquisitionException and SQLCODE=-911, SQLSTATE=40001, SQLERRMC=68

據我了解,當一個線程試圖更新被另一個線程鎖定的記錄行時,將發生LockAcquisitionException (如果我錯了,請糾正我)

所以我嘗試模擬如下:

我使用dbVisualizer鎖定一行記錄,然后使用應用程序對同一條記錄運行更新查詢。 最后,我只是因為原因代碼68而導致global transaction time out而不是LockAcquisitionException

因此,我認為我的理解是錯誤的。 LockAcquisitionException就不會發生LockAcquisitionException 可以建議或給出一些簡單的示例來創建LockAcquisitionException嗎?

由於鎖定超時,您將得到LockAcquisitionException(SQLCODE = -911 SQLERRMC = 68)。

比較dbViz和休眠狀態的操作可能沒有幫助,因為它們可能在jdbc級別使用不同的類/方法和設置,這可能會影響異常詳細信息。 重要的是,在Db2級別上,無論他們報告鎖定超時的異常名稱如何,都經歷過SQLCODE = -911和SQLERRMC = 68。

根據許多因素,您可以在諸如UPDATE或DELETE或INSERT或SELECT之類的語句(以及包括DDL和命令的其他語句)上獲得鎖定超時。

所有鎖定超時都有一個共同點:一個事務等待太長時間並回滾,因為另一個事務提交得不夠快。

鎖定超時診斷和避免鎖定超時是不同的主題。

可以根據選擇的設計(包括混合使用這些設置)在數據庫級別,連接級別或語句級別設置等待鎖定的時間長度。 您還可以通過調整數據庫參數(例如CUR_COMMIT,LOCK_TIMEOUT)以及在語句級別或連接級別調整隔離級別來調整Db2鎖定行為。

在考慮避免之前,確保准確的診斷是明智的。

在運行Db2-LUW v10.5.0.9時,請仔細研究此頁面以及所有相關鏈接:

https://www.ibm.com/support/knowledgecenter/zh-CN/SSEPGG_10.5.0/com.ibm.db2.luw.admin.trb.doc/doc/t0055072.html

有許多情況可能導致鎖定超時,因此最好確切地了解哪種情況與您的情況相關。

避免鎖沖突是配置和事務設計的問題,因此這是一個更大的話題。 該配置可以在Db2級別上,也可以在應用程序層上,或在兩者上都進行。

有時,錯誤會導致鎖定超時,例如,當應用程序服務器線程的數據庫連接被掛起,尚未提交且未被應用程序正確清除時,該錯誤會導致鎖定超時。

您應該診斷鎖定超時中的參與者。 在Db2-LUW上執行鎖沖突診斷的方法有多種,因此請選擇一種適合您的方法。

仍然可以在V10.5.0.9上運行的一種簡單診斷工具是使用Db2注冊變量DB2_CAPTURE_LOCKTIMEOUT = ON,盡管該方法已被棄用。 您可以即時設置此變量(並取消設置),而無需任何服務中斷。 因此,如果您有可重現的場景,導致SQLCODE = -911 SQLERRMC = 68(鎖定超時),則可以打開此變量,重復測試,然后關閉該變量。 如果打開了變量,並且發生了鎖定超時,Db2將編寫一個新的文本文件,其中包含有關鎖定情況下參與者的信息,其中顯示的詳細信息可以幫助您了解正在發生的事情,並可以讓您考慮解決問題的方法有足夠的事實。 您不希望永久設置此變量,因為如果鎖定超時,它可能會影響性能並填充Db2診斷文件系統。 因此,您必須小心。 在此頁面的知識中心中了解有關此變量的信息: https : //www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.regvars.doc/doc/r0005657.html您通過仔細研究這些文件的內容來診斷鎖定超時,盡管當然也需要了解這些細節。 這是常規的DBA活動。

另一種方法是將db2pdcfg -catch與自定義db2cos腳本一起使用,以確定在Db2拋出-911之后要做什么。 這需要腳本技巧,它使您可以准確地確定-911之后要收集的診斷信息以及將這些診斷信息存儲在何處。

另一種涉及大量工作但可能帶來更多收益的方法是使用event monitor for locking 該文檔位於: https : //www.ibm.com/support/knowledgecenter/zh-CN/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0054074.html請務必研究“相關概念”和“相關任務”頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM