DB2鎖表或超時
一、場景
對數據表進行更新(查詢沒問題),錯誤提示如下:
SQLCODE=-911, SQLSTATE=40001, DRIVER=3.63.75
SQL0911N The current transaction has been rolled back because of a deadlock
這是DB2表死鎖或超時的錯誤:
二、解決方案
1、進入數據庫服務器后台,進入一個實例
su - 實例名(比如我們使用的是DB2inst)
2、使用命令get snapshot來查詢哪些進程鎖了哪些表
db2 get snapshot for locks on databasename
3、使用命令force來斷開這些進行了死鎖的進程。命令如下:
db2 "force application (handle id)"
4、使用命令list application查看是否已經斷開了哪些進行了死鎖的進程。命令如下:
db2inst1@HOST1:db2 list applications
查看是否所有相關的進程都停止,若還有沒殺掉的,再次殺掉即可。
PS:如果確定殺掉所有進程沒有影響,可以殺掉所有進程,命令如下:
db2 "force application all"
