数据库配置

了解 Oracle GoldenGate for Db2 z/OS 的数据库配置设置。Oracle GoldenGate 需要数据库设置。

在 Db2 z/OS 上安装提取组件

Oracle GoldenGate Db2 z/OS 提取使用 SQL 对象访问和读取 Db2 日志。这些 Oracle GoldenGate Db2 z/OS 对象需要最低硬件平台 zEC12、最低操作系统发行版 2.4 和最低 Db2 发行版 12.1。这些组件包括可执行加载模块、SQL 存储过程和函数,以及通过存储过程调用的外部程序。这些组件是:

  1. 外部授权程序包括以下内容:

    1. oggib001- 初始化和实用程序

    2. oggrb001- 日志读取程序功能

    3. oggmt001- 用于监视 ECSA 和 64 位内存的独立程序

    4. oggjt001- 从 oggib001 程序运行的 oggmt001 启动 JCL 的设置程序

    5. oggfr001- 由 DBA 在 Oracle 技术支持指导下使用的实用程序

  2. SQL 存储过程和函数模板包含在 SQL 脚本 zOS_OGG_Setup_Template.sql 中(带有 OGGINITB 和 OGGREADB SQL)。

  3. JCL 过程,oggtask.jcl

注: SQL 和 JCL 名称值的外部名称是默认值,您可以对其进行编辑和更新。此过程将在后续部分中讨论。

Db2 z/OS 提取的复制进程图说明了 Db2 z/OS 提取及其大型机的组件的复制进程。

图 1:Db2 z/OS 提取的复制进程

后面是图像的说明

进程开始并运行,如上图所示,使用数字 1 到 9。下面列出了这些步骤:

  1. 提取会从安装期间创建的参数文件中读取参数(包括 JCL 参数)。

  2. 提取报告启动信息并准备写入线索文件。

  3. ODBC 用于从 Db2 数据库收集信息并启动复制。

  4. OGGINITB SQL 存储过程开始准备共享内存并收集复制所需的其他数据。

  5. SQL 存储过程调用的 OGGIB001 外部程序使用 OGGJT001 作业设置程序启动内存监视器任务。

  6. OGGMT001 内存监视器任务开始监视 ECSA 和 64 位共享内存。

  7. OGGREADB SQL 函数调用外部程序 OGGRB001。

  8. OGGRB001 外部程序反复调用 Db2 日志读取程序以创建一个结果集,该结果集向提取返回 1 到许多日志记录缓冲区。

  9. 日志记录结果集完成时,OGGRB001 在将结果集发送到提取后结束。

提取会重复步骤 7 到 9,直到关闭或异常终止。如果内存任务无法启动,则 OGGIB001 程序将返回一个标志,指示存在 JCL 错误或设置问题,并且 Extract 将开始管理其内存。如果内存任务正常启动,则内存任务会测试 48 字节 ECSA 共享内存中不断更改的字段。如果提取因任何原因而终止,这些字段将停止更改。此时,如果提取或网络速度较慢,内存管理器将等待并释放内存,然后在配置的时间限制后关闭。

