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

db2=>;getsnapshotforlocksonbaan

DatabaseLockSnapshot

Databasename=BAAN
Databasepath=/data/db2v5/NODE0000/SQL00001/
Inputdatabasealias=BAAN
Locksheld=37
Applicationscurrentlyconnected=5
Agentscurrentlywaitingonlocks=0
Snapshottimestamp=02-20-200309:39:33.337805

Applicationhandle=13
ApplicationID=*LOCAL.db2v5.030220011807
Sequencenumber=0001
Applicationname=db2bp
AuthorizationID=ROOT
Applicationstatus=UOWWaiting
Statuschangetime=NotCollected
Applicationcodepage=819
Locksheld=0
Totalwaittime(ms)=NotCollected


Applicationhandle=14
ApplicationID=*LOCAL.db2v5.030220013509
Sequencenumber=0001
Applicationname=db2v5_srv6.1
AuthorizationID=TSHEN
Applicationstatus=UOWWaiting
Statuschangetime=NotCollected
Applicationcodepage=819
Locksheld=35
Totalwaittime(ms)=NotCollected


怎么办啊?



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

db2forceapplicationall
db2terminate


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

谢谢aura
可以解释一下吗?


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

不客气!共同进步嘛

forceapplicationall//强行终止所有连接
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

你先用listapplicatfordatabaseyourdatabasenameshowdetail来看看应用底执行情况!


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

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


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

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


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

实在不行db2stop算了


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

forceapplication(13)就是杀掉13号进程
forceapplication(14)就是杀掉14号进程
OK了!
forceapplicationall是无奈之举


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

forceapplication(13)就是杀掉13号进程
forceapplication(14)就是杀掉14号进程
OK了!
forceapplicationall是无奈之举


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

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

表被锁劳可用:
db2listindoubttransaltions:查看
db2listindoubttranslationswithprompting:解除


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

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


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

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


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

引用: 原帖由"heon1978"发表:
表被锁劳可用:
db2listindoubttransaltions:查看
db2listindoubttranslationswithprompting:解除



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


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

请问
db2updatemonisorswitchesusinglockon
db2getsnapshotforlocksonyourdatdabasename
是不是不能对在客户端实现?


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

引用: 原帖由"mhxiaoyi"发表:
请问
db2updatemonisorswitchesusinglockon
db2getsnapshotforlocksonyourdatdabasename
是不是不能对在客户端实现?


应该不会吧


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

我试了,不可以的!!

你可能感兴趣的:(db2)