GoldenGate(3)_DDL和Sequence同步

本文介绍使用GoldenGate进行DDL及序列同步的方法,包括配置步骤、验证过程及原理解析,帮助理解数据同步机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1DDL同步

1.1先决条件

分别在源、目标执行:
1)11g下,alter system set recyclebin=off DEFERRED;
2)ogg用户需要专属的表空间,且支持自扩展。

1.2执行脚本

分别在源、目标执行:用sys用户在sqlplus中,执行ogg根目录下的:
1)marker_setup.sql
2)ddl_setup.sql
3)role_setup.sql
4)ddl_enable.sql
5)rdbms/admin/dbmspool.sql(Oracle目录下)
6)ddl_pin.sql
3、配置extract、replicate
Extract下:

DDL INCLUDE ALL

Replicate下:

DDL INCLUDE ALL
DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5

ps:DDLERROR DLL错误处理,否则DLL失败后,replicate将失败

1.3验证

序号DDL操作验证结果
1建表成功
2创建索引成功
3增加字段成功
4创建sp成功
5修改sp:如果正在执?
6错误处理:成功
7序列成功
8分区表成功
9drop table成功

1.4原理

1)看看脚本执行创建的对象

序号对象名对象类型
1GGS_MARKER_SEQSEQUENCE
2GGS_MARKER*TABLE
3DDLORA_GETERRORSTACKFUNCTION
4DDLORA_ERRORISUSERCANCELFUNCTION
5DDLORA_GETALLCOLSLOGGINGFUNCTION
6DDLVERSIONSPECIFICPACKAGE
7DDLORA_GETLOBSPROCEDURE
8FILTERDDLFUNCTION
9DDLORA_VERIFYDDLFUNCTION
10FILE_SEPARATORFUNCTION
11CREATE_TRACEPROCEDURE
12CLEAR_TRACEPROCEDURE
13TRACE_PUT_LINEPROCEDURE
14GGS_DDL_RULESTABLE
15GGS_DDL_RULES_LOGTABLE
16GGS_TEMP_COLSTABLE
17GGS_TEMP_UKTABLE
18GGS_STICKTABLE
19GGS_SETUPTABLE
20GGS_DDL_SEQSEQUENCE
21GGS_DDL_HIST_ALTTABLE
22GGS_DDL_HISTTABLE
23GGS_DDL_COLUMNSTABLE
24GGS_DDL_LOG_GROUPSTABLE
25GGS_DDL_PARTITIONSTABLE
26GGS_DDL_PRIMARY_KEYSTABLE
27GGS_DDL_OBJECTSTABLE
28DDLREPLICATIONPACKAGE
29DDLREPLICATIONPACKAGE BODY
30DDLAUXPACKAGE
31DDLAUXPACKAGE BODY

GGS_MARKER:在源端是捕获的DDL,一般包括2条记录:1是DDL语句,2是后台用的变量。在目标端是执行的DDL,如果DDL不能在目标端执行,则不插入到该表,但在trail文件可以看到(接收到但不执行)。

SEQNOFRAGMENTNOOPTIMETYPESUBTYPEMARKER_TEXT
8012017-10-18 11:17:41DDLDDLINFO“,C1=’drop table A_BAK ‘,”
8022017-10-18 11:17:41DDLDDLINFO,C5=’80’,,B2=’92771’,,G4=”,,B3=’HF’,,B4=’A_BAK’,,C12=”,,C13=”,,B5=’TABLE’,,B6=’DROP’,,B7=’80’,,B8=’GOLDENGATE.GGS_DDL_HIST’,,B9=’HF’,,C7=’11.2.0.1.0’,,C8=’11.2.0.0.0’,,C9=’VALID’,,C10=’1’,,C11=’orcl’,,G3=’NONUNIQUE’,,C14=’NO’,,C20=’NO’,,C17(‘1’)=’NLS_LANGUAGE’,,C18(‘1’)=’SIMPLIFIED CHINESE’,,C17(‘2’)=’NLS_TERRITORY’,,C18(‘2’)=’CHINA’,,C17(‘3’)=’NLS_CURRENCY’,,C18(‘3’)=’RMB’,,C17(‘4’)=’NLS_ISO_CURRENCY’,,C18(‘4’)=’CHINA’,,C17(‘5’)=’NLS_NUMERIC_CHARACTERS’,,C18(‘5’)=’.,’,,C17(‘6’)=’NLS_CALENDAR’,,C18(‘6’)=’GREGORIAN’,,C17(‘7’)=’NLS_DATE_FORMAT’,,C18(‘7’)=’DD-MON-RR’,,C17(‘8’)=’NLS_DATE_LANGUAGE’,,C18(‘8’)=’SIMPLIFIED CHINESE’,,C17(‘9’)=’NLS_SORT’,,C18(‘9’)=’BINARY’,,C17(‘10’)=’NLS_TIME_FORMAT’,,C18(‘10’)=’HH.MI.SSXFF AM’,,C17(‘11’)=’NLS_TIMESTAMP_FORMAT’,,C18(‘11’)=’DD-MON-RR HH.MI.SSXFF AM’,,C17(‘12’)=’NLS_TIME_TZ_FORMAT’,,C18(‘12’)=’HH.MI.SSXFF AM TZR’,,C17(‘13’)=’NLS_TIMESTAMP_TZ_FORMAT’,,C18(‘13’)=’DD-MON-RR HH.MI.SSXFF AM TZR’,,C17(‘14’)=’NLS_DUAL_CURRENCY’,,C18(‘14’)=’RMB’,,C17(‘15’)=’NLS_COMP’,,C18(‘15’)=’BINARY’,,C17(‘16’)=’NLS_LENGTH_SEMANTICS’,,C18(‘16’)=’BYTE’,,C17(‘17’)=’NLS_NCHAR_CONV_EXCP’,,C18(‘17’)=’FALSE’,,C19=’17’,

原理:在源端建触发其,将捕获的DDL存入GGS_MARKER表,再类似普通表把数据传递到目标trail,再逐条抽取执行,可执行且成功的插入目标GGS_MARKER。

2 Sequence同步

2.1部署

1)在可同步DDL的基础上
2)分别在源、目标执行ogg_root\sequence.sql

2.2配置extract、replicate

配置不复杂,对象里包含sequence即可。
Extract:
sequence hf.*;
投递:
sequence hf.*;
Replicate:
map hf.,target hf.; #包含了序列

ps:相对而言DDL实际中更实用一些,在升级数据模型时省了一些重复操作。
序列同步因为要在2个库间同步,中间涉及网络同步,势必对序列生成的效率有影响,不推荐(可以对2个库采用不同的起步数代替)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值