概述
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 | 分区表 | 成功 |
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_rootsequence.sql
2.2配置extract、replicate
配置不复杂,对象里包含sequence即可。
Extract:
sequence hf.*;
投递:
sequence hf.*;
Replicate:
map hf.,target hf.; #包含了序列
ps:相对而言DDL实际中更实用一些,在升级数据模型时省了一些重复操作。
序列同步因为要在2个库间同步,中间涉及网络同步,势必对序列生成的效率有影响,不推荐(可以对2个库采用不同的起步数代替)。
最后
以上就是怕黑煎蛋为你收集整理的GoldenGate(3)_DDL和Sequence同步的全部内容,希望文章能够帮你解决GoldenGate(3)_DDL和Sequence同步所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复