要安装 Oracle GoldenGate for Db2 z/OS Extract 所需的组件,请执行以下操作:

  1. 确保 Db2 z/OS 系统上存在磁带库 (PDSE),并确保在授权的磁带库列表中为其创建条目。此库是 Oracle GoldenGate 外部程序对象所在的位置。

  2. 确保 APF 授权的 WLM 过程从上一步引用 PDSE。Oracle 建议存储过程的 WLM 环境的 NUMTCB 值为 10-40。NUMTCB 值取决于针对数据库并发运行的最大提取数以及每个提取所需的吞吐量。如果希望在设置 NUMTCB 时具有灵活性,请在 WLM 的启动 JCL 中指定它,但不要在创建面板中指定它。

  3. 通过完成以下操作,可以为 WLM 应用程序环境和创建存储过程设置安全性:

    1. (可选)指定哪些 WLM 建立的地址空间可以运行存储过程。如果未完成此步骤,则任何建立 WLM 的地址空间都可以运行存储过程。

    2. 授予用户在特定 WLM 地址空间中创建过程的访问权限。

    3. 授予用户在特定方案中创建过程的访问权限。将 GRANT 语句与相应方案的 CREATIN 选项一起使用。

    4. 授予用户访问权限,以便为特定集合中的过程创建程序包。将 GRANT 语句与相应集合的 CREATE 选项一起使用。

    5. 向相应人员授予刷新 WLM 环境的访问权限。

    6. 向相应的人员添加其他 RACF 权限,从而允许 WLM 过程启动内存管理器作业。

  4. 确保用于运行 WLM 启动 JCL 过程的 ID 具有使用 RRSAF 的权限。每次启动一个 Db2 WLM 地址空间时,都会使用 RRSAF 附加到 Db2。请参见 Db2 12 for z/OS Installation and Migration Guide 。

  5. 在 Linux 或 UNIX 安装的 Oracle GoldenGate for Db2 z/OS 中,Oracle GoldenGate 安装目录中有一个名为 zOSutils.zip 的 ZIP 文件,其中包含一个名为 zOSPrograms.zip 的文件。将 zOSPrograms.zip 解压缩到 zOSPrograms.tar,并以二进制模式将 zOSPrograms.tar 复制到 Db2 z/OS 系统到 HFS 目录中。

  6. 在 USS 或 OMVS 中的 Db2 z/OS 系统上,将目录更改为包含 zOSPrograms.tar 的目录。

  7. 使用以下命令恢复对象:tar -xovf zOSPrograms.tar。

  8. 将对象复制到授权的 PDSE。使用 cp -X ogg[irmj][abt][0-9]* "//'authorized_PDSE_name'",其中 authorized_PDSE_name 是针对 Oracle GoldenGate 对象的 APF 授权 PDSE 的名称。使用此命令可安装具有缺省名称的对象。

    注:在此命令中,复制目标为双引号正斜杠单引号授权 PDSE 名称单引号双引号。-X 是大写 X,不是小写 x。

  9. 安装具有不同名称的脚本可使您符合系统协议,或者允许您运行多个版本的 Oracle GoldenGate。要安装具有不同名称的脚本,建议在将程序复制到 PDSE 之前创建重命名程序的 shell 脚本。以下代码段中提供了 shell 脚本的示例。

    #!/bin/bash
    # Copy new programs renaming them to version 21.12 names.
    cp oggib001 oggi2112
    cp oggrb001 oggr2112
    cp oggmt001 oggm2112
    cp oggjt001 oggj2112
    cp -X oggi2112 "//'SYS4.WLMDSNA.AUTHLOAD'"
    cp -X oggr2112 "//'SYS4.WLMDSNA.AUTHLOAD'"
    cp -X oggm2112 "//'SYS4.WLMDSNA.AUTHLOAD'"
    cp -X oggj2112 "//'SYS4.WLMDSNA.AUTHLOAD'"

    可以使用 chmod +x scriptname 命令运行该脚本。您可以复制并重用此脚本用于新版本。

  10. 必须使用所选的 SQL 工具创建 SQL 过程,以便 Oracle GoldenGate 可以调用提取对象。Oracle GoldenGate 存储过程应仅授予那些将它们用于复制的用户的权限。

    Oracle GoldenGate 安装目录中的示例 SQL 脚本模板包含用于在 Db2 z/OS 实例上设置存储过程和功能的 SQL 语句。zOSutils.zip 中包含的 SQL 脚本 zOS_OGG_Setup_Template.sql 适用于 Db2 v12.1 及更高版本,可以从任何可以连接到 Db2 z/OS 实例的平台上的任何 SQL 工具运行。此脚本必须在与提取一起使用的 Db2 实例上运行。远程安装目录中提供的脚本采用 ASCII 格式。

    在运行脚本之前编辑以下行:

    • 修改 WLM ENVIRONMENT 行,为将用于 Oracle GoldenGate 的 WLM 环境使用正确的名称。

