使用 SOURCEISTABLE 实例化初始加载提取

使用 SOURCEISTABLE 参数对初始加载提取使用此过程。此过程不适用于使用 Oracle Data Pump 或任何精确实例化方法进行实例化。此过程使用 HANDLECOLLISIONS 而非精确定位,以便在加载初始数据时源数据库可以保持活动状态。

这些示例使用 Oracle 源和目标、HR 方案以及以下线索名称:

注:将示例别名、URL、主机、端口、方案名称和线索名称替换为环境中的值。

步骤 1:创建并启动主要 TRANLOG 提取

连接到源部署。对于 Oracle 源,启用补充日志记录,创建和注册集成的主提取,并在开始初始加载之前启动它。记录 REGISTER EXTRACT 返回的注册 SCN;不要仅重新运行命令来检索该值。

ADMINCLIENT: Source deployment
OGG (not connected) 1> CONNECT https://<source-admin-url> AS <deployment-user> PASSWORD "<deployment-password>"
OGG (https://<source-admin-url> source_deployment) > DBLOGIN USERIDALIAS <source-db-alias>
OGG (https://<source-admin-url> source_deployment as <source-db-alias>) > ADD SCHEMATRANDATA hr

如果所选表(而不是整个方案)需要日志记录,请对这些表使用 ADD TRANDATA,例如:

ADD TRANDATA hr.*

创建并注册主提取,然后创建其参数文件:

OGG (https://<source-admin-url> source_deployment as <source-db-alias>) > ADD EXTRACT extprim INTEGRATED TRANLOG BEGIN NOW
OGG (https://<source-admin-url> source_deployment as <source-db-alias>) > REGISTER EXTRACT extprim DATABASE
OGG (https://<source-admin-url> source_deployment as <source-db-alias>) > EDIT PARAMS extprim

主要提取参数文件 (EXTPRIM):

EXTRACT extprim
USERIDALIAS <source-db-alias>
EXTTRAIL AA
TABLE hr.*;

创建本地源线索并启动主要提取:

OGG (https://<source-admin-url> source_deployment as <source-db-alias>) > ADD EXTTRAIL AA EXTRACT extprim MEGABYTES 2000
OGG (https://<source-admin-url> source_deployment as <source-db-alias>) > START EXTRACT extprim

对于容器数据库,请使用相应的三部分对象名称或有效的 SOURCECATALOG 语句。对于其他源数据库类型,请使用特定于数据库的注册、日志记录和启动位置语法。

步骤 2:创建并启动初始加载提取

初始加载提取是任务提取。它读取源表并将记录写入本地初始加载线索 CC。特定于 Oracle 的 SQLPREDICATE "AS OF SCN" 子句在所选一致点选择表内容。

在启动初始加载复制之前,请确保已提交在启动主 TRANLOG 提取时打开的所有事务处理。保持打开状态的事务处理不会被初始加载提取或主要 TRANLOG 提取捕获,并且可能会丢失。

创建初始加载提取及其参数文件:

ADMINCLIENT: Source deployment
OGG (https://<source-admin-url> source_deployment as <source-db-alias>) > ADD EXTRACT extinit SOURCEISTABLE
OGG (https://<source-admin-url> source_deployment as <source-db-alias>) > EDIT PARAMS extinit

初始加载提取参数文件 (EXTINIT):

EXTRACT extinit
USERIDALIAS <source-db-alias>
EXTFILE CC MEGABYTES 2000 PURGE
TABLE hr.*, SQLPREDICATE "AS OF SCN <instantiation-scn>";

从 Oracle GoldenGate 26ai 开始,初始加载提取中的通配符 TABLE 语句不会解析视图。要包括视图,请单独指定而不使用通配符,例如:

TABLE hr.employees_view;

启动和监视初始加载提取:

OGG (https://<source-admin-url> source_deployment as <source-db-alias>) > START EXTRACT extinit
OGG (https://<source-admin-url> source_deployment as <source-db-alias>) > INFO EXTRACT extinit DETAIL
OGG (https://<source-admin-url> source_deployment as <source-db-alias>) > VIEW REPORT extinit

步骤 3:创建和启动分发服务路径

从源部署创建路径。SOURCE URI 标识源分发服务和本地线索。TARGET URI 标识目标接收器服务和目标线索。源和目标线索名称必须与为相应流创建的线索匹配。

创建正在进行的更改数据的路径(AA 到 BB):

ADMINCLIENT: Source deployment
OGG (https://<source-admin-url> source_deployment) > ADD DISTPATH aabb SOURCE trail://<source-dist-host>:<source-dist-port>/services/v2/sources?trail=AA TARGET wss://<target-recv-host>:<target-recv-port>/services/v2/targets?trail=BB
OGG (https://<source-admin-url> source_deployment) > START DISTPATH aabb
OGG (https://<source-admin-url> source_deployment) > INFO DISTPATH aabb DETAIL

创建初始加载数据的路径(CC 到 DD):

OGG (https://<source-admin-url> source_deployment) > ADD DISTPATH ccdd SOURCE trail://<source-dist-host>:<source-dist-port>/services/v2/sources?trail=CC TARGET wss://<target-recv-host>:<target-recv-port>/services/v2/targets?trail=DD
OGG (https://<source-admin-url> source_deployment) > START DISTPATH ccdd
OGG (https://<source-admin-url> source_deployment) > INFO DISTPATH ccdd DETAIL

对于需要路径验证的安全目标,请将以下子句附加到每个 ADD DISTPATH 命令:

AUTHENTICATION USERIDALIAS <target-path-alias> DOMAIN <target-path-domain>

当别名位于默认域中时,省略 DOMAIN。必须为源部署中的目标路径验证配置别名和域。

如果使用传统 ogg 协议而不是 ws 或 wss,还应在 ADD DISTPATH 命令中指定相应的 TARGETTYPE 选项。

步骤 4:创建并启动初始加载复制

连接到目标部署,创建检查点表,并添加读取目标线索 DD 的非集成初始负载复制。复制可以在初始加载线索到达之前启动;它将在分发路径运行后等待 DD 中的数据。

ADMINCLIENT: Target deployment
OGG (not connected) 1> CONNECT https://<target-admin-url> AS <deployment-user> PASSWORD "<deployment-password>"
OGG (https://<target-admin-url> target_deployment) > DBLOGIN USERIDALIAS <target-db-alias>
OGG (https://<target-admin-url> target_deployment as <target-db-alias>) > ADD CHECKPOINTTABLE ggadmin.ggcheckpoint
OGG (https://<target-admin-url> target_deployment as <target-db-alias>) > ADD REPLICAT repinit EXTTRAIL DD CHECKPOINTTABLE ggadmin.ggcheckpoint
OGG (https://<target-admin-url> target_deployment as <target-db-alias>) > EDIT PARAMS repinit

初始装入复制参数文件 (REPINIT):

REPLICAT repinit
USERIDALIAS <target-db-alias>
MAP hr.*, TARGET hr.*;

启动和监视初始装入复制:

OGG (https://<target-admin-url> target_deployment as <target-db-alias>) > START REPLICAT repinit
OGG (https://<target-admin-url> target_deployment as <target-db-alias>) > INFO REPLICAT repinit DETAIL

步骤 5:完成初始加载并删除一次性对象

等待初始加载提取到达输入结束,CC 到 DD 路径已将所有记录传送到 DD,REPINIT 已应用这些记录。使用以下检查:

ADMINCLIENT: Source deployment
OGG (https://<source-admin-url> source_deployment) > INFO EXTRACT extinit DETAIL
OGG (https://<source-admin-url> source_deployment) > INFO DISTPATH ccdd DETAIL
ADMINCLIENT: Target deployment
OGG (https://<target-admin-url> target_deployment as <target-db-alias>) > INFO REPLICAT repinit DETAIL
OGG (https://<target-admin-url> target_deployment as <target-db-alias>) > SEND REPLICAT repinit, LOGEND

验证初始加载结果后,仅删除一次性路径和进程对象。保留主提取 EXTPRIM 和主路径 AABB。

从源部署中:

STOP DISTPATH ccdd
DELETE DISTPATH ccdd
STOP EXTRACT extinit
DELETE EXTRACT extinit

从目标部署中,如果 REPINIT 仍在运行,则停止它,然后将其删除:

STOP REPLICAT repinit
DELETE REPLICAT repinit

DELETE EXTRACT 需要 Oracle 的相应源数据库登录,DELETE REPLICAT 需要目标数据库登录。删除进程组不一定会删除其参数文件或线索文件;通过部署支持的管理操作管理保留的对象。

步骤 6:使用 HANDLECOLLISIONS 创建并启动主复制

在目标上创建主复制。此过程使用 HANDLECOLLISIONS,而主复制应用可能与初始加载数据重叠的更改。

对于 HANDLECOLLISIONS 工作流,如果支持,请使用非集成的主复制。不要将 HANDLECOLLISIONS 与集成的 Oracle Replicat 一起使用;当需要集成的 Replicat 时,请使用精确的实例化方法。

ADMINCLIENT: Target deployment
OGG (https://<target-admin-url> target_deployment) > DBLOGIN USERIDALIAS <target-db-alias>
OGG (https://<target-admin-url> target_deployment as <target-db-alias>) > ADD REPLICAT repprim EXTTRAIL BB CHECKPOINTTABLE ggadmin.ggcheckpoint
OGG (https://<target-admin-url> target_deployment as <target-db-alias>) > EDIT PARAMS repprim

主复制参数文件 (REPPRIM):

REPLICAT repprim
USERIDALIAS <target-db-alias>
HANDLECOLLISIONS
MAP hr.*, TARGET hr.*;

启动和监视主复制:

OGG (https://<target-admin-url> target_deployment as <target-db-alias>) > START REPLICAT repprim
OGG (https://<target-admin-url> target_deployment as <target-db-alias>) > INFO REPLICAT repprim DETAIL
OGG (https://<source-admin-url> source_deployment) > INFO DISTPATH aabb DETAIL

在主复制捕获并处理在初始加载期间排队的更改后,禁用 HANDLECOLLISIONS:

OGG (https://<target-admin-url> target_deployment as <target-db-alias>) > SEND REPLICAT repprim, NOHANDLECOLLISIONS

SEND REPLICAT ... NOHANDLECOLLISIONS 禁用当前运行的冲突处理,但不会从参数文件中删除 HANDLECOLLISIONS。在下次重新启动之前从参数文件中删除 HANDLECOLLISIONS,或在受影响的 MAP 语句之前添加 NOHANDLECOLLISIONS。