在添加提取和复制流程之前
了解为 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) 菜单,然后执行以下步骤:
-
根据需要选择“Table(表)”或“Schema(方案)”选项,然后单击加号进行添加。
-
输入需要为其设置补充日志记录的表的名称。务必输入包含方案名的完整表名,例如
HR.EMP。还可以使用通配符,而不是特定的表名。 -
单击提交。
在没有 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) 菜单,然后执行以下步骤:
-
选择表选项,然后单击加号进行添加。
-
输入需要为其设置补充日志记录的表的名称。确保输入全表名,例如
EMPLOYEE。还可以使用通配符,而不是特定的表名。 -
单击提交。
为 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 连接”页连接到目标数据库,选择检查点,然后执行以下步骤:
-
单击加号以允许添加检查点表。
-
以格式添加检查点表名
*table*.*checkpoint_table_name* -
单击提交。创建检查点后,您将能够在检查点表列表中看到该检查点。
要从命令行执行此任务,请参见《 Command Line Interface Reference for Oracle GoldenGate 》中的 ADD CHECKPOINTTABLE 。
在 Db2 中为 i 添加带有日志的检查点表
在 i 目标数据库的 Db2 中,写入到检查点表的每个检查点都必须记录在复制事务处理中。
使用日志记录创建检查点表的常见方法如下:
-
在目标系统上,创建复制检查点文件。
设置要用于检查点文件的日志的名称。缺省值为
GGSCHEMA/OGGJRN。通过使用
DEFAULTJOURNAL命令设置当前管理客户机会话的默认值,可以对其进行更改。DEFAULTJOURNAL命令的语法为:DEFAULTJOURNAL *library_name*/*journal_name*其中:library_name 是库的名称,
journal_name是要用于后续操作(可以选择性地指定日志)的日志的名称。 -
添加检查点表格。
ADD CHECKPOINTTABLE *library_name*.chkptab -
将日志记录添加到检查点表。
ADD TRANDATA *library_name*.CHKPTAB
有关创建检查点表的更多信息,请参见 Add a Checkpoint Table 。
添加脉动表
心跳表用于监视整个数据复制周期的滞后。自动心跳从每个源数据库发送到复制流,方法是更新心跳种子表和心跳表中的记录,并构建心跳历史记录。
复制流中的每个进程都使用跟踪信息更新心跳记录,然后这些信息在目标数据库的心跳表中更新。这些心跳记录将插入或更新到目标数据库的心跳表中。
注:创建心跳表是可选的,但建议使用。
要添加心跳表,请从“DB Connections(数据库连接)”页面连接到每个源和目标数据库,选择“Heartbeat(心跳)”菜单,然后执行以下步骤:
-
单击旁边的加号 (+) 以添加心跳表。
-
接受默认设置或根据需要修改可用值。
注:对于具有仅目标选项的数据库,如果该数据库仅将用作复制流中的目标数据库,请选择此选项,以避免创建不必要的作业,这些作业将与源数据库关联。
-
单击提交。
要从命令行执行此任务并查看特定于数据库的重要限制,请参见 Command Line Interface Reference for Oracle GoldenGate 中的 ADD HEARTBEATTABLE 。
以下步骤介绍了用于设置心跳表的命令。
-
从命令行启动 Admin Client。
-
从管理客户端连接到部署。
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 -
使用
DBLOGIN USERIDALIAS命令连接到源数据库和目标数据库。以下示例显示了与具有身份证明别名ggeast的源数据库的连接:(https://remotehost:16000 ggdep_postgres)> DBLOGIN USERIDALIAS ggeast -
添加脉动表:
(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 毫秒。