具有“活动时保存”的落实控制
如果要使用落实控制和“活动时保存”来消除保存中断时间,那么请使用此信息。 只有未在 SAVACTWAIT 参数上指定 *NOCMTBDY 用于处理暂挂记录更改时,此信息才适用。
如果某对象在“活动时保存”操作的检查点处理阶段的落实控制下接受更新,那么系统会将该对象保存在落实边界。 系统将到达检查点的所有对象一起保存在同一个公共落实边界。
在“活动时保存”请求的保存预处理阶段期间,系统将确保其根据以下情况保存对象落实边界:
- 如果执行“活动时保存”请求的作业当前未处于落实边界,那么保存请求结束,不保存任何对象。 对于任何保存请求,此处理是相同的。
- 如果组中将要一起到达检查点的任何对象正在更新,那么系统将延迟检查点。 当所有事务到达落实边界时,检查点将重新开始。 系统等待 SAVACTWAIT 参数的秒元素上指定的时间,直到这些事务达到落实边界。 如果指定时间到期时,未落实的事务仍然存在,那么保存请求结束。
- 系统标识这些作业具有当前未在落实边界并且正在延迟检查点处理的落实定义。 在未落实的事务为一组对象延迟检查点处理大约 30 秒前,系统一直处于等待状态。 系统为正在延迟“活动时保存”请求的每个作业发送一条 CPI8365 消息到 QSYSOPR 消息队列。 接收到这些消息后,就可以执行适当的操作,以将这些作业的所有落实定义带到落实边界。
- 当再没有落实定义在延迟“活动时保存”作业时,“活动时保存”作业完成对象的检查点处理。 检查点处理结束后,系统允许在落实控制之下对这些对象进行更改。
- 如果落实定义具有未落实的更改,那么可能延迟“活动时保存”请求。 即使未落实的更改并非针对任何数据库文件,更改也可以延迟“活动时保存”请求。 如果正在将任何数据库文件记录到落实定义用于不相关、未落实更改的相同日志时,并且如果对 SAVACTWAIT 参数的秒元素指定的值大于 0,那么可能会出现此种情况。
- 如果应用程序正在执行更新读操作,但没有进行任何更改,那么可以认为应用程序开始了落实周期。 只要尚未进行更改,系统就允许在落实周期中间建立检查点。 如果应用程序只在执行更新读操作,那么检查点处理就不会停止。
- 当以下两个条件同时成立时,系统将暂时延迟具有处于落实边界的所有落实定义的作业:
- 当应用程序可能会更改处于落实控制下的对象时
- 当对象即将到达检查点时
使用“活动时保存”和 *NOCMTBDY 进行落实控制
如果要使用落实控制和“活动时保存”来消除保存中断时间,那么请使用此信息。 只有在 SAVACTWAIT 参数上指定了用于处理暂挂记录更改的 *NOCMTBDY 时,此信息才适用。
- 如果执行“活动时保存”请求的作业当前未处于落实边界,那么保存继续,对象与部分事务一起保存。
- 如果组中将要一起到达检查点的任何对象正在作除暂挂记录更改之外的更新,那么系统将延迟检查点。 当所有事务到达落实边界时,检查点将重新开始。 系统等待 SAVACTWAIT 参数的第三个元素上指定的时间量,直到这些事务达到落实边界。 如果指定时间到期时,未落实的事务仍然存在,那么保存请求结束。