日期:2014-05-16  浏览次数:20440 次

db2解除死锁实例

背景

在团队协作的开发环境下,难免会遇到多个成员同时访问一张表的情况。在断点调试时,又非常容易加事务的长连接,引发死锁。

下面实例讲解解锁过程。


解锁过程

①查找节点

解锁之前,需要知道数据库所在节点。
db2 => LIST NODE DIRECTORY


 节点目录


 目录中的条目数 = 3


节点 1 条目:


 节点名                          = NDE5DC7D
 注释                            =
 目录条目类型                    = LOCAL
 协议                            = TCPIP
 主机名                          = 192.168.1.11
 服务名称             = 50000


节点 2 条目:


 节点名                          = NDE5F473
 注释                            =
 目录条目类型                    = LOCAL
 协议                            = TCPIP
 主机名                          = 192.168.1.12
 服务名称             = 50001


节点 3 条目:


 节点名                          = NDE9BBAE
 注释                            =
 目录条目类型                    = LOCAL
 协议                            = TCPIP
 主机名                          = 192.168.1.132
 服务名称             = 50001

②登陆节点

db2 => attach to NDE5F473 user db2inst1 using db2inst1


   实例连接信息


 实例服务器             = DB2/LINUX 9.5.0
 授权标识       = DB2INST1
 本地实例别名           = NDE5F473
db2 => quit
DB20000I  QUIT 命令成功完成。

③获取锁快照

需要注意的是,这个命令不是db2环境下执行的,需要先执行quit命令退出。
C:\Documents and Settings\Administrator>db2 GET SNAPSHOT FOR locks on crms > f:/lock.txt


-------------------------------------------------
db2 => GET SNAPSHOT FOR locks on crms


            数据库锁定快照


数据库名称                               = CRMS
数据库路径                          = /home/db2inst2/db2inst2/NODE0000/SQL00
输入数据库别名                      = CRMS
挂起的锁定                      = 4
当前已连接的应用程序            = 13
当前正等待锁定的代理程序数      = 0
快照时间戳记                    = 2011-03-31 13:21:53.285610


应用程序句柄                               = 27151
应用程序标识                        = C0A8013D.K506.110331013833
序号                                = 00015
应用程序名 &nb