注:可以使用 TRANLOGOPTIONS REMOTESCHEMA schemaname 提取参数配置 oggifi0001 方案名称。模板中的过程和函数名称 OGGINITB 和 OGGREADB 不可配置。如果脚本名称和 PDSE 对象名称匹配,则可以重命名脚本和 PDSE 中的每个外部名称。更改这些名称是允许迁移到新版本的过程的一部分,或者在 Db2 z/OS 上是否必须遵循特定的命名过程。

下表包含您可能希望编辑和/或更新的组件的检查列表:

表 2 可编辑组件列表

组件 自 重命名 地点
oggib001 tar 文件   授权 PDSE
oggrb001 tar 文件   授权 PDSE
oggmt001 tar 文件   授权的 PDSE 和过程库
oggjt001 tar 文件   授权的 PDSE 和提取参数
oggpr001 tar 文件   过程库和提取参数
精巢 MVS   添加提取参数(如果需要)
步骤库 MVS   WLM 和 oggpr001 过程库
遥控器     zOS_OGG_Setup_Template.sql 和提取参数
WLM 名称 MVS   zOS_OGG_Setup_Template.sql
外部计划     zOS_OGG_Setup_Template.sql

注:请记得在每次安装新补丁程序后执行所有这些步骤。

使用共享内存管理器进行提取

Oracle GoldenGate Extract 从 WLM 启动一个单独的任务或作业来监视共享内存使用情况。此作业是在 MVS 中运行的最小任务,但不是 WLM。从 WLM 启动时,此脚本的启动用户名必须具有执行权限(通常使用 RACF 等)。此受监视的共享内存由一个 48 到 64 字节的 ECSA 区域和一个基于提取缓冲区大小的 64 位区域组成。

对于提取执行的每次读取,将更新共享内存中的特定字段。无论脚本是否返回任何数据,都会更新这些字段。监视器检查这些字段以确保提取未变为无效。如果提取处于非活动状态,则共享内存将释放,监视器将结束。可以使用 Extract 参数文件中的 remote_memory_options 参数控制内存管理器。

可以指定多个子参数以配置监视器任务。您可以通过指定远程内存选项的子参数来配置监视器使用的等待间隔和非活动时间,如以下示例所示:

remote_memory_options wait_interval 2000 inactive_time 01:00

在示例中,等待间隔以百秒为单位表示,并导致监视器在每次内存检查之间等待 20 秒。如果监视器检查了 1 小时(格式为 HH:MM),并且提取仍处于非活动状态,则监视器将在释放共享内存后关闭。如果提取在该小时内返回到活动状态,则监视器将重置其状态并继续监视。

wait_interval 的值可以从 100 到 6000,默认值为 1000。inactive_time 可以从 00:10 到 12:00,默认值为 00:30。如果监视器未正确启动,则“提取”在“提取”报告中显示警告消息,并且“提取”将继续处理。提取将尝试在 ECSA 内存关闭时释放它。

远程内存参数有三个选项可使此功能正常工作。这些参数的语法为:

示例:

remote_memory_options task_procedure OGGPR001
remote_memory_options task_library TEST.PROCLIB
remote_memory_options task_setup OGGJT001

可以在单个命令中指定多个选项,如下所示:

remote_memory_options task_procedure OGGPR001 task_library TEST.PROCLIB task_setup OGGJT001

注:远程内存参数的值不区分大小写。

默认值为过程名称 OGGPR001 和任务设置程序 OGGJT001。任务库没有缺省值,因为该过程可能安装在一个 MVS 系统缺省过程库中。仅当该过程不在系统默认库中时,才需要任务库参数。

内存任务将从简单的 JOB 卡和 EXEC 过程名称开始,其中包含从提取传递的参数。某些 z/OS 系统可能需要作业卡上的其他各种参数。还可以使用远程内存参数修改 JOB 参数,如下面的示例所示。

