使用初始加载提取的 Oracle 精确实例化
了解如何使用管理客户端添加初始加载提取。
初始加载方法非常适合在以下情况下进行实例化:
-
从源数据库的子集加载包含一组小表的目标数据库。
-
在异构环境中加载数据
初始加载提取通过直接从源表读取数据并将其写入 EXTFILE 来工作。它直接连接到数据库并获取更改。如下图中所示,执行初始加载实例化时有两个阶段。EXTINIT 提取是初始加载提取,EXTPRM 是主要提取。EXTPRM 进程已设置,但未针对连续复制启动。初始加载提取完成实例化后,将从初始加载启动的点开始连续复制过程。

要配置此提取,您需要结合使用基于文件的初始加载和更改数据捕获 (CDC) 进程。使用初始加载提取的实例化流程包括以下任务:
-
添加和配置初始加载提取:此提取用于将一个或多个表的现有内容从源数据库复制到目标数据库。
-
配置更改数据捕获:用于将事务处理更改从源数据库复制到目标数据库。注:微服务架构不支持使用 Oracle GoldenGate 直接加载加载加载数据。
基于文件的初始加载过程是在 MA 中执行数据复制的首选方法。其主要组件包括:
-
初始加载提取和复制:复制数据库表的现有内容。
-
Primary Extract and Replicat(主提取和复制):复制数据库表中的更改数据。
-
分发路径:将线索文件传输到目标系统。
开始之前,请确保已创建数据库身份证明别名 (USERIDALIAS)。
可以使用 Oracle GoldenGate Web 界面、管理客户端或 cURL 命令设置此配置。
步骤 1:创建主要提取
精准实例化用于将数据库资源正确地从源数据库复制到目标数据库。首先启动主要提取以提前启动更改数据捕获。精确实例化基于以下假设:
注:要使精确的实例化工作,实例化 SCN 必须在注册 SCN 之后。
-
已启动主要提取。它负责更改数据捕获,并指出其注册 SCN。
-
已监视数据库。数据库等待最早的未完成事务处理的 SCN 在注册 SCN 之后。这是实例化 SCN。
-
创建初始加载提取和复制进程时,将使用实例化 SCN。
-
实例化 SCN 用于在初始加载复制完成后创建主复制。
-
对于 MySQL,精确实例化仅适用于 MySQL 源数据库和目标数据库,并使用 MySQL shell 的
Dump实用程序实现。有关Dump实用程序的更多信息,请参见MySQL Dump Utility 。
要开始,请从 AdminClient 创建并启动主提取 EXTPRIM,如以下示例中所示:
命令:
OGG (not connected) 1> CONNECT https://oggdep.example.com:9100 as oggadmin password oggadmin !
输出:
Using default deployment 'OGGDEP'
命令:
OGG (https://oggdep.example.com:9100 OGGDEP) 2> DBLOGIN USERIDALIAS oggadmin
输出:
Successfully logged into database.
命令:
OGG (https://oggdep.example.com:9100 OGGDEP) 3> ADD EXTRACT extprim INTEGRATED TRANLOG BEGIN NOW
输出:
2018-03-16T13:37:07Z INFO OGG-08100 EXTRACT (Integrated) added.
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 4> REGISTER EXTRACT extprim DATABASE
输出:
2018-03-16T13:37:30Z INFO OGG-02003 Extract EXTPRIM successfully registered with database at SCN 1608891.
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 5> EDIT PARAMS extprim
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 6> VIEW PARAMS extprim
输出:
--
-- E X T P R I M . p r m
-- Primary Extract Parameter File
--
Extract EXTPRIM
UseridAlias oggadmin
ExtTrail AA
Table user01.*;
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 7> ADD EXTTRAIL aa EXTRACT extprim
输出:
2018-03-16T13:37:55Z INFO OGG-08100 EXTTRAIL added.
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 8> START EXTRACT extprim
输出:
2018-03-16T13:38:02Z INFO OGG-00975 EXTRACT EXTPRIM starting
2018-03-16T13:38:02Z INFO OGG-15426 EXTRACT EXTPRIM started
在此示例中,oggadmin 是数据库身份证明别名。
创建主要提取后,检索 SCN 注册编号。在 AdminClient 中运行 REGISTER EXTRACT 命令。以下示例检索 SCN 值 1608891。
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 4> REGISTER EXTRACT extprim DATABASE
输出:
2018-03-16T13:37:30Z INFO OGG-02003 Extract EXTPRIM successfully registered with database at SCN 1608891.
步骤 2:确定实例化 SCN
Oracle GoldenGate 微服务体系结构中的管理服务提供了用于检索有关开放数据库事务处理信息的端点。此信息可用于标识实例化初始加载提取时要使用的 SCN。
在以下示例中,实例化 SCN 是 1609723,它是所有未结事务处理中最早的 SCN,该 SCN 也超过了上一步中标识的注册 SCN 1608891。
-- Query for active transactions
--
SELECT T.START_SCN, T.STATUS TSTATUS, T.START_DATE,
S.SID, S.SERIAL#, S.INST_ID, S.USERNAME, S.OSUSER, S.STATUS SSTATUS, S.LOGON_TIME
FROM gv$transaction T
INNER JOIN gv$session S
ON s.saddr = t.ses_addr
UNION ALL
--
-- Query for current status
--
SELECT CURRENT_SCN, 'CURRENT', CURRENT_DATE,
NULL, NULL, NULL, 'SYS', NULL, NULL, NULL
from v$database
ORDER BY 1;
此查询的结果可用于确定实例化 SCN。此特定查询的结果为:
1538916 ACTIVE 2018-03-16 18:10:31.0 3865 9176 1 OGGADMIN oracle INACTIVE 2018-03-16 18:10:26.0 1540555 CURRENT 2018-03-16 18:21:50.0 SYS
用于实例化初始加载提取的 SCN 是使用 SQL*Plus 获取的。在以下示例中,SQL 查询使用实例化 SCN 值 1624963,这是所有已打开事务处理中超过 1608891 注册 SCN 的最早 SCN。
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 14> SHELL ECHO 'SELECT MIN(START_SCN) FROM gv$transaction;' | ${ORACLE_HOME}/bin/sqlplus -S / as sysdba
MIN(START_SCN)
--------------
1624963
如果没有打开的事务处理,则此 SQL 查询将返回一个空结果。考虑到没有未结事务处理的情况的详细查询是:
SELECT MIN(SCN) as INSTANTIATION_SCN
FROM (SELECT MIN(START_SCN) as SCN
FROM gv$transaction
UNION ALL
SELECT CURRENT_SCN
FROM gv$database);
步骤 3:创建和启动初始装入复制
开始此步骤之前,请确保目标系统上已存在检查点表 oggadmin.checkpoints。初始装入复制负责填充目标数据库。对 AdminClient 运行以下命令以创建并启动初始装入复制 (REPINIT):
命令:
OGG (not connected) 1> CONNECT https://oggdep.example.com:9100 as oggadmin password oggadmin !
输出:
Using default deployment 'OGGDEP'
命令:
OGG (https://oggdep.example.com:9100 OGGDEP) 2> DBLOGIN USERIDALIAS oggadmin
输出:
Successfully logged into database.
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 3> ADD CHECKPOINTTABLE oggadmin.checkpoints
输出:
ADD "oggadmin.checkpoints" succeeded.
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 4> ADD REPLICAT repinit EXTTRAIL dd CHECKPOINTTABLE oggadmin.checkpoints
输出:
2018-03-16T13:56:41Z INFO OGG-08100 REPLICAT added.
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 5> EDIT PARAMS repinit
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 6> VIEW PARAMS repinit
输出:
--
-- R E P I N I T . p r m
-- File-Based Initial Load Replicat Parameter File
--
Replicat REPINIT
UseridAlias oggadmin
Map user01.*
Target user01.*;
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 7> START REPLICAT repinit
输出:
2018-03-16T13:58:21Z INFO OGG-00975 REPLICAT REPINIT starting
2018-03-16T13:58:21Z INFO OGG-15426 REPLICAT REPINIT started
步骤 4:创建并启动初始加载提取
使用您检索的实例化 SCN (1624963),将创建初始加载提取,以将数据库表的内容写入线索。创建并启动初始加载提取 EXTINIT。
从 Oracle GoldenGate 26ai 开始,当使用包含通配符的 TABLE 参数解析表时,将不解析初始加载提取表视图。如果视图需要包含在初始加载提取中,则需要在不带通配符的单独 TABLE 参数中指定它们。
例如,如果存在表 hr.employees 和视图 hr.employees_view。对于初始加载提取,如果在初始加载提取的参数文件中指定以下内容:
TABLE hr.*;
初始加载提取中将仅包括表 hr.employees 中的数据。
如果需要在初始加载中包括 hr.employees_view,请将以下参数添加到初始加载提取参数文件:
TABLE SCOTT.TAB1_VIEW;
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 15> ADD EXTRACT extinit SOURCEISTABLE
输出:
2018-03-16T14:08:38Z INFO OGG-08100 EXTRACT added.
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 16> EDIT PARAMS extinit
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 17> VIEW PARAMS extinit
输出:
--
-- E X T I N I T . p r m
-- File-Based Initial Load Extract Parameter File
--
Extract EXTINIT
UseridAlias oggadmin
ExtFile CC Megabytes 2000 Purge
Table user01.*, SQLPredicate "As Of SCN 1624963";
命令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 18> START EXTRACT extinit
输出:
2018-03-16T14:13:42Z INFO OGG-00975 EXTRACT EXTINIT starting
2018-03-16T14:13:42Z INFO OGG-15426 EXTRACT EXTINIT started
步骤 5:创建分发路径
创建两个分发路径(AABB 和 CCDD)以将本地路径从管理客户机复制到远程主机:
命令:
OGG (https://oggdep.example.com:9100 oggdep) 15> ADD DISTPATH aabb SOURCE TRAIL://oggdep.example.com:9102/services/v2/sources?trail=AA target wss://dallas.oggdevops.us:9103/services/v2/targets?trail=BB
输出:
2018-03-16T17:28:27Z INFO OGG-08511 The path 'AABB' has been added.
命令:
OGG (https://oggdep.oggdevops.us:9100 oggdep) 16> ADD DISTPATH ccdd SOURCE TRAIL://oggdep.example.com:9102/services/v2/sources?trail=CC target wss://dallas.oggdevops.us:9103/services/v2/targets?trail=DD
输出:
2018-03-16T17:28:35Z INFO OGG-08511 The path 'CCDD' has been added.
命令:
OGG (https://oggdep.example:9100 oggdep) 17> START DISTPATH aabb
输出:
2018-03-16T17:28:42Z INFO OGG-08513 The path 'AABB' has been started.
命令:
OGG (https://oggdep.example.com:9100 oggdep) 18> START DISTPATH ccdd
输出:
2018-03-16T17:28:47Z INFO OGG-08513 The path 'CCDD' has been started.
如果使用 ogg 协议而不是 wss,则必须使用 TARGETTYPE 选项。这种情况下的语法为:
ADD DISTPATH path-name SOURCE source-uri TARGET target-uri [ TARGETTYPE ( MANAGER | COLLECTOR | RECVSRVR ) ]
TARGETTYPE 指定在分发路径使用旧协议时的目标类型。只有当目标 URI 方案为 ogg 时,此参数才有效。
步骤 6:创建主复制
初始加载提取和复制完成后,可以将其删除。然后,在远程主机上创建主复制进程,以将更改数据应用于目标数据库。
使用 AdminClient 创建主复制进程。注:主复制在实例化 SCN 中启动。
命令:
OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 12> ADD REPLICAT repprim EXTTRAIL bb CHECKPOINTTABLE oggadmin.checkpoints
输出:
2018-03-16T17:37:46Z INFO OGG-08100 REPLICAT added.
命令:编辑参数
OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 13> EDIT PARAMS repprim
命令:
OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 14> VIEW PARAMS repprim
输出:
--
-- R E P P R I M . p r m
-- Replicat Parameter File
--
Replicat REPPRIM
USERIDALIAS oggadmin
Map user01.*
Target user01.*;
命令:
OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 15> START REPLICAT repprim ATCSN 1624963
输出:
2018-03-16T17:38:10Z INFO OGG-00975 REPLICAT REPPRIM starting
2018-03-16T17:38:10Z INFO OGG-15426 REPLICAT REPPRIM started