db2getsnapshotforlocksonjs数据库锁定快照数据库名称=JS数据库路径=D" />
搜档网
当前位置:搜档网 › db2 看死锁

db2 看死锁

db2 list applications for db tobacco show detail
db2 list applications for db qey_toba show detail
db2 "force application (1175)"
db2 怎么查死锁.怎么杀掉死锁进程?
关键字: suo
C:\>db2 get snapshot for locks on js

数据库锁定快照

数据库名称 = JS
数据库路径 = D:\DB2\NODE0000\SQL00001\
输入数据库别名 = JS
挂起的锁定 = 5
当前已连接的应用程序 = 1
当前正等待锁定的代理程序数 = 0
快照时间戳记 = 2007-09-04 12:54:33.121513

应用程序句柄 = 10
应用程序标识 = *LOCAL.DB2.070904045330
序号 = 00001
应用程序名 = db2taskd
CONNECT 授权标识 = ADMINISTRATOR
应用程序状态 = 连接已完成
状态更改时间 = 未收集
应用程序代码页 = 1208
挂起的锁定 = 0
总计等待时间(毫秒) = 未收集


应用程序句柄 = 9
应用程序标识 = *LOCAL.DB2.070904045329
序号 = 00001
应用程序名 = db2stmm
CONNECT 授权标识 = ADMINISTRATOR
应用程序状态 = 连接已完成
状态更改时间 = 未收集
应用程序代码页 = 1208
挂起的锁定 = 0
总计等待时间(毫秒) = 未收集


应用程序句柄 = 8
应用程序标识 = *LOCAL.DB2.070904045327
序号 = 00011
应用程序名 = javaw.exe
CONNECT 授权标识 = ADMINISTRATOR
应用程序状态 = UOW 正在等待
状态更改时间 = 未收集
应用程序代码页 = 1208
挂起的锁定 = 5
总计等待时间(毫秒) = 未收集

锁定列表
锁定名称 = 0x020010000D0080080000000052
锁定属性 = 0x00000000
发行版标志 = 0x40000000
锁定计数 = 1
挂起计数 = 0
锁定对象名 = 142606349
对象类型 = 行
表空间名 = USERSPACE1
表模式 = JS
表名 = US_CATALOG
方式 = X

锁定名称 = 0x02001000090080080000000052
锁定属性

= 0x00000000
发行版标志 = 0x40000000
锁定计数 = 1
挂起计数 = 0
锁定对象名 = 142606345
对象类型 = 行
表空间名 = USERSPACE1
表模式 = JS
表名 = US_CATALOG
方式 = X

锁定名称 = 0x01000000010000000100EA0056
锁定属性 = 0x00000000
发行版标志 = 0x40000000
锁定计数 = 1
挂起计数 = 0
锁定对象名 = 0
对象类型 = 内部变化锁定
方式 = S

锁定名称 = 0x5359535348323030DDECEF2841
锁定属性 = 0x00000000
发行版标志 = 0x40000000
锁定计数 = 1
挂起计数 = 0
锁定对象名 = 0
对象类型 = 内部方案锁定
方式 = S

锁定名称 = 0x02001000000000000000000054
锁定属性 = 0x00000000
发行版标志 = 0x40000000
锁定计数 = 2
挂起计数 = 0
锁定对象名 = 16
对象类型 = 表
表空间名 = USERSPACE1
表模式 = JS
表名 = US_CATALOG
方式 = IX



C:\>db2 list applications

授权标识程序 应用程序名 应用程序句柄 应用程序标识 数据库名称 代理序号
------------ -------------- -------------- ------------------------ ------------- ----------
ADMINIST db2taskd 10 *LOCAL.DB2.070904045330 JS 1
ADMINIST db2stmm 9 *LOCAL.DB2.070904045329 JS 1
ADMINIST javaw.exe 8 *LOCAL.DB2.070904045327 JS 1


在snapshot的第四段显示应用程序句柄为8的应用有锁存在,在其相应的锁定列表中显示锁定的表是US_CATALOG。
如果您确定是US_CATALOG表上发生了死锁,可以通过命令db2 "force application(8)"来杀掉该应用在数据库上
的连接。注意如果force命令导致该应用的事务回滚得话,force命令不能马上断开应用在数据库上的连接,而是
要等到回滚完成后才能断开该应用的数据库连接。

C:\>db2 list applications show detail
//list applications for database cmsbj3 show detail


如果DB2在Window上,则可以使用“控制中心”->实例->右键“应用程序”,可以看到当前的锁定情况,并且可以强行关闭某个进程,也可以显示“锁定链”。



1.DB2表锁定怎么解锁

https://www.sodocs.net/doc/d911687939.html,/jh/22/20020.html

2.DB2中怎么知道表的锁定情况:

https://www.sodocs.net/doc/d911687939.html,/jh/22/16766.html

