首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > IBM DB2 >

关于数据库死锁的有关问题,

2012-03-20 
关于数据库死锁的问题,求助!由于实时对数据库进行新增操作,在某一时刻发生死锁,持续五分钟,报的错误如下:C

关于数据库死锁的问题,求助!
由于实时对数据库进行新增操作,在某一时刻发生死锁,持续五分钟,报的错误如下:
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/AIX64] SQL0911N The current transaction has been rolled back because of a deadlock or timeout. Reason code "68". SQLSTATE=40001
请高手分析一下!


[解决办法]
一般死锁不可能在发生了5分钟后才发现,除非你的数据库死锁监控间隔参数调整了,通常这个参数是不会被修改的。这样的事情我估计是由于你的所等待造成的(你的锁定超时时间上限为300)。当然是你的程序逻辑有问题才导致这个现象发生,那么怎么找到是哪一个程序持有了锁而不释放呢?

1.重新执行你的应用
2.db2 list application show detail,使用此命令可以看到lock-wait状态的应用程序
3.db2 get snapshot for application agentid <>,把处于lock-wait状态的应用程序id放在见括号位置,使用这个命令可以看到该程序等待的应用程序id,继续使用命令3进行跟踪即可
[解决办法]
我们经常碰到,你查一下代码中可有大事务存在,比如删除全表这样的操作。一般自己不显式开启事务的话,是不会出现死锁的,只有可能是处理超时。

热点排行