[z/OS]

重新初始化队列管理器

如果队列管理器已异常终止,那么您可能无法将其重新启动。 这可能是因为您的页集或日志已丢失,截断或损坏。 如果发生此情况,那么可能必须重新初始化队列管理器 (执行冷启动)。

注意

仅当无法以任何其他方式重新启动队列管理器时,才会执行冷启动。 执行冷启动使您能够恢复队列管理器和对象定义; 您将 无法 恢复消息数据。 在执行此操作之前,请检查本主题中描述的其他重新启动方案是否都不适用于您。

警告:
由于冷启动使用的是新定义的日志和页面集,因此队列管理器要做好准备,以应对可能出现的数据丢失,且无法进行介质恢复或工作单元恢复。 可以使用 CSQUTIL SCOPY 命令将队列中的报文复制到页集中。 但是, CSQUTIL SCOPY 命令不适用于共享队列。 您可以使用 CSQ4LOGS 样本重放应用程序日志中的信息。

对于持久信息,只能重放之前活动日志和归档日志中的信息。 更多信息,请参阅使用 CSQ4LOGS 处理来自 CSQ1LOGP EXTRACT 的输出

重新启动后,将定义所有 IBM® MQ 对象并可供使用,但没有消息数据。
注: 当队列管理器是集群的一部分时,请勿重新初始化该队列管理器。 必须首先从集群中除去队列管理器 (在集群中的其他队列管理器上使用 RESET CLUSTER 命令) ,然后重新初始化该队列管理器,最后将其作为新的队列管理器重新引入集群。

这是因为在重新初始化期间,队列管理器标识 (QMID) 已更改,因此必须从集群中除去具有旧队列管理器标识的任何集群对象。

重新初始化不在队列共享组中的队列管理器

要重新初始化队列管理器,请执行以下过程:
  1. 准备要在重新启动队列管理器时使用的对象定义语句。 要执行此操作,请执行以下任一操作:
    • 如果页集 0 可用,请使用 CSQUTIL SDEFS 函数 (请参阅 生成 IBM MQ 定义命令的列表 )。 您必须获取所有对象类型 (认证信息对象, CF 结构,通道,名称列表,进程,队列和存储类) 的定义。
    • 如果页集 0 不可用,请使用上次备份对象定义时的定义。
  2. 重新定义队列管理器数据集 (在完成步骤 1 之前不执行此操作)。

    请参阅 创建引导程序和日志数据集 以及 定义页集 以获取更多信息。

  3. 使用新定义和初始化的日志数据集, BSDS 和页集重新启动队列管理器。 使用您在步骤 1 中创建的对象定义输入语句作为 CSQINP2 初始化输入数据集中的输入。

重新初始化队列共享组中的队列管理器

在队列共享组中,重新初始化队列管理器更复杂。 由于页集或日志问题,可能需要重新初始化一个或多个队列管理器,但 Db2® 或要处理的耦合设施也可能存在问题。 正因为如此,有多种替代方案:

冷启动
重新初始化整个队列共享组涉及强制所有耦合设施结构,从 Db2清除队列共享组的所有对象定义,删除或重新定义日志和 BSDS ,以及为队列共享组中的所有队列管理器格式化页集。
保留共享定义
删除或重新定义日志和 BSDS ,为队列共享组中的所有队列管理器格式化页集,并强制所有耦合设施结构。 重新启动时,将删除所有消息。 队列管理器将重新创建对应于 Db2 数据库中仍然存在的 GROUP 对象的 COPY 对象。 任何共享队列仍然存在并且可以使用。
已重新初始化单个队列管理器
删除或重新定义单个队列管理器的日志和 BSDS 以及格式页集 (这将删除其所有专用对象和消息)。 重新启动时,队列管理器将重新创建对应于 Db2 数据库中仍然存在的 GROUP 对象的 COPY 对象。 任何共享队列仍然存在,就像它们上的消息一样,并且可以使用。
队列共享组的时间点恢复
这是备用站点灾难恢复方案。

共享对象将恢复到 Db2 恢复所实现的时间点 (如 A Db2 系统故障 中所述)。 可以将每个队列管理器恢复到可从备用站点上可用的备份副本实现的时间点。

持久消息可以在队列共享组中使用,并且可以使用 MQSC RECOVER CFSTRUCT 命令进行恢复。 请注意,此命令将恢复到失败的时间。 但是,无法恢复非持久共享队列消息; 除非您已使用 CSQUTIL 实用程序的 COPY 函数独立生成备份副本,否则这些消息将丢失。

不需要尝试将每个队列管理器复原到同一时间点,因为不同队列管理器上的本地对象 (实际正在恢复的对象) 之间不存在相互依赖关系,并且队列管理器在重新启动时与 Db2 再同步会根据队列管理器的需要创建或删除队列管理器上的 COPY 对象。