问题描述:
在系统运行时候,在SAP系统中经常报sql -911错误,reason code ”68”导致程序运行失败。
问题分析:
察看sql 911详细错误信息如下:
D:\>db2 ? sql0911n
SQL0911N因为死锁或超时,所以当前事务已回滚。原因码为
"<原因码>"。
在系统运行时候,在SAP系统中经常报sql -911错误,reason code ”68”导致程序运行失败。
问题分析:
察看sql 911详细错误信息如下:
D:\>db2 ? sql0911n
SQL0911N因为死锁或超时,所以当前事务已回滚。原因码为
"<原因码>"。
解释:
当前工作单元涉及到未解决的对使用对象的争用,因此不得不回滚。
原因码如下:
2 由于死锁而导致事务已回滚。
2 由于死锁而导致事务已回滚。
68 由于锁定超时而导致事务已回滚。
72 因为存在与事务中所涉及的 DB2 Data Links Manager
有关的错误,所以事务已回滚。
有关的错误,所以事务已回滚。
注释: 必须再次输入与工作单元相关的更改。
应用程序已回滚至上一次 COMMIT。
用户响应:
为了帮助避免死锁或锁定超时,对长时间运行的应用程序或有可能遇到死锁
的应用程序频繁发出 COMMIT 操作(如果有可能的话)。
的应用程序频繁发出 COMMIT 操作(如果有可能的话)。
联合系统用户:死锁可能发生在联合服务器或数据源上。没有检测跨越数据
源并潜在地跨越联合系统的死锁的机制。有可能标识使请求失败的数据源(
参阅 Problem Determination Guide 以确定哪一个数据源使 SQL
语句的处理失败)。
源并潜在地跨越联合系统的死锁的机制。有可能标识使请求失败的数据源(
参阅 Problem Determination Guide 以确定哪一个数据源使 SQL
语句的处理失败)。
当处理 SQL 语句的某些组合时,通常会发生死锁或者预期会发生死锁。建议
您设计应用程序来尽可能避免死锁。
您设计应用程序来尽可能避免死锁。
sqlcode : -911
sqlstate : 40001
因为事务返回码为68,所以导致事务运行失败的原因是 由于锁定超时而导致事务已回滚。
对数据库进行快照监控,查看锁快照想过信息:
Deadlocks detected = 0
Lock escalations = 0
Exclusive lock escalations = 0
Agents currently waiting on locks = 0
Lock Timeouts = 9
从上面的快照信息可以看出,数据库并没有发生死锁,而是发生了9次锁定超时,而且数据库没有锁定升级的情况出现,因为可以判断造成数据库锁定超时的原因应该是由于事务本身执行时间较长导致的,而和数据库锁定参数locklist,maxlocks没有关系。
目前的数据库锁定超时参数LOCKTIMEOUT 为3600秒(1个小时),决定加大此参数值,将其增加到7200秒(2个小时)以延长事务的锁定等待时间。
修改方法:
Db2 update db cfg for epp using locktimeout 7200 immediate
对数据库进行快照监控,查看锁快照想过信息:
Deadlocks detected = 0
Lock escalations = 0
Exclusive lock escalations = 0
Agents currently waiting on locks = 0
Lock Timeouts = 9
从上面的快照信息可以看出,数据库并没有发生死锁,而是发生了9次锁定超时,而且数据库没有锁定升级的情况出现,因为可以判断造成数据库锁定超时的原因应该是由于事务本身执行时间较长导致的,而和数据库锁定参数locklist,maxlocks没有关系。
目前的数据库锁定超时参数LOCKTIMEOUT 为3600秒(1个小时),决定加大此参数值,将其增加到7200秒(2个小时)以延长事务的锁定等待时间。
修改方法:
Db2 update db cfg for epp using locktimeout 7200 immediate
修改后,需要重新启动数据库,以使参数生效
Db2stop force
Db2start
Db2stop force
Db2start