回退失败恢复

当前仅由 CICS® 文件控制提供回退故障支持。

如果回退到 VSAM 数据集由于任何原因而失败,那么 CICS 将执行以下处理:
  • 调用 XFCBFAIL 处的回退失败全局用户出口程序 (如果已启用此出口)。 如果用户出口程序选择绕过回退故障处理,那么不会执行此处列出的其余操作。
  • 发出消息 DFHFC4701,提供失败回退的更新的详细信息以及发生的回退故障的类型。
  • 将活动互斥锁定转换为保留锁定。 这将确保任何 CICS 区域 (包括拥有锁定的区域) 中的任何其他任务都不会等待无法授予的锁定,直到解决故障为止。 (在此情况下, CICS 会将 LOCKED 条件返回到请求锁定的其他任务。) 以这种方式保留锁定还会阻止其他任务更新记录,直到解决故障为止。
    • 对于以 RLS 方式打开的数据集, CICS 请求 SMSVSAM 保留锁定。
    • 对于以非 RLS 方式打开的 VSAM 数据集, CICS 入队域提供了等效功能。
    创建保留锁定还可确保其他请求不必等待锁定,直到回退成功完成为止。
  • 保留未能回退的日志记录 (通过对工作单元进行分流) ,以便在重试回退时,可以将失败的记录再次提供给文件控制。 (请参阅 已回避的工作单元 ,以获取有关已回避的工作单元的更多信息。

如果工作单元更新多个数据集,那么仅一个或部分数据集的回退可能失败。 发生此情况时, CICS 将仅转换为保留锁定,这些锁定由回退失败的数据集的工作单元持有。 当工作单元被阻塞时, CICS 会释放成功回退的数据集中记录的锁定。 将保留对失败回退的数据集进行的更新的日志记录,以供后续回退重试。 CICS 不会保留成功回退的日志记录。

对于给定的数据集,无法使工作单元更新的某些记录回退失败,也无法使其他记录不失败。 例如,如果工作单元更新同一数据集中的多个记录,并且一个记录的回退失败,那么它们都被视为回退失败。 仅在工作单元中调用一次回退失败出口,并且仅针对失败回退的每个数据集发出一次回退失败消息。 但是,如果重试回退并再次失败,那么将重新调用出口并再次发出消息。

对于 BDAM 数据集,只有有限的回退故障支持: 将调用回退故障出口 XFCBFAIL (如果已启用) 以执行安装定义的操作,并发出消息 DFHFC4702

辅助临时存储器

对可恢复辅助临时存储器队列的所有更新都在主存储器中进行管理,直到同步点为止。 TS 始终向前落实; 因此, TS 永远不会发生回退故障。

瞬时数据

对逻辑可恢复的分区内队列的所有更新都在主存储器中进行管理,直到同步点为止,或者直到必须清空缓冲区为止,因为所有缓冲区都在使用中。 TD 始终向前落实; 因此, TD 在 DFHINTRA 上永远不会发生回退故障。