SQL Server 的精确实例化
从 Oracle GoldenGate 23.8 开始,可以使用 SQL Server 的初始加载提取来编排精确实例化。精确的实例化方法允许在源数据库保持联机状态以进行应用程序更新时,将数据从源数据库初始加载到目标数据库。此方法可确保更改数据捕获和传送进程的精确定位,而无需在目标数据库中具有重复数据,也无需在复制中使用 HANDLECOLLISIONS。
Oracle GoldenGate for SQL Server 的精确实例化需要设置源 SQL Server 数据库以允许快照隔离,并在初始加载提取中使用 INITIALLOADOPTIONS USESNAPSHOT 参数。此方法可用于从任何受支持的 SQL Server 源数据库实例化任何受支持的目标数据库。
下面是使用源实例中的方案转储的精确实例化方法示例,然后加载到目标实例,然后配置 Oracle GoldenGate 以进行更改数据复制:
-
ADD TRANDATA到源数据库表。DBLOGIN USERIDALIAS src_aliasADD TRANDATA dbo.* -
TRANDATA 完成后,验证是否已为快照隔离启用数据库,如果没有,请手动启用它。
ALTER DATABASE tpcc_source SET ALLOW_SNAPSHOT_ISOLATION ON; -
对于微服务体系结构,请在 WebUI 中添加“清除 CDC 数据”任务。要了解详细信息,请参阅清除 CDC 准备数据和清除流程。
-
使用
INITIALLOADOPTIONS USESNAPSHOT参数创建初始加载提取。ADD EXTRACT einit, SOURCEISTABLE--Sample Initial Load Extract Parameter File: EXTRACT einit USERIDALIAS tpcc_source2017 INITIALLOADOPTIONS USESNAPSHOT EXTFILE ei, MEGABYTES 500, PURGE TABLE dbo.*; -
启动初始加载提取。
START EXTRACT einit -
当初始加载提取完成并停止时,查看报告文件,查找如下所示的类似消息,该消息将在创建 CDC 提取时使用。
VIEW REPORT einitINFO OGG-05381 A consistent point is established in database 'tpcc_source' at LSN 0x00000488:00002a98:0002. OGG-05379 Create or position a Change Data Capture Extract to LSN 0x00000488:00002a98:0002. Example: ADD EXTRACT <extract-name> TRANLOG LSN 0x00000488:00002a98:0002 or ALTER EXTRACT <extract-name> LSN 0x00000488:00002a98:0002 -
现在,如果按步骤 2 手动启用快照隔离,则允许快照隔离的源数据库选项可以设置为 OFF。
ALTER DATABASE tpcc_source SET ALLOW_SNAPSHOT_ISOLATION OFF; -
使用初始加载提取的报告文件中的 LSN 输出创建 CDC 提取。
ADD EXTRACT extcdc TRANLOG LSN 0x00000488:00002a98:0002ADD EXTTRAIL ea, EXTRACT extcdc -
创建并启动从初始加载提取创建的线索中读取的初始加载复制。
ADD REPLICAT rinit, PARALLEL, EXTTRAIL ei, CHECKPOINTTABLE ggadmin.ggcheckSTART rinit--Sample Initial Load Replicat Parameter file REPLICAT rinit USERIDALIAS tgt_alias BATCHSQL SPLIT_TRANS_RECS 100000 MAP dbo.*, TARGET dbo.*; -
当初始装入复制结束处理时,创建并启动从 CDC 提取创建的线索中读取的 CDC 复制。
ADD REPLICAT repcd, PARALLEL, EXTTRAIL ea, CHECKPOINTTABLE ggadmin.ggcheckSTART EXTRACT extcdcSTART REPLICAT repcd