ogg_单项同步_ddl

来源:互联网 发布:ubuntu ant 安装路径 编辑:程序博客网 时间:2024/05/18 04:45
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异常与错误处理:
        

0 0