在添加提取和复制流程之前

了解为 Oracle GoldenGate 部署创建提取和复制流程之前所需的先决条件配置。

添加 TRANDATA

对 i、Db2 LUW、Db2 z/OS、Oracle、PostgreSQL、SQL Server 和 Sybase 有效。Db2

根据源数据库,必须启用补充日志记录来捕获 DML 操作,并且可以通过 Web 界面中数据库连接的 Trandata 菜单或通过发出 ADD TRANDATA 或 ADD SCHEMATRANDATA (仅适用于 Oracle)在管理客户机中启用。

初始加载提取不需要在源数据库上添加 TRANDATA。但是,如果将初始加载提取和更改数据捕获 (CDC) 提取结合使用,则对于联机实例化,应在开始初始加载提取之前添加 TRANDATA。

为 Oracle AI Database 启用 TRANDATA 或 SCHEMATRANDATA

可以在表、方案或全局(数据库)级别执行此操作。

要启用补充日志记录,请从 DB Connections(DB 连接)页面连接到数据库,选择 Trandata(Trandata) 菜单,然后执行以下步骤:

  1. 根据需要选择“Table(表)”或“Schema(方案)”选项,然后单击加号进行添加。

  2. 输入需要为其设置补充日志记录的表的名称。务必输入包含方案名的完整表名,例如 HR.EMP。还可以使用通配符,而不是特定的表名。

  3. 单击提交。

在没有 CDC 的情况下,可以跳过 ADD TRANDATA。

还可以使用命令 ADD TRANDATA 和 ADD SCHEMATRANDATA 来设置 trandata 和 schema 级别 trandata。

注:在运行 ADD TRANDATA 命令之前,需要首先使用 DBLOGIN 命令连接到要添加提取的数据库。此外,在添加提取之前,请运行 ADD TRANDATA 或 ADD SCHEMATRANDATA 命令。

为非 Oracle 数据库启用 TRANDATA

对 Db2 i、Db2 LUW、Db2 z/OS、PostgreSQL、SQL Server 和 Sybase 有效。

可以在表或全局(数据库)级别执行此操作。要启用补充日志记录,请从 DB Connections(DB 连接)页面连接到数据库,选择 Trandata(Trandata) 菜单,然后执行以下步骤:

  1. 选择表选项,然后单击加号进行添加。

  2. 输入需要为其设置补充日志记录的表的名称。确保输入全表名,例如 EMPLOYEE。还可以使用通配符,而不是特定的表名。

  3. 单击提交。

为 i 启用 Db2 的更改捕获

要捕获对日志中表的更改,可以在 IBM i 命令行上运行 STRJRNPF 命令,或者从 Admin Client 运行 ADD TRANDATA 命令。ADD TRANDATA 命令调用 STRJRNPF,并且是为表启动日志记录的推荐方法,因为它可以确保在 STRJRNPF 命令中设置所需的日志映像属性 Record Images (IMAGES): *BOTH。

ADD TRANDATA 命令为:

ADD TRANDATA table_specification

其中:table_specification 为以下值之一:

-

*schema.table* [JOURNAL *library/journal*]

-

*library/file* [JOURNAL *library/journal]*)

指定默认日记账

要在 ADD TRANDATA 命令中为多个表或文件指定默认日志,而不是指定 JOURNAL 关键字,请在发出 ADD TRANDATA 之前使用以下命令。

DEFAULTJOURNAL *library/journal*

如果在使用 ADD TRANDATA 命令时未指定日志,则假定日志来自 DEFAULTJOURNAL。

要显示 DEFAULTJOURNAL 的当前设置,可以发出不带有参数的命令。

删除默认日记账规范 **

要删除默认日志的使用,请使用以下命令:

DEFAULTJOURNAL CLEAR

为 Db2 LUW 启用更改捕获

配置 Db2 以 CREATE TABLE 和 ALTER TABLE 命令的 DATA CAPTURE CHANGES 功能提供的扩展格式记录数据更改。此格式为 Oracle GoldenGate 提供了更新语句更改的行之前和之后的完整映像。按如下方式运行 ALTER TABLE 命令:

发出下列命令。

ADD TRANDATA owner.table

其中 owner.table 是表的全限定名称。可以使用通配符指定多个表名。

ADD TRANDATA 发出以下命令,其中包括记录 LONGVAR 列的先前映像:

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

示例 7-1 排除 LONGVAR 日志记录:

要从 ALTER TABLE 命令中省略 INCLUDE LONGVAR COLUMNS 子句,请使用带有 EXCLUDELONG 选项的 ADD TRANDATA。

ADD TRANDATA *owner.table*, EXCLUDELONG

注:如果从日志记录中排除 LONGVAR 列,则在图像(如 GETUPDATEBEFORES、NOCOMPRESSUPDATES 和 NOCOMPRESSDELETES 参数)之前所需的 Oracle GoldenGate 功能可能会在表包含这些列时返回错误。有关解决方法,请参见 TRANLOGOPTIONS 参数的 REQUIRELONGDATACAPTURECHANGES | NOREQUIRELONGDATACAPTURECHANGES 选项。

添加检查点表

所有非并行复制都需要检查点表,并且必须在添加复制之前在数据库中创建检查点表。检查点在事务处理中成功或失败,因此 Replicat 可以确保事务处理仅应用一次,即使进程或数据库发生故障也是如此。

可以在检查点部分内查看检查点表。要添加检查点表,请从“DB 连接”页连接到目标数据库,选择检查点,然后执行以下步骤:

  1. 单击加号以允许添加检查点表。

  2. 以格式添加检查点表名

    *table*.*checkpoint_table_name*
  3. 单击提交。创建检查点后,您将能够在检查点表列表中看到该检查点。

