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

应用程序名                          = db2jcc_application

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = UOW 正在等待

状态更改时间                        = 未收集

应用程序代码页                             = 1208

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 26657

应用程序标识                        = *LOCAL.DB2.110331002136

序号                                = 00001

应用程序名                          = db2taskd

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = 连接已完成

状态更改时间                        = 未收集

应用程序代码页                             = 1386

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 27150

应用程序标识                        = C0A8013D.K406.110331013832

序号                                = 00014

应用程序名                          = db2jcc_application

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = UOW 正在等待

状态更改时间                        = 未收集

应用程序代码页                             = 1208

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 26676

应用程序标识                        = C0A80169.I405.10EAC1004108

序号                                = 00003

应用程序名                          = QuestCentral.exe

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = UOW 正在等待

状态更改时间                        = 未收集

应用程序代码页                             = 1386

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 26656

应用程序标识                        = *LOCAL.DB2.110331002135

序号                                = 00001

应用程序名                          = db2stmm

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = 连接已完成

状态更改时间                        = 未收集

应用程序代码页                             = 1386

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 26655

应用程序标识                        = C0A80169.G605.10EAC1002623

序号                                = 00006

应用程序名                          = QuestCentral.exe

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = UOW 正在等待

状态更改时间                        = 未收集

应用程序代码页                             = 1386

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 27201

应用程序标识                        = 192.168.1.18.18183.110331014446

序号                                = 00039

应用程序名                          = db2jcc_application

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = UOW 正在等待

状态更改时间                        = 未收集

应用程序代码页                             = 1208

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 27148

应用程序标识                        = C0A8013D.K206.110331013830

序号                                = 00016

应用程序名                          = db2jcc_application

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = UOW 正在等待

状态更改时间                        = 未收集

应用程序代码页                             = 1208

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 26773

应用程序标识                        = C0A8013D.J805.110331005614

序号                                = 00003

应用程序名                          = db2jcc_application

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = UOW 正在等待

状态更改时间                        = 未收集

应用程序代码页                             = 1208

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 28266

应用程序标识                        = 192.168.1.56.39691.110331051526

序号                                = 00001

应用程序名                          = db2bp.exe

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = 连接已完成

状态更改时间                        = 未收集

应用程序代码页                             = 1386

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 28292

应用程序标识                        = 192.168.1.56.64523.110331052144

序号                                = 00001

应用程序名                          = db2jcc_application

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = UOW 正在等待

状态更改时间                        = 未收集

应用程序代码页                             = 1208

挂起的锁定                      = 4

总计等待时间(毫秒)            = 未收集

锁定列表

锁定名称                       = 0x0600030A1100A0FF0400000052

锁定属性                       = 0x00000008

发行版标志                     = 0x40000000

锁定计数                       = 1

挂起计数                       = 0

锁定对象名                     = 21468545041

对象类型                       = 行

表空间名                       = TABLESPACE_IDX

表模式               = DB2INST1

表名                 = TMP_AC_ROLE

方式                           = X

锁定名称                       = 0x5359535348323030DDECEF2841

锁定属性                       = 0x00000000

发行版标志                     = 0x40000000

锁定计数                       = 1

挂起计数                       = 0

锁定对象名                     = 0

对象类型                       = 内部方案锁定

方式                           = S

锁定名称                       = 0x53514C4445464C5428DD630641

锁定属性                       = 0x00000000

发行版标志                     = 0x40000000

锁定计数                       = 1

挂起计数                       = 0

锁定对象名                     = 0

对象类型                       = 内部方案锁定

方式                           = S

锁定名称                       = 0x0600030A000000000000000054

锁定属性                       = 0x00000000

发行版标志                     = 0x40000000

锁定计数                       = 1

挂起计数                       = 0

锁定对象名                     = 2563

对象类型                       = 表

表空间名                       = TABLESPACE_IDX

表模式               = DB2INST1

表名                 = TMP_AC_ROLE

方式                           = IX

应用程序句柄                               = 27147

应用程序标识                        = C0A8013D.K106.110331013829

序号                                = 00017

应用程序名                          = db2jcc_application

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = UOW 正在等待

状态更改时间                        = 未收集

应用程序代码页                             = 1208

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 27725

应用程序标识                        = C0A80169.IB06.10EAC1030658

序号                                = 00003

应用程序名                          = QuestCentral.exe

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = UOW 正在等待

状态更改时间                        = 未收集

应用程序代码页                             = 1386

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 26659

应用程序标识                        = *LOCAL.DB2.110331002138

序号                                = 00001

应用程序名                          = db2evmg_DB2DETAILDEA

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = 连接已完成

状态更改时间                        = 未收集

应用程序代码页                             = 1386

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 27718

应用程序标识                        = C0A80169.IA06.10EAC1030548

序号                                = 00010

应用程序名                          = QuestCentral.exe

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = UOW 正在等待

状态更改时间                        = 未收集

应用程序代码页                             = 1386

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 27152

应用程序标识                        = C0A8013D.K606.110331013834

序号                                = 00013

应用程序名                          = db2jcc_application

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = UOW 正在等待

状态更改时间                        = 未收集