1.
[精华] 请问各位高手我的db2表被锁定了,怎么解锁啊?

--------------------------------------------------------------------------------

https://www.sodocs.net/doc/d911687939.html, 作者:guoguo781201 发表于:2003-03-06 13:46:12
【发表评论】【查看原文】【DB2讨论区】【关闭】

db2 =>; get snapshot for locks on baan

Database Lock Snapshot

Database name = BAAN
Database path = /data/db2v5/NODE0000/SQL00001/
Input database alias = BAAN
Locks held = 37
Applications currently connected = 5
Agents currently waiting on locks = 0
Snapshot timestamp = 02-20-2003 09:39:33.337805

Application handle = 13
Application ID = *LOCAL.db2v5.030220011807
Sequence number = 0001
Application name = db2bp
Authorization ID = ROOT
Application status = UOW Waiting
Status change time = Not Collected
Application code page = 819
Locks held = 0
Total wait time (ms) = Not Collected


Application handle = 14
Application ID = *LOCAL.db2v5.030220013509
Sequence number = 0001
Application name = db2v5_srv6.1
Authorization ID = TSHEN
Application status = UOW Waiting
Status change time = Not Collected
Application code page = 819
Locks held = 35
Total wait time (ms) = Not Collected


怎么办啊?



--------------------------------------------------------------------------------
aura 回复于:2003-02-20 13:10:09

db2 force application all
db2 terminate


--------------------------------------------------------------------------------
guoguo781201 回复于:2003-02-20 13:37:27

谢谢aura
可以解释一下吗?


--------------------------------------------------------------------------------
aura 回复于:2003-02-20 13:41:34

不客气!共同进步嘛

force application all //强行终止所有连接
terminate //清除所有db2的后台进程

在db2ic中可查到相关详细信息


--------------------------------------------------------------------------------
guoguo781201 回复于:2003-02-20 14:52:44

这样就可以解锁了吗?


--------------------------------------------------

------------------------------
ddmmdd 回复于:2003-02-20 14:57:45

所有的连接都被中止了,当然锁也就没了。
其实你只需要将拿锁的连接force掉就行。


--------------------------------------------------------------------------------
Law 回复于:2003-02-20 15:10:00

你先用list applicat for database tobacco show detail 来看看应用底执行情况!


--------------------------------------------------------------------------------
guoguo781201 回复于:2003-02-20 18:36:18

db2>;force application all
db>;terminate
但是这个只能停止应用啊,还是有表被锁劳的啊。。。


--------------------------------------------------------------------------------
vlife 回复于:2003-02-20 20:13:35

没有一个应用对数据库操作,表也会锁吗?
锁的原因是应用对资源的占用冲突,没有应用就没冲突了。
force application all后list applications还有连接吗?


--------------------------------------------------------------------------------
大连老K 回复于:2003-02-21 08:30:31

实在不行db2stop算了


--------------------------------------------------------------------------------
iwin21cn 回复于:2003-02-26 11:06:00

force application(13) 就是杀掉13号进程
force application(14) 就是杀掉14号进程
OK了!
force application all是无奈之举


--------------------------------------------------------------------------------
iwin21cn 回复于:2003-02-26 11:07:21

force application(13) 就是杀掉13号进程
force application(14) 就是杀掉14号进程
OK了!
force application all是无奈之举


--------------------------------------------------------------------------------
yuly 回复于:2003-02-27 01:14:36

比如说我现在做INSERT或UPDATE,中途CTRL+C退出,然后去DROP这张表,肯定这时候DROP不掉,除非重启数据库,才可以,不知有谁能告诉我该怎么找到这个UPDATE或INSERT的进程,我想只要把进程找到,然后才可以用DB2 FORCE APPLICATION(进程号)的,而不要去重启数据库了 :roll:


--------------------------------------------------------------------------------
Law 回复于:2003-02-27 09:04:44

你进行CTRL+C后,数据库会自动回复啊


--------------------------------------------------------------------------------
yuly 回复于:2003-02-27 22:59:44

law,但数据库自己恢复是需要时间,如果我做很大的表的INSERT或UPDATE操作时,等待可能要很长的时间,因为后台INSERT 或 UPDATE进程要慢慢释放的,若我能立刻找到那个进程KILL掉,就能直接对该表操作了,有时候不得已要重新启动数据库,还要加个FORCE的参数 :?:


--------------------------------------------------------------------------------
vlife 回复于:2003-02-28 10:36:04

数据库是需要回滚的,这是数据

库保持一致性的一个手段,你在insert或者update的中间停掉,数据库当然需要回滚,最好的是等他回滚完。


--------------------------------------------------------------------------------
yuly 回复于:2003-02-28 22:05:02

但ORACLE里就有这样的功能,我用企业版管理工具立刻就能找到该SESSIONS,然后KILL掉,我想DB2里也应该有这样的功能的,有时候时间很急迫,不想等就是了 8)


