oracle DDL 同步: -> 不支持及有限支持 。 oracle 数据库保留的schemas, goldengate是不支持复制的。
-> goldengate 不支持超过2M 长度的DDL语句。
->goldengate 只支持单项的DDL 复制,不支持双向DDL复制。
->goldengate 只支持源端和目标段结构一致的DDL复制和DDL有关的procedure和query必须保持正确的结构有限执行。
->不支持的schema, ogg默认不复制,不需要更多设置。
->受限支持的DDL, 可以通过ddl_ddl2file.sql 获取被忽略的oracle DDL操作,会把获取的操作放在user_dump_dest 目录下的一个文件里。
-> 在投递中必须使用参数
assumetargetdefs
oracle DDL复制原理: -> ogg ddl的复制是基于数据库全局trigger的复制,在source库建立一个oracle全局trigger捕获DDL操作到中间表,Extract读取中间表DDL语句并与DML语句根据csn排序,pump投递到target端,target端的replicat 再重现改DDL语句。
-> DDL 复制 基于 trigger, 而DML 复制基于 日志。两则相互独立,DML不影响DDL,DDL不影响DML捕获。
步骤:
一: 安装goldengate DDL 对象:
关闭所有 进程组: GGSCI > stop extract *
二: 指定源端数据库的模式,DDL复制的用户使用goldengate 的用户来承担,要求DBA 权限。
GGSCI > edit params ./GLOBALS
ggschema ogg --GGSCHEMA <ddl_schema> --goldengate 用户
三: 运行*.sql 脚本,在source端: sys用户下
SQL >@marker_setup.sql --为goldengate DDL做准备
SQL >@ddl_setup.sql --为DDL 准备
SQL >@role_setup.sql --创建goldengate DDL复制角色
SQL> @ddl_enable.sql --开启DDL的功能
SQL> @marker_status.sql --验证DDL 状态
四: 修改源端:Extract 配置文件,pump进程不需要: 在extract 各进程中table 之前加入下面配置
DDL INCLUDE ALL
DDLOPTIONS ADDTRANDATA, REPORT
五: 修改Replicat 配置文件: 在replicat 各个进程中map前加入下面配置
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
六: 启动进程组: source : mgr extract pump target : mgr replicat
七: 验证
eg:(source 端)
GGSCI (dominic.mysql1) 21> view params ./GLOBALS
ggschema ogg
GGSCI (dominic.mysql1) 22> VIEW PARAMS EXTRA_1
extract extra_1
dynamicresolution
userid ogg,password ogg
rmthost dominic.mysql2,mgrport 7809,compress
exttrail /dba/app/oggs/dirdat/et
ddl include all
ddloptions addtrandata, report
table scott.*;
GGSCI (dominic.mysql1) 23> VIEW PARAMS PUMP_1
extract pump_1
dynamicresolution
passthru
rmthost dominic.mysql2,mgrport 7809,compress
rmttrail /dba/app/oggs/dirdat/pt
table scott.*;
--table ogg.test;
target端:
GGSCI (dominic.mysql2) 3> view params ./GLOBALS
checkpointtable ogg.checkpoint
GGSCI (dominic.mysql2) 4> VIEW PARAMS MGR
PORT 7809
dynamicportlist 7810-7850
autostart er *
autorestart extract *,waitminutes 2, retries 5
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts /dba/app/oggs/rt*,usecheckpoints,minkeepdays 3
GGSCI (dominic.mysql2) 5> VIEW PARAMS REP1
replicat rep1
userid ogg,password ogg
assumetargetdefs
reperror default,discard
discardfile /dba/app/oggs/dirrpt/rep1.dsc,append,megabytes 50
dynamicresolution
ddl include mapped
ddloptions report
map scott.*,target scott.*;
注意: 只要你的source端 的目录名称,存放数据目录不变,只修改参数值,直接重启进程组 ok ,不需要重新添加命令。
可以先做DML 操作,当数据同步以后,在做DDL 操作。
DDL异常与错误处理: