2015-04-19 1402 views
1

我们已经看到从DB2主机此以下情况除外:不会的QueryTimeout不SqlTransactionRollbackException工作。我们确实设置了CallableStatement.querytimeout,但在这种情况下它确实不起作用。有什么建议么?谢谢。DB2主机:SQLCODE = -911,SQLSTATE = 40001

DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001, SQLERRMC=00C9008E;00000801;NULLID.SYSSTAT.5359534C564C3031, DRIVER=3.61.109; nested exception is com.ibm.db2.jcc.am.SqlTransactionRollbackException: DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001, SQLERRMC=00C9008E;00000801;NULLID.SYSSTAT.5359534C564C3031, DRIVER=3.61.109

以下例外情况也是如此。查询超时不起作用。

nested exception is com.ibm.db2.jcc.am.SqlException: UNSUCCESSFUL EXECUTION CAUSED BY AN UNAVAILABLE RESOURCE. REASON 00E30083, TYPE OF RESOURCE 00000802, AND RESOURCE NAME BINDLOCK

回答

0

这是一个超时等待锁(BINDLOCK01到20)解锁。

检查你正在尝试加载该表没有被其他长期运行的工作做一个更新/插入锁定/删除查询。

IBM Knowledge Center建议添加频繁的提交操作在可能的情况。

Toad World提供了一些进一步的战略优化锁定时间:

Recommendation: ACQUIRE(USE) and RELEASE(DEALLOCATE) provide good concurrency when using page or row locking and to maximize performance.

To hold exclusive locks as short a time as possible, it is advisable to group INSERT, UPDATE, and DELETE statements together in a host language program followed by a COMMIT. If these SQL statements are interspersed with host language code, the locks are held while executing the host language code.

作为最后的手段,如果你不想来优化您的查询,并假设它不是僵局,你可以disable lock timemouts

在DB2 for * NIX/Windows上,将'LOCKTIMEOUT'参数更改为'-1'。 (不知道它是一款面向z/OS,或潜在影响。)

欢迎堆栈溢出。

+0

感谢您的回复,jabolotai。 – user3692238

+0

不客气,希望它有助于解决您的问题。如果存在,请不要忘记标记为正确的答案。 – aportr

+0

谢谢你的回复,jabolotai。从Java应用程序开发人员的角度来看,我想我的问题是,查询执行时会发生这些异常吗?如果是,为什么我们没有考虑从Java应用程序中设置的querytimeout设置。这里的查询是使用存储过程调用读取数据。 – user3692238

相关问题