大型机:如何防止批处理作业和 CICS 事务之间的 DB2 争用?

Posted

技术标签:

【中文标题】大型机:如何防止批处理作业和 CICS 事务之间的 DB2 争用?【英文标题】:Mainframe: How to prevent DB2 contention between batch job and CICS transaction? 【发布时间】:2021-06-07 16:29:23 【问题描述】:

我有一个批处理作业和一个使用相同 db2 表的 CICS 事务。两者都定期运行,并且由于与共享 DB2 表的争用,批处理作业有时会异常终止。

有没有办法在 CA7(作业调度工具)中调度作业,以防止它在事务处于活动状态时运行?

【问题讨论】:

什么是异常结束? 由于死锁/超时导致的争用 -913 【参考方案1】:
    在启动批处理作业之前禁用 CICS 事务,在批处理作业结束时重新启用它。 修改批处理作业以使用提交间隔,类似于this answer。

检查 CICS 事务是否处于活动状态不太可能如您所愿。当您检查时它可能处于非活动状态,然后您开始批处理作业,然后 CICS 事务变为活动状态。

更新 #1


虽然您没有具体说明,但我的印象是这是一个长期运行的 CICS 事务,不是在不到 0.10 秒的时钟时间内完成的正常 OLTP 样式事务。

如果是这种情况,那么创建一个使用 EXCI 执行 CICS 程序的批处理程序,该程序使用 CICS SPI INQUIRE TASKLIST 来定位您的事务可能是继续的方法。如果您有 CA-DADs PLUS,那么您也许可以使用该产品而不是编写程序来完成此操作。

【讨论】:

如果 CICS 事务已经在运行,我不能禁用它吗?提交间隔已经存在。我只是想消除在异常结束时重新启动作业的手动工作。 此外,事务是否超时也没关系,因为作业持有表。该事务将稍后重试。我需要在事务已经运行时不运行作业以防止超时。 是的,有时需要超过 10 秒。我们没有 CA-DADs PLUS。那么我将不得不尝试EXCI方法。谢谢。【参考方案2】:

请参考下面的帖子,看看它是否可以帮助您克服这个问题。

https://ibmmainframes.com/about12949.html

问候, 暗部。

【讨论】:

不,那是另一个问题。

以上是关于大型机:如何防止批处理作业和 CICS 事务之间的 DB2 争用?的主要内容,如果未能解决你的问题,请参考以下文章

哪个是连接大型机和 java 的成熟解决方案? MQ 系列/IBM CICS 事务网关哪个最好?

在 CICS 中读取动态命名的平面文件

大型机 CEE3DD 异常终止 - CEE3501S - 在 COBOL 动态调用中找不到模块

从 z/OS 批处理作业运行 XA/JTA 事务

在 COBOL-CICS-DB2 中,如何确定银行账户是不是已休眠/关闭?

什么会导致 CI​​CS 事务写出 CICS 分配的内存?