
先定位一下是哪个程序句柄导致的死锁。方法一、查看db2diaglog文件找到DeadLockorLocktimeout死锁或锁超时信息db2forceapplication(句柄ID)直接结束进程即可。方法二、DB2快照信息1、看一下DB2快照信息db2getsnapshotforlocksonsample可以得到类似信息:数据库锁定快照数据库名称=SAMPLE数据库路径=D:\IBM\DB2\NODE0000\SQL00001\输入数据库别名=SAMPLE挂起的锁定=8当前已连接的应用程序=2当前正等待锁定的代理程序数=1应用程序句柄=54应用程序标识=LOCALDB2140304192925序号=00001应用程序名=db2bpexeCONNECT授权标识=DB2ADMIN应用程序状态=锁定等待应用程序代码页=1208挂起的锁定=4总计等待时间(毫秒)=247867锁定列表锁定名称=0x5359534C564C3031DDECEF2841锁定属性=0x00000000发行版标志=0x40000000锁定计数=1挂起计数=0锁定对象名=2312对象类型=行表空间名=IBMDB2SAMPLEREL表模式=DB2ADMIN表名=TEST方式=IX查看锁定的详细信息:db2getsnapshotforlocksforapplicationagentid1728----(1728是句柄ID)3、观察命令db2listapplications的输出查看应用程序的状态是否有锁定等待(Lock-wait)状态出现。执行命令listapplicationsfordbsampleshowdetail;4、db2forceapplication(句柄ID)直接结束进程即可。
一个事务对数据加了S锁之后,对数据只能进行读 *** 作,在释放对数据的S锁之前,其他事务可以且只能给该数据加S锁。
在T2请求Xlock
A之前,T2已经请求过了Slock
A,其他事务在T2释放对A的S锁之前只能给A加S锁,所以T1因为加X锁失败而进入等待,而T2因为之前的S锁为释放再加X锁导致加锁失败而进入等待
你asp里面的数据库连接打开之后没有及时关闭,到一定量的时候就会自动锁死。主要原因就在这里。你可以检查一下,及时释放recordset对象和connection对象一般就可以解决这个问题。
ldb文件是在打开数据库连接的时候就出现的,和访问者多少没有关系。
另外有时间的时候压缩一下数据库也可以提高一些性能。
以上就是关于DB2数据库发生死锁了怎么办全部的内容,包括:DB2数据库发生死锁了怎么办、数据库死锁问题、网站上的access数据库总是被锁死!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)