GoldenGate(3)_DDL和Sequence同步

来源:互联网 发布:仓库管理系统网页源码 编辑:程序博客网 时间:2024/06/06 07:30

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 ALLDDLERROR 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 分区表 成功 9 drop table 成功

1.4原理

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

序号 对象名 对象类型 1 GGS_MARKER_SEQ SEQUENCE 2 GGS_MARKER* TABLE 3 DDLORA_GETERRORSTACK FUNCTION 4 DDLORA_ERRORISUSERCANCEL FUNCTION 5 DDLORA_GETALLCOLSLOGGING FUNCTION 6 DDLVERSIONSPECIFIC PACKAGE 7 DDLORA_GETLOBS PROCEDURE 8 FILTERDDL FUNCTION 9 DDLORA_VERIFYDDL FUNCTION 10 FILE_SEPARATOR FUNCTION 11 CREATE_TRACE PROCEDURE 12 CLEAR_TRACE PROCEDURE 13 TRACE_PUT_LINE PROCEDURE 14 GGS_DDL_RULES TABLE 15 GGS_DDL_RULES_LOG TABLE 16 GGS_TEMP_COLS TABLE 17 GGS_TEMP_UK TABLE 18 GGS_STICK TABLE 19 GGS_SETUP TABLE 20 GGS_DDL_SEQ SEQUENCE 21 GGS_DDL_HIST_ALT TABLE 22 GGS_DDL_HIST TABLE 23 GGS_DDL_COLUMNS TABLE 24 GGS_DDL_LOG_GROUPS TABLE 25 GGS_DDL_PARTITIONS TABLE 26 GGS_DDL_PRIMARY_KEYS TABLE 27 GGS_DDL_OBJECTS TABLE 28 DDLREPLICATION PACKAGE 29 DDLREPLICATION PACKAGE BODY 30 DDLAUX PACKAGE 31 DDLAUX PACKAGE BODY

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

SEQNO FRAGMENTNO OPTIME TYPE SUBTYPE MARKER_TEXT 80 1 2017-10-18 11:17:41 DDL DDLINFO “,C1=’drop table A_BAK ‘,” 80 2 2017-10-18 11:17:41 DDL DDLINFO ,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个库采用不同的起步数代替)。

原创粉丝点击