我们有一个应用程序在 z/OS 下连接到 DB2,过了一段时间,似乎在大型机端遇到了一些资源限制。由于我们使用的是 BIRT,我们对 JDBC 代码的唯一控制似乎是 URL 本身中的节。我们没有直接的 Java 控制连接或语句(当然除了 SQL 本身),尽管在报表设计中使用 Javascript 可能是可能的。所以我们可以通过以下方式打开调试:
jdbc:db2://machine.com:1234/INSTANCE:traceFile=c:/db2.txt;traceLevel=-1;
最终,使用 JDBC 的应用程序将简单地停止,不再向日志文件写入数据。TSO NETSTAT
在大型机上执行 a会显示大约 50 个会话处于ESTABLISHED
状态。
现在我们知道这是大型机方面的问题,因为当它发生时,到该实例的 JDBC 连接将不起作用(来自任何客户端)。此时,我们必须重新启动数据库才能继续。
我搜索了很多东西,其中一些似乎表明您可能需要在关闭会话之前提交查询。可能因为 BIRT 关闭代码中有问题(至少在 DB2 所期望的方面),会话保持打开状态。
有没有人经历过这样的事情?你是如何修复它的(如果有的话)?有没有办法通过在报告设计中仅使用 JDBC URL 节或 Javascript 代码来解决它?
FWIW,我们使用的是 DB2 9.1 和 BIRT 2.2.1。