如何刷新复制的用户维护的数据表
以下步骤描述了如何设置环境以刷新复制的 UMT。 在实践中,你可能已经有了一些这方面的到位。 例如,您可能已经将文件定义为数据表。 此处描述的步骤假定您已具有综合系统环境。
- 选择适当的文件。
作为示例,请考虑一个应用程序,该应用程序根据被盗信用卡列表来检查信用卡号,并且需要快速访问此列表。 该列表将定期更新新批次的被盗卡数量。 应用程序使用文件名 UMTNAME 访问名为 PRODN.SOURCEDS 的 VSAM KSDS 数据集中的记录。 应用程序在由两个 MVS™ 映像组成的综合系统中运行。 CICS® 区域 CICS1A, CICS1B和 CICS1C 在第一个映像中运行, CICS2A, CICS2B 和 CICS2C 在第二个映像中运行。
- 设置文件定义:
- 在综合系统中的每个 MVS 中,选择一个 CICS 区域作为此文件的共享数据表服务器。 在此区域中,定义文件名,应用程序通过该文件名将数据作为用户维护的数据表读取,数据集名称与包含源数据的数据集名称相同。
在此图中,将 CICS1A 和 CICS2A 设置为服务器区域,并向它们定义名为 UMTNAME 的文件。 文件定义将 DSNAME 指定为 PRODN.SOURCEDS,将 TABLE 指定为 USER ,并允许对 READ , BROWSE , ADD , DELETE 和 UPDATE 执行 YES 操作 (因为此文件定义用于读取数据以及在刷新时更新 UMT)。
- 对于综合系统中的所有其他区域,定义应用程序作为远程文件读取数据的文件名,其中 REMOTESYSTEM 作为同一 MVS 中的共享数据表服务器区域, REMOTENAME 作为该区域中 UMT 的名称。
因此,在此插图中,将在 CICS1B 和 CICS1C 中定义名为 UMTNAME 的文件,其中 REMOTESYSTEM 作为 CICS1A 的 sysid , REMOTENAME 作为 UMTNAME ,这次将 READ 和 BROWSE 作为唯一允许的操作,因为不需要通过这些远程定义来更新 UMT。 在 CICS2B 和 CICS2C中设置了类似的文件定义,但对于这些 CICS2A 是远程系统。
- 在每个共享数据表服务器区域中,设置可用于在刷新 UMT 时读取源数据集的文件定义。
在此图中,将名为 SOURCEDS 的文件定义到 CICS1A 和 CICS2A, DSNAME 为 PRODN.SOURCEDS, TABLE 为 NO ,并且仅允许 READ 和 BROWSE 操作。
- 在综合系统中的一个区域 (有权访问源数据集) 中,定义用于对源应用更新的文件。 文件定义可能与刷新程序用于读取源数据集的文件定义相同,但在这种情况下,需要同时允许读取和更新操作。 如果您愿意,可以决定使用批处理程序来更新数据集,在这种情况下,将不需要此 CICS 文件定义。
此图使用的文件定义与刷新 UMT 时使用的文件定义相同。 在这种情况下,其中一个区域需要将 SOURCEDS 定义为允许所有文件操作。
- 在综合系统中的每个 MVS 中,选择一个 CICS 区域作为此文件的共享数据表服务器。 在此区域中,定义文件名,应用程序通过该文件名将数据作为用户维护的数据表读取,数据集名称与包含源数据的数据集名称相同。
- 设置源数据集,以便所有需要读取或更新该数据集的应用程序都可以访问该数据集。
如果您具有 DFSMS/MVSversion 1 发行版 3 ,那么可以通过在文件定义中指定 RLSACCESS (Yes) ,从任何 CICS 区域访问数据集以进行读取或更新。 请注意,如果使用 RLS 访问方式,那么除非数据集不可恢复,否则无法从批处理程序对其应用更新 (因为只有 CICS 才能打开可恢复数据集以在 RLS 方式下进行更新)。
如果您处于 DFSMS/MVS 的较早发行版,那么可以设置数据集 SHAREOPTIONS ,以便它可以由对源应用更新的程序进行更新,并由所有其他用户读取。 或者,您可以设置数据集,以便仅在未读取数据集时才能对其进行更新,并确保对其打开进行序列化。 要使共享选项在整个综合系统中运行,必须使用 GRS (全局资源序列化)。
在此图中,如果 RLS 不可用,请使用以下任一项来定义 PRODN.SOURCEDS :- SHR (2) ,以便可以由运行将更改应用于数据集的程序的区域进行更新,同时由所有刷新程序读取,
- SHR (1) ,通常会将其打开到应用更改的程序; 然后,当要刷新时,关闭对它的访问权,然后在每个服务器区域上依次打开它,运行刷新程序,并关闭它以允许下一个区域打开它。
- 修改示例程序,使其对 UMT 和源数据集的文件进行命名,并使数据定义与记录的布局相匹配。 在服务器区域中定义程序和事务。
图中的文件名与程序 (UMTNAME 和 SOURCEDS) 中的文件名相同。 定义程序和事务以在 CICS1A 和 CICS2A中运行该程序。
- 现在,您应该已准备好开始使用复制的 UMT。
- 使源数据集具有其初始内容。
- 打开共享数据表服务器区域中的 UMT ,以将源数据集的内容装入到每个区域中。
- 在综合系统中的所有区域中启动应用程序。 他们都将能够使用数据表共享来访问数据。
在 MVS 1 中运行的应用程序将通过 CICS1A中的 UMT 访问数据,而在 MVS 2 中运行的应用程序将通过 CICS2A中的 UMT 访问数据。
- 当新数据到达时,更新源数据集。
在此图中,数据由文件 SOURCEDS 更新。
- 当您希望应用程序访问新数据时,请在将读取源数据集和 UMT 的每个服务器区域中运行事务,并刷新后者以与前者一致。 如果在一个 MVS 上看到的数据与在另一个 MVS 上看到的数据略有不同,那么提供应用程序不会失效,您不必在执行刷新时停止它们的运行。