首页 > 数据库 > Oracle > GoldenGate DDL复制
在GoldenGate 10g中如果要使用DDL复制,则必须先关闭回收站
SQL> show parameter recyclebin
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
alter system set recyclebin = off scope=spfile;
1、在两个节点执行执行DDL同步脚本命令:
先进入goldengate软件安装目录,以SYSDBA身份登录oracle执行以下脚本,执行脚本过程中,需要输入的用户全部是ogg,安装模式为INITIALSETUP,如果数据字典或者某些内部的包有错误,则需要运行catalog.sql和catproc.sql脚本。
SQL>@marker_setup
SQL>@ddl_setup
SQL>@role_setup
SQL>grant GGS_GGSUSER_ROLE to ogg;
SQL>@ddl_enable
如果某项脚本执行错误,需要重新执行时,先要执行清除的脚本:ddl_remove.sql和marker_remove.sql
2、配置两个节点的extract,在eora_1配置文件中添加以下一行:
DDL INCLUDE OBJNAME "scott.*"
最终的内容如下:
EXTRACT EORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD Ogg
TRANLOGOPTIONS EXCLUDEUSER ogg
EXTTRAIL ./dirdat/aa
DDL INCLUDE OBJNAME "scott.*"
TABLE scott.*;
注意:先关闭eora_1进程,再添加,然后重新启动。
3、配置两个节点的replicat
3.1、GGSCI (cuug95) 6> DBLOGIN USERID ogg, PASSWORD Ogg
GGSCI (cuug95) 7> add checkpointtable ogg.checkpoint
如果之前已经添加过,则无需操作。
4、配置REPLICAT进程参数文件,添加以下几行到rora_1配置文件中:
DDL INCLUDE ALL
DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
DDLERROR DEFAULT DISCARD
DDLERROR DEFAULT IGNORE RETRYOP
最终的内容如下:
REPLICAT RORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/RORA_aa.DSC, PURGE
DDL INCLUDE ALL
DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
DDLERROR DEFAULT DISCARD
DDLERROR DEFAULT IGNORE RETRYOP
MAP scott.*, TARGET scott.*;
5、如果新建的表进行同步,update可能不成功,需要进行一下操作,这样子ogg才会去捕捉new_tab的日志信息:
ADD TRANDATA scott.new_tab;
注意:先关闭rora_1进程,再添加,然后重新启动。
5、如果是序列,无需关注,因为oracle是取得序列的值进行insert的。
6、如果源端建表的时候是基于子查询,如果子查询中访问的表在目标端没有,则无法实现ddl同步。或者子查询中的表如果数据不一样,则同步的表数据也不一样,根据各自数据库的子查询中的表来定。
7、如果是insert操作,数据基于子查询,如果子查询访问的表目标端没有,却不受影响,能够同步。
8、update某行时,如果目标数据库没有符合条件的行,ogg会insert一条新行。??
解决办法: 在最新的GG11.2版本中针对此种情况设置了专门的冲突解决机制,在11.2以前配置解决这个冲突很复杂
(11:16:58 AM) louise.liang@oracle.com: 在initial load 中有一个参数可以避免这个冲突,但是在正常复制时一般不建议用
测试:
gc1删除emp_ogg表
scott@PROD>drop table emp_ogg;
Table dropped.
QL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BONUS TABLE
DEPT TABLE
DEPT_OGG TABLE
EMP TABLE
EMP_OGG TABLE
SALGRADE TABLE
TEST1 TABLE
TEST1_STAT TABLE
8 rows selected.
gc2查看,emp_ogg以消失
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BONUS TABLE
DEPT TABLE
DEPT_OGG TABLE
EMP TABLE
SALGRADE TABLE
TEST1 TABLE
TEST1_STAT TABLE
7 rows selected.
gc2删除SALGRADE表
SQL> drop table SALGRADE;
Table dropped.
gc1SALGRADE表以消失
scott@PROD>select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
CLASSES TABLE
DEPT TABLE
DEPT_CLUSTER TABLE 2
DEPT_OGG TABLE
EMP TABLE
EMP_CLUSTER TABLE 1
EMP_DEPT CLUSTER
STUDENTS TABLE
TEST1 TABLE
TEST1_STAT TABLE
TEST2 TABLE
TEST2_STAT TABLE
12 rows selected.
gc1创建表xiete
scott@PROD>create table xiete(id number,name varchar2(10));
Table created.
gc2:
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BONUS TABLE
DEPT TABLE
DEPT_OGG TABLE
EMP TABLE
TEST1 TABLE
TEST1_STAT TABLE
XIETE TABLE
7 rows selected.
此时若要同步xiete表需要在两端作如下配置:
两个节点都赋予权限
grant INSERT, UPDATE, DELETE on scott.xiete to ogg;
EDIT PARAMS EORA_1
EXTRACT EORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
EXTTRAIL ./dirdat/aa
TABLE scott.emp_ogg;
TABLE scott.dept_ogg;
TABLE scott.xiete; 或使用通配符
DDL INCLUDE OBJNAME "scott.*"
EDIT PARAMS PORA_1
EXTRACT PORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
PASSTHRU
RMTHOST gc2, MGRPORT 7788
RMTTRAIL ./dirdat/pa
TABLE scott.emp_ogg;
TABLE scott.dept_ogg;
TABLE scott.xiete;
EDIT PARAMS RORA_1
REPLICAT RORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/RORA_aa.DSC, PURGE
MAP scott.*, TARGET scott.*;
DDL INCLUDE ALL
DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
DDLERROR DEFAULT DISCARD
DDLERROR DEFAULT IGNORE RETRYOP
ADD TRANDATA scott.new_tab;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29492784/viewspace-1208954/ ,如需转载,请注明出处,否则将追究法律责任。