要从命令行执行此任务,请参见《 Command Line Interface Reference for Oracle GoldenGate 》中的 ADD CHECKPOINTTABLE 。

在 Db2 中为 i 添加带有日志的检查点表

在 i 目标数据库的 Db2 中,写入到检查点表的每个检查点都必须记录在复制事务处理中。

使用日志记录创建检查点表的常见方法如下:

  1. 在目标系统上,创建复制检查点文件。

    设置要用于检查点文件的日志的名称。缺省值为 GGSCHEMA/OGGJRN。

    通过使用 DEFAULTJOURNAL 命令设置当前管理客户机会话的默认值,可以对其进行更改。DEFAULTJOURNAL 命令的语法为:

    DEFAULTJOURNAL *library_name*/*journal_name*

    其中:library_name 是库的名称,journal_name 是要用于后续操作(可以选择性地指定日志)的日志的名称。

  2. 添加检查点表格。

    ADD CHECKPOINTTABLE *library_name*.chkptab
  3. 将日志记录添加到检查点表。

    ADD TRANDATA *library_name*.CHKPTAB

有关创建检查点表的更多信息,请参见 Add a Checkpoint Table 。

添加脉动表

心跳表用于监视整个数据复制周期的滞后。自动心跳从每个源数据库发送到复制流,方法是更新心跳种子表和心跳表中的记录,并构建心跳历史记录。

复制流中的每个进程都使用跟踪信息更新心跳记录,然后这些信息在目标数据库的心跳表中更新。这些心跳记录将插入或更新到目标数据库的心跳表中。

注:创建心跳表是可选的,但建议使用。

要添加心跳表,请从“DB Connections(数据库连接)”页面连接到每个源和目标数据库,选择“Heartbeat(心跳)”菜单,然后执行以下步骤:

  1. 单击旁边的加号 (+) 以添加心跳表。

  2. 接受默认设置或根据需要修改可用值。

    注:对于具有仅目标选项的数据库,如果该数据库仅将用作复制流中的目标数据库,请选择此选项,以避免创建不必要的作业,这些作业将与源数据库关联。

  3. 单击提交。

要从命令行执行此任务并查看特定于数据库的重要限制,请参见 Command Line Interface Reference for Oracle GoldenGate 中的 ADD HEARTBEATTABLE 。

以下步骤介绍了用于设置心跳表的命令。

  1. 从命令行启动 Admin Client。

  2. 从管理客户端连接到部署。

    CONNECT https://remotehost:*srvmgrport* DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password*

    下面是一个示例:

    CONNECT https://remotehost:16000 DEPLOYMENT *ggdep_postgres* AS ggadmin PASSWORD P@ssWord
  3. 使用 DBLOGIN USERIDALIAS 命令连接到源数据库和目标数据库。以下示例显示了与具有身份证明别名 ggeast 的源数据库的连接:

    (https://remotehost:16000 ggdep_postgres)> DBLOGIN USERIDALIAS ggeast
  4. 添加脉动表:

    (https://remotehost:16000 ggdep_postgres)> ADD HEARTBEATTABLE

(可选)对于仅用于单向复制的目标数据库,可以包括不会创建心跳记录更新函数的 TARGETONLY 选项。

有关命令选项的详细信息,请参见 ADD HEARTBEATTABLE 。

为 PostgreSQL 运行心跳更新和清除函数

Oracle GoldenGate for PostgreSQL 支持心跳表配置,在更新和清除任务方面存在一些限制。

心跳表和关联的函数是从 ADD HEARTBEATTABLE 命令创建的,但是对于 PostgreSQL,没有自动调度程序来调用这些函数。

一个主要功能控制心跳记录更新和心跳历史记录表清除功能。这两个功能的默认设置是更新频率为 60 秒,清除历史记录为 1 天,默认情况下会删除 30 天之前的所有记录。

要调用主心跳记录功能,用户应创建执行操作的操作系统级别作业

"select ggschema.gg_hb_job_run();"

调用此函数时,它将考虑更新频率设置和历史记录清除设置,并使用这些值而不考虑函数调用的调度程序设置。

例如,用户可以使用以下语法创建 Cron 作业,并使其每分钟运行一次。

PGPASSWORD="gguserpasswd" psql -U gguser -d dbname -h remotehost -p 5432 -c "select ggschema.gg_hb_job_run();" >/dev/null
 2>&1

Windows Task Scheduler、pgAdmin 或 pg_cron 是可用于调度函数调用的其他程序。

创建 Oracle GoldenGate CDC 清理任务

对于 SQL Server 用户,在添加提取之前需要创建 Oracle GoldenGate CDC 清除任务。您可以通过执行 Details of the Oracle GoldenGate CDC Cleanup Process 中的步骤来执行此操作。

PostgreSQL:提取远程部署的注意事项

对于远程部署,源数据库和 Oracle GoldenGate 安装在单独的服务器上。远程部署是支持云数据库的唯一选项,例如 Azure for PostgreSQL 或 Amazon Aurora PostgreSQL。

对于远程部署,数据库服务器与 Oracle GoldenGate 服务器之间的操作系统字节顺序需要相同。

Oracle GoldenGate 服务器的服务器时区应与数据库服务器的服务器时区同步。如果无法执行此操作,则在创建或更改提取时需要通过 LSN 完成提取的位置。

在远程捕获用例中,使用 SQLEXEC 可能会引入额外的延迟,因为必须为提取处理的每个记录串行执行 SQLEXEC 操作。如果远程中心提取执行需要 SQLEXEC 的特殊筛选,并且性能影响太严重,则可能需要将提取进程移到源数据库附近。

对于远程部署,低网络延迟非常重要,建议 Oracle GoldenGate 服务器与源数据库服务器之间的网络延迟小于 1 毫秒。