决定是否有序使用或立即断开连接
仅在必要时使用立即断开连接。 例如,如果您已发出未发生的有序断开连接请求,并且需要立即断开连接,那么可能需要使用该请求。
有序断开连接允许在 CICS 与 DBCTL 断开连接之前完成所有现有的 CICS®-DBCTL 任务。 阻止当前未使用 DBCTL 的任务发出更多 PSB 调度请求。 这意味着不应存在任何不确定的逻辑工作单元 (UOW) ,并且数据库记录可供连接到该 DBCTL 的其他 CICS 系统使用。
立即断开连接仅允许在 CICS 与 DBCTL 断开连接之前完成从此 CICS 系统对 DBCTL 的当前 DL/I 请求。 阻止任何新的 DL/I 或 PSB 调度请求。 这可能会导致所涉及任务的不确定 UOW ,并使连接到该 DBCTL 的其他 CICS 系统的数据库记录不可用,直到重新连接为止。 发生的情况取决于在立即断开连接请求之后向 DBCTL 发出的请求的类型:
- 如果是 PSB 调度请求,那么将发出 DHTJ 异常终止 (对于命令级程序) 或 DLINA 条件 (对于调用级程序)。
- 如果是 DL/I 请求,那么将回退 UOW 并发出 ADCA 异常终止。
- 如果是 PREPARE 请求,那么将回退 UOW 并发出 ASP7 异常终止。
在所有这些情况下,数据库记录可供其他应用程序使用。
- 如果是 COMMIT 请求,那么该任务将保持不确定状态,并且 DBCTL 记录不可用。 直到 DBCTL 重新连接到 CICS之后,才会解决不确定中的问题。 当接收到下一个 PSB 调度时,将发出异常终止,如 PSB 调度请求所述。
有关 PREPARE 和 COMMIT 请求的信息,请参阅 DBCTL 的两阶段落实 。
因此,仅在必要时使用立即断开连接。 例如,如果您已发出未发生的有序断开连接请求,并且需要立即断开连接,那么可能需要使用该请求。 发出许多 DL/I 请求的任务或等待无人照管终端输入的会话式任务可能会延迟有序断开连接。 如果您认为问题是由此类任务引起的,那么您可能希望使用 CEMT INQ TASK 对其进行标识,然后使用 CEMT SET TASK (n) PURGE ,其中 n
是要将其清除的任务标识。 然后,可以使用有序断开连接。 但是,如果问题是由许多任务或无法识别的单个任务引起的,那么可能必须使用立即断开连接。