本部分介绍出现错误时应执行的操作。您已经按照“使用 VTCS 系统信息显示板”中所述完成了每日任务并按“从备份副本恢复 CDS”中所述完成了按需任务,但仍存在问题。此处介绍了在出现问题时如何使 VTCS 重新正常工作,首先介绍“修复常见问题”中您可能会遇到的简单问题。
注:
恢复 CDS 主要是 HSC 任务,但也具有 VSM 端。有关更多信息,请参见“使用 PITCOPY 备份 CDS”。在此上下文中,“常见”仅意味着尽管您付出最大的努力也可能出错。找出故障的方法通常是进行回顾,重新查看 VTCS 系统信息显示板,修复通常位于按需任务中。
在开始 VTV 挂载性能问题之前,这些是您通常可以自己诊断和修复的常见问题。不过,在作出合理的努力之后,如果仍未解决问题,应要求客户支持提供帮助。仍有一些工具未在此处进行介绍(如跟踪),因为您基本上仅需要在 Oracle 服务人员的指导下使用这些工具。
挂载是在单个 VTD 上失败吗?这种情况经常发生,因为主机会请求大量驻留在 MVC 上且 VSM 无法撤回的 VTV。如果出现这种情况,请执行以下操作:
输入 Display Queue DETail 命令以检查排队的撤回。如果撤回正在排队等待某个 MVC,则其他 VTCS 进程可能正在使用该 MVC,您可以使用 Display Active DETail 对此进行检查。
如果该 MVC 未在使用中,接下来输入 HSC DISPLAY VOLUME 命令。MVC 是否实际位于 ACS 中?如果不是,则必须重新装入 MVC 以完成撤回。
然后,RTD 是否可用于挂载 MVC 以撤回 VTV?输入 Display RTD 以检查 RTD 可用性。如果没有可用的 RTD,请对所有主机使用 Display 以检查活动且已排队的进程。
如有必要,使用 Cancel 取消这些进程并释放 RTD,以便撤回可以完成。使用 Cancel,VTCS 会尝试在不影响系统资源或信息的情况下停止这些进程;因此,取消可能不会立即发生。例如,VTCS 可能会在终止使用特定 RTD 的进程之前等待硬件超时时段。
注:
如果取消某个父请求,则会停止该父请求和所有子请求。如果取消某个子请求,则父请求会继续处理。注意:
如果取消与迁移调度程序关联的任务(使用 MIGrate 参数或通过特定的进程 ID),则该任务会终止,但迁移调度程序会在其下一个计时器时间间隔启动其他迁移任务。不过,您可以通过指定大于当前 DBU 的值使用迁移至阈值来停止自动迁移。提示:
将 MGMTclas 语句 IMMEDmig 参数设置为 KEEP 或 DELETE 可优先执行迁移处理(和迁移的 RTD 使用)并可能增加 RTD 的 I/O。还应注意,可以更改 CONFIG MAXMIG 和 MINMIG 参数设置,以重新平衡自动迁移任务与您已经为每个 VTSS 定义的 RTD 的其他任务(如撤回和回收)。
挂载是否在多个 VTD 上失败?如果是,请检查以下各项:
使用 Display VTD 检查 VTD 状态。
输入 Display Active。如果没有活动进程,则确保 VTCS、HSC、所有 VTSS 和所有通信正常运行。
确保具有足够的 VTSS 空间。
检查系统是否要用完可用的 MVC 或可用的 MVC 空间。
提升低 AMT 趋势以便使更多 VTV 驻留在 VTSS 空间中,这可能有助于防止虚拟挂载失败。
如果 VTV 挂载失败,则即使 VTD 联机,也使用 MVS VARY 命令将 VTD 更改为联机,使用 MVS UNLOAD 命令清除 VTD,然后使用 HSC MOUNT 和 DISMOUNT 命令重试该操作。
从 Display MIGrate 开始,该命令可在大的方面显示各个迁移任务执行的好坏情况。您或许能够重新安排设备(例如,增大 MAXMIG/MINMIG 值)以使操作继续进行。
确保您提供的 RTD 和 MVC 状态良好,如“检查虚拟磁带状态(每日)”中所述。如果需要查看位和字节,也使用 Display Queue DETail 检查排队的进程的状态。如果有许多进程正在等待 RTD 并且您要与 MVS 共享 RTD,则可能需要将传输更改为在 MVS 上脱机,在 VSM 上联机。
注:
在 JES3 环境中,如果您尚未创建并安装正确的用户出口修改,VTV 挂载可能失败。只有一种情况比迁移性能差更糟糕,那就是根本不迁移。幸运的是,VTCS 提供了有关迁移故障的详细信息,如以下各节中所述:
为了提供有关迁移故障的更详细的信息,使用以下消息替换了消息 SLS6700E:
SLS6853E Migration failed Storage Class:stor-clas-name ACS:acs-id VTSS:vtss-name - MVCPool poolname is not defined
SLS6854E Migration failed Storage Class:stor-clas-name ACS:acs-id VTSS:vtss-name - no MVCs found for specified media
SLS6855E Migration failed Storage Class:stor-clas-name ACS:acs-id VTSS:vtss-name - no MVCs found for specified media/SC/ACS
SLS6856E Migration failed Storage Class:stor-clas-name ACS:acs-id VTSS:vtss-name - no usable MVCs found for specified media/SC/ACS
SLS6857E Migration failed Storage Class:stor-clas-name ACS:acs-id VTSS:vtss-name - no RTDs for requested media and ACS
SLS6858E Migration failed Storage Class:stor-clas-name ACS:acs-id VTSS:vtss-name - all RTDs for requested media and ACS are offline
SLS6859E Migration failed Storage Class:stor-clas-name ACS:acs-id VTSS:vtss-name - unknown reason (X'xx')
此外,在发出前面的任何消息之后,会始终输出消息 SLS6860I,以提供存储类的详细信息。如果适用,SLS6860I 还会报告有关满足迁移要求的任何错误:
是否未定义 MVC 池。
MVC 池是否不包含任何指定的介质。
MVC 池是否不包含指定介质的空闲 MVC。
VTSS/ACS 是否未定义用于写入迁移 MVC 的合适 RTD。
是否所有合适的 RTD 都脱机。
结果是您现在获取了更详细的信息,以及有关修复的更具体的建议(当迁移故障确实发生时)。
使用 STORCLas 参数增强了 Display,其输出为:
存储类的特征(ACS、MVC 池和介质)。
等待从任何 VTSS 迁移到存储类的 VTV。
要用于迁移的 MVC 的要求。
写入迁移 MVC 所需的 RTD 的设备类型。
有关满足迁移要求的任何错误。
如前所述,VTCS 提供有关迁移方案中关键元素(存储类)的信息。
增强了 MVC 池验证,以检查常见的设置错误:
是否至少定义了一个有效的 MVC 池?如果不是,则发出消息 SLS6845E。VTCS 功能严重降级,因为没有迁移可能发生。如果您收到该消息,则必须定义相应的 MVC 池。请参见下一个项目。
默认 MVC 池 (DEFAULTPOOL) 是否存在?当迁移到不指定命名 MVC 池的存储类并处于错误情况(存储类 !ERROR)时,会使用 DEFAULTPOOL。如果 DEFAULTPOOL 不存在,则发出消息 SLS6846W。
通过在 STORCLAS 语句上编码 MVCPool(pool-name) 来指示到存储类的迁移应使用特定的 MVC 池。如果未编码 MVCPool(pool-name),VTCS 会将 STORCLAS 视为好像已编码 MVCPool(DEFAULTPOOL)。
继续该主题,已增强存储类验证,以检查常见的设置错误:
如果在存储类上指定某个命名 MVC 池 (STORCLAS NAME(stor-clas-name) MVCPOOL(poolname)),VTCS 将检查是否定义了该命名 MVC 池。因此,如果编码 STORCLAS NAME(stor-clas-name) MVCPOOL(poolname),请确保命名 MVC 池存在。如果不存在,VTCS 将发出消息 SLS6848W。如果收到该消息,请定义命名 MVC 池,更改存储类定义或同时执行这两项操作。
类似地,如果未在存储类上指定命名 MVC 池 (STORCLAS NAME(stor-clas-name),VTCS 将检查是否定义 DEFAULTPOOL。因此,如果您编码 STORCLAS NAME(stor-clas-name),请确保至少存在一条不创建命名 MVC 池的 MVCPOOL 语句。如果不存在,VTCS 将发出消息 SLS6846W。如果收到该消息,请至少编码一条不创建命名 MVC 池的 MVCPOOL 语句,更改存储类定义或同时执行这两项操作。
如果在存储类上指定某个 MVC 介质 (STORCLAS NAME(stor-clas-name) MEDIA(media-type)),VTCS 将检查 MVC 池是否包含 media-type 类型的介质(如果未指定命名 MVC 池,将隐含表示使用 DEFAULTPOOL)。如果不包含,VTCS 将发出消息 SLS6849W。确保对应的池中存在该介质类型,更改存储类定义或同时执行这两项操作。
如果在存储类上指定某个 ACS 和介质类型 (STORCLAS NAME(stor-clas-name) ACS(acs-id) MEDIA(media-type)),VTCS 将检查与指定的介质类型兼容的指定 ACS 中是否存在 RTD。如果不存在,VTCS 将发出消息 SLS6851W。确保指定的 ACS 中存在所需的 RTD 类型,更改存储类定义或同时执行这两项操作。
如果在存储类上指定不具有特定 ACS 的介质类型 (STORCLAS NAME(stor-clas-name) MEDIA(media-type)),VTCS 将检查与指定的介质类型兼容的配置中是否存在 RTD。如果不存在,VTCS 将发出消息 SLS6851W。确保该配置中存在所需的 RTD 类型,更改存储类定义或同时执行这两项操作。
首先,您可能不知道您看到的是介质故障还是磁带机故障。即,如果 VTCS 在某个 MVC 上检测到读取/写入错误,VTCS 会将该 MVC 交换到其他 RTD。如果 VTCS 在该 MVC 上未检测到进一步的读取/写入错误,VTCS 将假设第一个 RTD 有错误。
消息 SLS6662A 指示某个 RTD 处于维护模式,也会在 Display RTD 输出中报告该状态。处于维护模式的 RTD 通常有错误,需要硬件操作或服务人员提供帮助。请注意,处于恢复模式的 RTD 正在初始化(例如,当更改为联机时)并且通常没有错误。
如果无法快速修复某个失败的 RTD 或该失败的 RTD 连接到远程 ACS,则可能需要从配置中删除该 RTD,以防止尝试定位该 RTD。删除该 RTD 的 RTD 语句并重新运行 CONFIG。
注意:
在双 ACS 配置(两个连接到单个 VTSS 的 ACS)中,确保不允许任何 ACS 中的所有 RTD 长时间对 VTSS 不可用。如果该 ACS 中没有可用的 RTD,则无法发生到该 ACS 的迁移或从该 ACS 的撤回,VTSS 空间可能填满。此外,该情况还可能会导致到其他 ACS 中的 RTD 的迁移停止。因此,在双 ACS 配置中,如果您必须使某个 ACS 中的所有 RTD 长时间不可用,请按上文中所述从配置中删除这些 RTD。
如果您浏览核对表以查找上述的 RTD 问题,但未找到相应的问题,您也作出了所有合理的努力以使更多 MVC 空间可用,并且将 MVC 摘要报告上的卷序列号与 HSC 卷报告进行比较,MVC 确实位于该 ACS 中。否则,您重新装入或更换 HSC 卷报告中未列出的任何 MVC。
这实际上确实像是介质问题。查看 MVC 和 VTV 报告(如“检查虚拟磁带状态(每日)”中所述)时,您看到何种类型的介质。该节介绍了最明确的 MVC 异常的一些修复。以下是您不希望在 MVC 和 VTV 报告上看到的 MVC 状态以及要对其执行的操作的详尽列表。
这是一个指示 MVC、磁带机或这两者有问题的一般错误。VTCS 尝试撤消具有该状态的 MVC 的优先权。一般而言,要清除该状态,请执行以下操作:
如果是 MVC 导致该问题,则使用 DRAIN(EJECT) 命令从服务中移除 MVC。
如果是 RTD 导致该问题,则使用 MVCMAINT 实用程序重置 MVC 状态。
另请注意,会针对 BROKEN 状态发出一个或多个以下消息:SLS6686、SLS6687、SLS6688、SLS6690。有关这些消息的详细恢复过程,请参见《VTCS Messages and Codes》。
针对该 MVC 报告了数据检查情况。VTCS 尝试撤消具有该状态的 MVC 的优先权。清除该状态:
如果对该 MVC 上的所有 VTV 执行了双工操作,则对该 MVC 使用 MVCDRain(不使用 Eject 选项)。这将恢复所有 VTV 并从服务中删除该 MVC。
如果未对该 MVC 上的所有 VTV 执行双工操作,则对该 MVC 执行 VTCS AUDIT。审计可能失败。在审计之后执行 MVCDRAIN(无弹出)。这将撤回数据检查区域之前的 VTV(按升序块 ID 顺序)和数据检查区域之后的 VTV(按降序块 ID 顺序)。按照该顺序处理 VTV 可确保 VTCS 从介质中恢复尽可能多的 VTV。然后您需要为仍位于 MVC 上的所有 VTV 重新创建数据。
清除数据检查后,移除或更换具有数据检查错误的 MVC,如“永久移除 MVC”中所述。该过程还介绍如何从 VTCS 使用中移除 MVC 并将其返回至 Nearline 操作。
MVC 当前将要排出或已是失败的 MVCDRain 的对象。
挂载 MVC 时发生错误。
已初始化 MVC。
VTCS 尝试挂载某个 MVC,该挂载在 15 分钟的超时期限内未完成。VTCS 正尝试从可能由硬件问题、HSC 问题或从 ACS 移除 MVC 导致的情况恢复。VTCS 尝试撤消具有该状态的 MVC 的优先权。
如果 VTCS 确实成功执行了后续具有 LOST(ON) 状态的 MVC 挂载,VTCS 会将该状态设置为 LOST(OFF)。
确定错误的原因并修复错误。还可以使用 VTCS MVCMAINT 实用程序为以下事件设置 LOST(OFF):
由于已解决的 LSM 故障或磁带机错误而设置 LOST(ON)。
由于 MVC 在 ACS 之外并已重新装入而设置 LOST(ON)。
MVC 已满,不是将来迁移的候选 MVC。
MVC 挂载在 RTD 上。
已通过 CONFIG 实用程序定义 MVC,但从未使用过 MVC。
由于出现以下情况之一,已将 MVC 标记为只读:
MVC 是导出或合并过程的目标。只读状态可防止 MVC 进一步更新。
已将 MVC 介质设置为文件保护。更正错误并使用 MVCMAINT 实用程序设置 READONLY(OFF)。
MVC 没有设置相应的 SAF 规则以使 VTCS 更新 MVC。更正该错误(有关更多信息,请参见安装 ELS 中的“针对 HSC、SMC 和 VTCS 定义安全系统用户 ID”)并使用 MVCMAINT 实用程序设置 READONLY(OFF)。
当前正在审计 MVC 或 MVC 已是失败的审计对象。如果审计失败,VTCS 不使用 MVC 进行迁移。要清除该情况,请针对该 MVC 重新运行 AUDIT 实用程序。
MVC 已是 MVCDRain Eject 的对象或已弹出 MVC 以便由 RACROUTE 调用进行更新。不再将 MVC 用于迁移或撤回。要清除该情况,请针对 MVC 使用 MVCDRain(不使用 Eject 选项)。
已将 MVC 报废。VTCS 从 MVC 撤回,但不迁移到 MVC。尽可能快地更换 MVC。
MVC 的保修已到期。VTCS 继续使用 MVC。应开始计划当 MVC 达到已作废状态时更换 MVC。
VTCS 已从 RTD 接收到指示 9x40 或 T10000 介质的 MIR(media information record,介质信息记录)无效的状态。无效的 MIR 不会阻止对数据的访问,但可能在访问磁带上的记录时导致严重的性能问题。MVC 无法在磁带上不具有有效 MIR 条目的区域上执行高速搜索。
VTCS 尝试撤消具有该情况的 MVC 的优先权。对于撤回,如果 VTV 位于多个 MVC 上,则相对具有无效 MIR 的 MVC,VTCS 会优先选择具有有效 MIR 的 MVC。除非迁移发生在磁带的开头,否则 VTCS 将避免使用具有无效 MIR 的 MVC 进行迁移。从磁带的开头进行迁移可更正 MIR。
VTCS 在挂载时或卸载时检测无效的 MIR 情况。如果在挂载时检测到该情况并且可以使用其他 MVC 完成该操作,则 VTCS 会卸载最初的 MVC 并选择替代 MVC。请注意,VTCS 仅具有有限的切换到替代 MVC 的功能。即,主要用于迁移和虚拟挂载。
对于具有无效 MIR 的 MVC,确定错误的原因(错误可能是由介质或磁带机问题导致的)并修复错误。
要恢复具有无效 MIR 的 MVC,请运行 INVENTRY
实用程序。例如,要恢复 MVC707
,请输入:
INVENTRY MVCID(MVC707)
这是一个非常具体的一般“错误 MVC”灾难实例,您知道当您在 MVC 和 VTV 报告中看到 MVC 数据检查错误时这是必需的。
恢复具有数据检查的 MVC:
针对 MVC 运行 MVC 审计。
审计尝试按顺序从 MVC 读取 VTV 元数据。当审计遇到数据检查时,审计将失败,这会将 MVC 置于审计状态。这将阻止 VTCS 选择该 MVC 进行输出。
针对 MVC 运行 MVCDRain Eject。
这将导致将所有可用的 VTV 撤回到 VTSS,然后将其重新迁移到新的没有错误的 MVC 上。这会将 MVC 从 MVC 池中逻辑移除。
注:
由于 MVC 的错误状态,如果有可能,VTCS 将从替代 MVC 中撤回 VTV。
如果必须从有错误的 MVC(没有其他可用的副本)中撤回 VTV,则:
按照升序块 ID 顺序撤回数据检查区域之前的 VTV。
按照降序块 ID 顺序撤回数据检查区域之后的 VTV。
确定是否有任何 VTV 无法从 MVC 恢复。
针对 MVC 运行 MVC 详细信息报告。如果仍报告有 VTV 位于 MVC 上,则这些 VTV 是不可恢复的;您必须使用其他方法恢复数据。
通过执行以下操作之一管理有缺陷的 MVC:
使用已初始化的具有相同内部和外部标签的磁带卷更换有缺陷的 MVC:
针对有缺陷的 MVC 输入 HSC EJECT
命令。
针对替换 MVC 输入 HSC ENTER
命令。
根据需要初始化磁带。
针对新 MVC 输入 HSC AUDIT
。
运行 MVCDRAIN
(无 EJECT)以将 MVC 返回到 MVC 池中。
将 MVC 从系统中删除:
针对有缺陷的 MVC 输入 HSC EJECT
命令。
编辑 MVC 池定义以从池中移除有缺陷的 MVC。
在所有活动主机上输入 VT MVCDEF 以激活新 MVC 池定义。
RTV 实用程序是另一个您可能仅在与 Oracle 服务人员协商之后才使用的项目,因为 RTV 可在无需 VTCS 提供任何帮助的情况下直接从 MVC 读取 VTV 数据(例如,在您确实已经丢失 CDS 的情况下)。
RTV 是独立实用程序,其工作方式是从 MVC 读取某个 VTV,解压缩该 VTV,然后将数据写入单个输出磁带(实际磁带卷),以便用户应用程序可以读取该数据。由于 RTV 实用程序是独立实用程序,因此您可以在 VSM 未运行而 MVS 系统在运行时运行 RTV。
RTV 实用程序可以恢复:
指定的 MVC 中的所有或指定的 VTV。如果您不知道 MVC 上最新版本的 VTV 的位置,请仅指定 VTV 卷序列号,RTV 会转换其在该 MVC 上找到的最新版本的 VTV。
位于指定 MVC 上指定块 ID 的 VTV。LISTONLY 参数列表提供可以用作 RTV 实用程序的输入的块 ID 值,以便将某个 VTV 转换成 Nearline 卷。指定卷序列号和块 ID 可以加快定位的速度。
由指定的 MVC 上逻辑数据集编号指定的 VTV。与指定卷序列号和块 ID 相比,指定卷序列号和逻辑数据集编号所花费的定位时间将长得多。使用卷序列号和块 ID 是访问单个 VTV 的首选方法。
注:
如果指定了多个 VTV,或未指定块 ID 或 FILEnum 参数,则会读取整个 MVC,并作为输出的一部分显示 MVC 内容。读取整个 MVC 对确保仅解压缩最新的 VTV 副本而言是必需的。一般使用准则
包含已转换的 VTV 的输出卷大小必须至少是最大 VTV 的大小(400 Mb、800 Mb、2 Gb、4 Gb 或 32 Gb),以确保该输出卷可以包含单个 VTV。
VTCS MVC 报告和 VTV 报告提供信息以指定您希望 RTV 恢复 VTV 的哪个副本。确保您在运行 RTV 实用程序之前具有这些报告的当前副本。此外,为了帮助确定要转换的 VTV,您可以使用 LISTONLY 参数生成 MVC 上 VTV 的列表。
由于同一 VTV 的多个副本可以存在于同一个 MVC 或不同的 MVC 上,因此请仔细审查 VTV 报告和 MVC 报告以及 LISTONLY 列表,以确保您使用正确的 MVC 转换 VTV 的最新副本!
RTV 实用程序不使用有关转换的卷的信息更新系统目录或 TMC;您必须手动执行该操作。
您必须对要转换的 VTV 和包含这些 VTV 的 MVC 具有读取访问权限,否则系统的安全应用程序将无法运行。否则,转换将失败。
确保 APF 对 RTV 实用程序装入磁带库进行授权。
RTV 不会尝试绕过任何 TMS 保护。所有 RTV 磁带挂载都受到 TMS 的完全控制。
注:
由于 RTV 实用程序必须能够在输出单元上写入磁带标准标签并在输入单元上通过标签信息进行定位,因此在磁带卷上使用动态分配调用绕过标签处理 (bypass label processing, BLP)。这要求 APF 对包含 SWSRTV 可执行代码的磁带库进行授权。下面显示了使用 RTV 实用程序的 JCL 示例。
下面显示了列出 MVC MVC001 上的 VTV 的示例 JCL。
//JOBVRECJOB(account),programmer //RUNRTV EXEC PGM=SWSRTV,PARM=’MIXED’ //STEPLIBDD DSN=hlq.SEALINK,DISP=SHR //SLSPRINTDD SYSOUT=A //SLSINDD * RTV MVC(MVC001)INUNIT(/1AB4) LISTONLY /* //
下面显示了运行 RTV 实用程序以转换 MVC MVC001(挂载在 3490E 传输上)上的 VTV VTV200 的示例 JCL。输出(经转换的 VTV VTV200)将传输到挂载在传输 280 上的输出卷,RTV 将 VTV 中的 VTV VOLID 复制到输出卷中。
//JOBVRECJOB(account),programmer //RUNRTV EXEC PGM=SWSRTV,PARM=’MIXED’ //STEPLIBDD DSN=hlq.SEALINK,DISP=SHR //SLSPRINTDD SYSOUT=A //SLSINDD * RTV MVC(MVC001) INUNIT(3490E) VTV(VTV200) CPYVOLID OUTUNIT(280) /* //
下面显示了运行 RTV 实用程序以转换 MVC MVC001(挂载在 3490E 传输上)上位于块 ID x'8EA484AB' 的 VTV VTV200 的示例 JCL。输出(经转换的 VTV VTV200)将传输到挂载在传输 480 上的输出卷。
//JOBVRECJOB(account),programmer //RUNRTV EXEC PGM=SWSRTV,PARM=’MIXED’ //STEPLIBDD DSN=hlq.SEALINK,DISP=SHR //SLSPRINTDD SYSOUT=A //SLSINDD * RTV MVC(MVC001) INUNIT(3490E) VTV(VTV200) BLOCK(8EA484AB) OUTUNIT(480) /* //