应用程序代码页                             = 1208

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

应用程序句柄                               = 26658

应用程序标识                        = *LOCAL.DB2.110331002137

序号                                = 00001

应用程序名                          = db2wlmd

CONNECT 授权标识                           = DB2INST1

应用程序状态                        = 连接已完成

状态更改时间                        = 未收集

应用程序代码页                             = 1386

挂起的锁定                      = 0

总计等待时间(毫秒)            = 未收集

④解锁

根据分析,我们发现用户(192.168.1.56)及其应用程序句柄(28292),锁定了TMP_AC_ROLE表。联系相关人员之后,将其数据库链接关闭,以解除锁。

db2 => force application(28292)

DB20000I  FORCE APPLICATION命令成功完成。

DB21024I  该命令为异步的,可能不会立即生效。

至此,一般情况的死锁就搞定了。如果有多个应用锁定了表,就一个一个的force即可。祝好运!

db2解除死锁实例

时间: 2024-10-11 12:20:16

db2解除死锁实例的相关文章

db2解除死锁

db2 get dbm cfg db2 get dbm cfg|grep  lock 查看锁定信息快照是否打开,如果没有打开使用以下命令打开 update dbm cfg using dft_mon_lock on(实例级别) update monitor switches using lock on(会话级别) 用如下命令取得快照信息 get snapshot for locks on sample 可以快照信息 db2 杀掉进程 db2 "force application(63765)&q

Atitit.线程 死锁 跑飞 的检测与自动解除 与手动解除死锁 java c# .net php javascript.

Atitit.线程 死锁 跑飞 的检测与自动解除 与手动解除死锁 java c# .net php javascript. 1. 现象::主程序卡住无反应,多行任务不往下执行 1 2. 原因::使用jv jprofile查看线程,原来俩个线程死锁了.. 1 3. Java的缺点,默认不能自动解除死锁 1 4. 自动检测与解除死锁::使用看门狗watchdog 2 4.1. 死锁检测算法(太麻烦,不推荐) 2 4.2. 硬件看门狗 2 4.3. 软件看门狗的实现--TIMER 2 4.4. LIN

DB2重启数据库实例

DB2重启数据库实例时,有时停止实例会失败,此时需要先确认没有应用链接数据库,然后再关闭数据库实例,并重新启动. 1.查看是否有活动的链接 命令:db2 list applications for db db_name 发现有两个活动链接,此时需要将链接进行关闭. 2.关闭连接 命令:db2 force application all 3.再执行一次步骤1中的命令,查看链接是否全部关闭. 4.执行停止实例命令 命令:db2stop 注意:命令中没有空格 5.执行实例启动命令 命令:db2star

C#中lock死锁实例教程

这篇文章主要介绍了C#中lock死锁的用法,对于共享资源的访问及C#程序设计的安全性而言,有着非常重要的意义!需要的朋友可以参考下 链接:http://www.jb51.net/article/54309.htm 在c#中有个关键字lock,它的作用是锁定某一代码块,让同一时间只有一个线程访问该代码块,本文就来谈谈lock关键字的原理和其中应注意的几个问题: lock的使用原型是: ? 1 2 3 4 lock(X) {   //需要锁定的代码.... } 首先要明白为什么上面这段话能够锁定代码

DB2建表实例

CREATE TABLE SEAT_[].TM_SEAT_CONDITION(CON_ID INTEGER NOT NULL,AIRLINE VARCHAR(3) NOT NULL,FLT_REG VARCHAR(5) NOT NULL, SEATS VARCHAR(2000) NOT NULL,ATTRIBUTE VARCHAR(4),FAULT_TYPE VARCHAR(2),REASON VARCHAR(100),EFFECTIVE_DATE DATE NOT NULL,EXPIRY_DA

互斥锁 形成死锁实例

#include <iostream> #include <mutex> #include <thread> std::mutex coutMutex; int main(){ std::thread t([]{ std::cout << "Still waiting ..." << std::endl; std::lock_guard<std::mutex> lockGuard(coutMutex); std::

MySQL死锁问题实例分析及解决方法

MySQL死锁问题的相关知识是本文我们主要要介绍的内容,接下来我们就来一一介绍这部分内容,希望能够对您有所帮助. 1.MySQL常用存储引擎的锁机制 MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-level locking)或表级锁,默认为页面锁 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁 2.各种锁特点 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低 行级锁

死锁产生的原因和必要条件及预防死锁的方法及死锁的检测与解除

产生死锁的原因和必要条件: 产生死锁的原因: 1.竞争资源.当系统中供多个进程共享的资源如打印机,公用队列等,其数目不足以满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁. 2.进程推进顺序非法.进程在运行过程中,请求和释放资源的顺序不当,也同样会导致产生进程死锁. 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁.其次,进程运行推进顺序与速度不同,也可能产生死锁. 产生死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个

Java多线程死锁的产生实例

死锁产生的四个必要条件: (1) 互斥条件:一个资源每次只能被一个进程使用.(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放.(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺.(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系. 示例:死锁实例 package cn.thread.lock; public class ThreadLock implements Runnable{ private static Object o1=ne