解决“SQL0911N 因为死锁或超时 ”的心得体会

最近在测试机器上安装DB2后  同事访问出现一些死锁的问题..

由于数据比较大,有时候造成ROLL BACK 回滚时间超长..
[IBM][CLI Driver][DB2/6000] SQL0911N  因为死锁或超时,当前事务已被回滚。原因码为 "68"。  SQLSTATE=40001
或者是
[IBM][CLI Driver][DB2/6000] SQL0911N  因为死锁或超时,当前事务已被回滚。原因码为 "2"。  SQLSTATE=40001

查找原因和解决问题的方法和步骤,与大家共享:

可以适当调整数据库参数 LOCKLIST,MAXLOCKS,LOCKTIMEOUT,DLCHKTIME
  参数说明:
  LOCKLIST就是锁资资源大小,实际上就是以KB为单位的内存。
  MAXLOCKS是一个应用程序实际使用的锁资源所占用的LOCKLIST的比例,当超过这个比例时,锁就会产生升级。
  LOCKTIMEOUT锁等待超时时间,以秒为单位。当应用程序提出所资源申请时,如果超过了这个时间而没有得到就会产生锁定超时。
  DLCHKTIME是检测死锁的时间间隔,以毫秒为单位。


感觉除了调整以上参数外,优化存储过程也是需要的,在工作过程中发现经常因为存储过程调用时间上的不合理,互相抢资源造成互斥死锁.


调整参数后可以监视实例和数据库的运行状况               
attach to NODE NAME user db2admin(administrator id)
打开快照开关:
  update monitor switches using BUFFERPOOL on lock on sort on statement on table on uow on
  (update monitor switches using BUFFERPOOL off lock off sort off statement off table off uow off)
  监控某个进程:
  get snapshot for application agentid "applicationid"
参与21

提问者

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2009-04-10
  • 关注会员:0 人
  • 问题浏览:29360
  • 最近回答:2011-07-22
  • X社区推广