remote_memory_options task_jobname [valid MVS job name (see below)]
remote_memory_options task_acct_info [valid MVS acct value (see below)]
remote_memory_options task_programmer [valid MVS programmer name, Can use single quotes]
remote_memory_options task_class [valid MVS job class A to Z or 0 to 9]
remote_memory_options task_msgclass [valid MVS msgclass A to Z or 0 to 9]
remote_memory_options task_msglevel [valid MVS message level n or (,n) or (n,n)  n=valid digit]
remote_memory_options task_priority [valid MVS priority 0-15]

可以使用两个有效字符和星号(例如 AA*)指定 JOB 名称。缺省 JOB 名称为 GG*。指定星号时,该星号将替换为六个随机数。否则,如果指定一到八字节字符名称,则该名称必须是有效的 MVS 作业名称。

以以下任何有效的 MVS 格式指定帐户值:

对于允许使用特殊字符的参数(如 acct_info 和 programmer),请将它们括在单引号中。此外,有关在引号中使用双单引号或 & 号的 MVS 规则将继续适用。提取对这些参数进行最少的验证,并将完整的验证留给 MVS 进程。如果您指定重复参数并忽略任何重复项,提取将接受第一个参数。

示例过程 JCL 文件将包括在 zOSPrograms.zip 文件中。此 JCL 不会替换 WLM 过程。在 WLM 中创建的监视器使用 JCL 在 MVS 中运行。如果添加支持作业输出归档或其他过程的命令或 JCL,则 JCL 过程可以提高灵活性。

注:在安装和设置内存管理器期间,当您必须等待 RACF 设置问题、启动器使用情况、作业类使用情况或与内存管理器相关的其他类似问题时,可能需要临时关闭内存管理器。Extract 将在此实例中以其传统模式运行,并释放 ECSA 和 64 位共享内存。提取显示提取报告末尾的共享内存释放。

Oracle 不建议将此解决方案作为永久解决方案。使用时,用户负责监视 ECSA 和 64 位内存的释放。用于打开此功能的参数以下划线开头,以提醒用户系统正在此模式下运行。其他远程内存选项可以保留到位,通过删除选项来关闭内存管理。远程内存管理参数默认为启用,并按如下所示指定:

remote_memory_options _remote_memory_on
remote_memory_options _remote_memory_off

JCL 具有以下格式:

//*====================================================================
//* EXAMPLE JCL FOR RUNNING THE COMMON MEMORY MONITOR PROCEDURE
//* ADDRESS SPACE NEEDING AN AUTHORIZED LOAD LIBRARY
//* NOTE: THE PROGRAM OGGMT001 CAN BE RENAMED IN THE LIBRARY BUT THE
//*       NEW NAME MUST MATCH THE PROGRAM NAME IN THIS JCL
//*====================================================================
//OGGDSNNA PROC RGN=0K TR=,EX=,MEM=,LEN=,SEC=,DUR=,VER=
//OGGDSNNX EXEC PGM=OGGMT001,REGION=&RGN,TIME=NOLIMIT,
// PARM='&TR &EX &MEM &LEN &SEC &DUR &VER'
//*--------------------------------------------------------------------
//* REPLACE &PREFIX.**.AUTHLOAD LIBRARIES WITH SITE SPECIFIC FILE(S)
//* ALSO REPLACE THE CEE LIBRARY WITH SITE SPECIFIC FILE
//* DSNN COULD REPRESENT A DB2 SPECIFIC LOAD LIBRARY IF ONE EXISTS
//*--------------------------------------------------------------------
//STEPLIB  DD DISP=SHR,DSN=&PREFIX..WLMDSNN.USER.AUTHLOAD
//         DD DISP=SHR,DSN=CEE.SCEERUN
//SYSPRINT DD SYSOUT=*
//SYSOUT   DD SYSOUT=*

修改标记有 PREFIX 的库,使其在系统中工作。如果重命名了从 zOSPrograms.tar 文件复制的程序 OGGMT001,则必须在 JCL 中对其进行更改。PROC 语句上的空参数用于提供信息。作业 OGGJT001 设置程序使用从提取传递的信息提供这些值。您还可以根据需要指定任意数量的步骤库数据集名称。zOSPrograms.tar 文件中提供的 JCL 过程提供了使用多个步骤库的示例。