--------------------------------------------------------------------------------
ddmmdd 回复于:2003-03-01 11:43:17

不管在那个数据中,都要回滚或者提交!数据库会自动作的,这是他的机制。你所碰到的问题,是你的应用写的太烂,不是一般的烂!


--------------------------------------------------------------------------------
heon1978 回复于:2003-03-02 10:19:46

表被锁劳可用:
db2 list indoubt transactions:查看
db2 list indoubt transactions with prompting:解除


--------------------------------------------------------------------------------
iwin21cn 回复于:2003-03-03 09:46:55

只有写过烂程序后才会写出好的程序出来,不要紧!有问题大家讨论!


--------------------------------------------------------------------------------
ddmmmm 回复于:2003-03-04 10:29:00

直接FORCE 掉 Application handle 的那个应用就好了 >


--------------------------------------------------------------------------------
mhxiaoyi 回复于:2003-03-06 13:16:35

引用:原帖由 "heon1978" 发表:
表被锁劳可用:
db2 list indoubt transaltions:查看
db2 list indoubt translations with prompting:解除


这个是不是错了?
list indoubt TRANSACTIONS???
terminate 能使锁的表解锁吗?
我们刚刚重起机器了,好无奈!!
够傻的,呵呵~~~~~~~~~~~~~~~~~~~~~`


--------------------------------------------------------------------------------
mhxiaoyi 回复于:2003-03-06 13:34:10

请问
db2 update monisor switches using lock on
db2 get snapshot for locks on yourdatdabasename
是不是不能对在客户端实现?


--------------------------------------------------------------------------------
大连老K 回复于:2003-03-06 13:43:07

引用:原帖由 "mhxiaoyi" 发表:
请问
db2 update monisor switches using lock on
db2 get snapshot for locks on yourdatdabasename
是不是不能对在客户端实现?

应该不会吧


--------------------------------------------------------------------------------
mhxiaoyi 回复于:2003-03-06 13:46:12

我试了,不可以的!!






原文链接:https://www.sodocs.net/doc/d911687939.html,/viewthread.php?tid=20020
转载请注明作者名及原文出处


2.
[精华] 在db2中如何知道表的锁情况

--------------------------------------------------------------------------------

http://www.chinaunix.n

et 作者:bbniu 发表于:2003-02-26 10:59:59
【发表评论】【查看原文】【DB2讨论区】【关闭】

在db2中如何知道表的锁情况
我创建了一个过程,执行后表好象被锁住了,不知如何才能解缩



--------------------------------------------------------------------------------
Law 回复于:2002-12-06 14:39:53

在你执行你的存储过程之前,执行命令打开锁的监视开光
db2 update monisor switches using lock on
然后执行你的存储过程,在执行存储过程期间的时候使用命令
db2 get snapshot for locks on db yourdatdabasename
就可以看见了你锁情况了!!


--------------------------------------------------------------------------------
Law 回复于:2002-12-06 14:40:43

错了命令打错了
db2 get snapshot for locks on yourdatdabasename




--------------------------------------------------------------------------------
vlife 回复于:2002-12-06 18:49:59

[这个贴子最后由vlife在 2002/12/06 06:52pm 编辑]

list applications for db **** show detail:可以看正在运行的程序有没有处于锁等待状态的


--------------------------------------------------------------------------------
Pythagoras 回复于:2002-12-07 04:38:56

在OS/390下,可以使用DIS DB(dbname) SPACENAM(spacename) LOCKS 命令来看


--------------------------------------------------------------------------------
guoguo781201 回复于:2003-02-20 18:12:25

如果知道被锁了,怎么解锁啊,求各位老大帮忙啊。。。
有老大教我
db2>;force application all
db>;terminate
但是这个只能停止应用啊,表还是锁劳的啊。。。


--------------------------------------------------------------------------------
mhxiaoyi 回复于:2003-02-21 09:26:24

db2 =>; update monisor switches using lock on
DB21034E 该命令被当作 SQL 语句来处理,因为它不是有效的“命令行处理器”命令。
在 SQL 处理期间,它返回:
SQL0104N 在 "ate monisor switches" 之后发现意外的记号 "using lock
on"。期望的记号可能包括:";"。 SQLSTATE=42601
什么意思?
不懂?


--------------------------------------------------------------------------------
大连老K 回复于:2003-02-21 09:36:02

语法错误
db2 update monitor switches using lock on


--------------------------------------------------------------------------------
Law 回复于:2003-02-22 16:50:04

我打错字了,sorry 你用db2=>;? update 看看可以知道详细使用情况


--------------------------------------------------------------------------------
iwin21cn 回复于:2003-02-26 10:59:59

force application(pID)
list application 看那个pID






原文链接:https://www.sodocs.net/doc/d911687939.html,/viewthread.php?tid=16766
转载请注明作者名及原文出处








相关主题