我们必须连接在z / OS的DB2和,一段时间后,似乎有被击中的主机侧的一些资源限制的应用程序。由于我们使用BIRT,看来我们有过JDBC代码的唯一控制是在URL中节。我们没有通过连接或语句(除SQL自身的课程)Java直接控制虽然可以通过报表设计中使用Javascript是不可能的。因此,我们可以在调试来的东西,如:

jdbc:db2://machine.com:1234/INSTANCE:traceFile=c:/db2.txt;traceLevel=-1;

最后使用JDBC将简单地停止,没有更多的数据将被写入到日志文件的应用程序。在主机上做一个TSO NETSTAT表示ESTABLISHED状态约50的会话。

现在我们知道这是在主机上侧的问题,因为,当它发生时,的没有的JDBC连接到该实例就可以了(从的任何的客户端)。在这一点上,我们必须重新启动数据库继续。

我GOOGLE了很多东西,其中一些似乎表明你可能需要提交的查询的关闭会话之前。这可能是因为会议可能会被保持打开,因为有一些错误的BIRT关闭代码(至少是在什么DB2预计术语)。

有没有人经历过这样的事情之前?你是如何解决它(如果有的话)?是否有使用报告设计中只是JDBC URL节或JavaScript代码来解决它的方法吗?

FWIW,我们使用DB2 9.1和2.2.1 BIRT

有帮助吗?

解决方案

这实际上是在另一个论坛解决了,我在这里复制的解决方案为后人。

原来有一个名为IDTHTOIN在DB2参数组装/链接作业的DSN6FAC部分参数(一般的 db2prefix .SDSNSAMP(DSNTIJUZ)虽然您的设置可能会有所不同),这是在我们的例子中设置为零。此参数是IDLE TIME OUT线程DDF和零的意思是“没有超时”。

此值设置为180解决我们的问题。已持有锁螺纹被关闭,如果他们没有在这三分钟内没有任何活动。将其设置为小于120不是有用的,因为线程每两分钟仅检查无论如何(在至少DB2 V9)。

您还应该设置CMTSTAT=INACTIVE保护乖巧线程(那些已经释放了所有的资源锁,但仍持有该线程打开)。

请,这是好为我们的特殊问题,因为线程是报表。他们的行为是这样打开的会话,得到了报告中的数据,那么并不需要会话了。如果你有长期运行的会话,你必须要小心(虽然持有锁超过三分钟的任何会议的嫌疑无论如何)。

您应该编辑DSNTIJUZ成员,运行作业,然后要么回收DB2实例或执行SET SYSPARM

由于在IBM澳大利亚(西珀斯实验室)的有用的BOD为纳丁这一点对我来说。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top