Oracle GoldenGate系统之----双向同步数据表

双向同步与单向同步类似,但需要着重注意两个问题:防止数据循环和防止数据冲突。
1、防止数据循环
在EXTRACT进程中忽略REPLICAT的事务,一般排除提取用户的操作,并且与需要同步的用户分开
如USERID SCOTT,PASSWORD TIGER
TRANLOGOPTIONS EXCLUDEUSER SCOTT
2、防止数据冲突
一般要从应用层面解决,避免操作相同的数据。

以下是配置步骤和参数。假设是A、B两个库之间的同步配置。
从A到B
-- 管理进程配置
GGSCI (dgrac) 1> edit param mgr

PORT 7801
DYNAMICPORTLIST 7802-7820
AUTOSTART ER *
AUTORESTART ER *,RETRIES 3,WAITMINUTES 2,RESETMINUTES 60
STARTUPVALIDATIONDELAY 5
PURGEOLDEXTRACTS ./dirdat/*,USECHECKPOINTS,MINKEEPDAYS 7

-- EXTRACT配置
GGSCI (dgrac) 2> add extract exts1,tranlog,begin now
 EXTRACT added.

GGSCI (dgrac) 3> edit param exts1
 extract exts1
 setenv(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
 userid scott@wailon,password tiger
 tranlogoptions excludeuser scott
 exttrail /u01/app/ogg/dirdat/l1
 table lrj.s1;

GGSCI (dgrac) 4> add exttrail /u01/app/ogg/dirdat/l1,extract exts1
EXTTRAIL added.

-- PUMP配置
GGSCI (dgrac) 5> add extract pumps1 ,exttrailsource /u01/app/ogg/dirdat/l1,begin now
EXTRACT added.

GGSCI (dgrac) 6> edit param pumps1
extract pumps1
setenv(NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
userid scott@wailon,password tiger
rmthost 192.168.56.101,mgrport 7801
rmttrail /u01/app/ogg/dirdat/s1
PASSTHRU
table lrj.s1;

GGSCI (dgrac) 7> add rmttrail /u01/app/ogg/dirdat/s1,extract pumps1
RMTTRAIL added.

-- REPLICAT配置

GGSCI (dgrac) 8> edit param reps1
replicat reps1
setenv(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid scott@wailon, password tiger
assumetargetdefs
reperror default,discard
discardfile /u01/app/ogg/dirout/reps1.dsc,append,megabytes 100
map lrj.s1,target lrj.s1,&
colmap(usedefaults,"ENAME" = "USERNAME"),&
-- 解决冲突,更新记录不存在时插入,但只插入更新的列,其他列为空,还是要人工处理
RESOLVECONFLICT (UPDATEROWMISSING, (DEFAULT, OVERWRITE));
HANDLECOLLISIONS

-- 启动所有进程
GGSCI (dgrac) 9> start mgr
MGR is already running.

GGSCI (dgrac) 10> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING        
EXTRACT     RUNNING     EXTS1       00:00:00      00:00:09   
EXTRACT     RUNNING     PUMPS1      00:00:00      00:00:07   
REPLICAT    RUNNING     REPS1       00:00:00      00:00:05   
 
从B到A

-- 管理进程配置
GGSCI (dg) 1> edit param mgr

PORT 7801
DYNAMICPORTLIST 7802-7820
AUTOSTART ER *
AUTORESTART ER *,RETRIES 3,WAITMINUTES 2,RESETMINUTES 60
STARTUPVALIDATIONDELAY 5
PURGEOLDEXTRACTS ./dirdat/*,USECHECKPOINTS,MINKEEPDAYS 7

-- EXTRACT配置
GGSCI (dg) 2> add extract exts1,tranlog,begin now
 EXTRACT added.

GGSCI (dg) 3> edit param exts1
 extract exts1
 setenv(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
 userid scott@ogg,password tiger
 tranlogoptions excludeuser scott
 exttrail /u01/app/ogg/dirdat/l1
 table lrj.s1;

GGSCI (dg) 4> add exttrail /u01/app/ogg/dirdat/l1,extract exts1
EXTTRAIL added.

-- PUMP配置
GGSCI (dg) 5> add extract pumps1 ,exttrailsource /u01/app/ogg/dirdat/l1,begin now
EXTRACT added.

GGSCI (dg) 6> edit param pumps1
extract pumps1
setenv(NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
userid scott@ogg,password tiger
rmthost 192.168.56.131,mgrport 7801
rmttrail /u01/app/ogg/dirdat/s1
PASSTHRU
table lrj.s1;

GGSCI (dg) 7> add rmttrail /u01/app/ogg/dirdat/s1,extract pumps1
RMTTRAIL added.

-- REPLICAT配置

GGSCI (dg) 8> edit param reps1
replicat reps1
setenv(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid scott@ogg, password tiger
assumetargetdefs
reperror default,discard
discardfile /u01/app/ogg/dirout/reps1.dsc,append,megabytes 100
map lrj.s1,target lrj.s1,&
colmap(usedefaults,"ENAME" = "USERNAME"),&
RESOLVECONFLICT (UPDATEROWMISSING, (DEFAULT, OVERWRITE));
HANDLECOLLISIONS

-- 启动所有进程
GGSCI (dg) 9> start mgr
MGR is already running.

GGSCI (dg) 10> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING        
EXTRACT     RUNNING     EXTS1       00:00:00      00:00:09   
EXTRACT     RUNNING     PUMPS1      00:00:00      00:00:07   
REPLICAT    RUNNING     REPS1       00:00:00      00:00:05  


数据测试
B端插入:
02:44:09 LRJ@ogg>select * from s1
02:44:12   2  /

     EMPNO USERNAME   JOB              MGR HIREDATE            SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------ ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80          1000        100         20
      7499 ALLEN      SALESMAN        7698 20-FEB-81          1800        400         30
      7521 WARD       SALESMAN        7698 22-FEB-81          1450        600         30
      7566 JONES      MANAGER         7839 02-APR-81          3175        100         20
      7654 MARTIN     SALESMAN        7698 28-SEP-81          1450       1500         30
      7698 BLAKE      MANAGER         7839 01-MAY-81          3050        100         30
      7782 CLARK      MANAGER         7839 09-JUN-81          2650        100         10
      7788 SCOTT      ANALYST         7566 19-APR-87          3200        100         20
      7839 KING       PRESIDENT            17-NOV-81          5200        100         10
      7844 TURNER     SALESMAN        7698 08-SEP-81          1700        100         30
      7876 ADAMS      CLERK           7788 23-MAY-87          1300        100         20
      7900 JAMES      CLERK           7698 03-DEC-81          1150        100         30
      7902 FORD       ANALYST         7566 03-DEC-81          3200        100         20
      7934 MILLER     CLERK           7782 23-JAN-82          1500        100         10
      2000 yojan

15 rows selected.

02:45:41 LRJ@ogg>insert into s1(empno,username,sal) values(4000,'GZITECH',2000);

1 row created.

02:45:46 LRJ@ogg>commit;

Commit complete.

A端查看:
02:45:50 LRJ@ogg>select * from s1;

     EMPNO USERNAME   JOB              MGR HIREDATE            SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------ ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80          1000        100         20
      7499 ALLEN      SALESMAN        7698 20-FEB-81          1800        400         30
      7521 WARD       SALESMAN        7698 22-FEB-81          1450        600         30
      7566 JONES      MANAGER         7839 02-APR-81          3175        100         20
      7654 MARTIN     SALESMAN        7698 28-SEP-81          1450       1500         30
      7698 BLAKE      MANAGER         7839 01-MAY-81          3050        100         30
      7782 CLARK      MANAGER         7839 09-JUN-81          2650        100         10
      7788 SCOTT      ANALYST         7566 19-APR-87          3200        100         20
      7839 KING       PRESIDENT            17-NOV-81          5200        100         10
      7844 TURNER     SALESMAN        7698 08-SEP-81          1700        100         30
      7876 ADAMS      CLERK           7788 23-MAY-87          1300        100         20
      7900 JAMES      CLERK           7698 03-DEC-81          1150        100         30
      7902 FORD       ANALYST         7566 03-DEC-81          3200        100         20
      7934 MILLER     CLERK           7782 23-JAN-82          1500        100         10
      2000 yojan
      4000 GZITECH                                            2000

16 rows selected.

A端插入:
09:34:18 LRJ@wailon>insert into s1(empno,ename,job) values(3000,'WAILON','CLERK');

1 row created.

09:34:40 LRJ@wailon>commit;

Commit complete.

B端查看:
09:34:42 LRJ@wailon>select * from s1;

     EMPNO USERNAME   JOB              MGR HIREDATE            SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------ ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80          1000        100         20
      7499 ALLEN      SALESMAN        7698 20-FEB-81          1800        400         30
      7521 WARD       SALESMAN        7698 22-FEB-81          1450        600         30
      7566 JONES      MANAGER         7839 02-APR-81          3175        100         20
      7654 MARTIN     SALESMAN        7698 28-SEP-81          1450       1500         30
      7698 BLAKE      MANAGER         7839 01-MAY-81          3050        100         30
      7782 CLARK      MANAGER         7839 09-JUN-81          2650        100         10
      7788 SCOTT      ANALYST         7566 19-APR-87          3200        100         20
      7839 KING       PRESIDENT            17-NOV-81          5200        100         10
      7844 TURNER     SALESMAN        7698 08-SEP-81          1700        100         30
      7876 ADAMS      CLERK           7788 23-MAY-87          1300        100         20
      7900 JAMES      CLERK           7698 03-DEC-81          1150        100         30
      7902 FORD       ANALYST         7566 03-DEC-81          3200        100         20
      7934 MILLER     CLERK           7782 23-JAN-82          1500        100         10
      2000 yojan
      3000 WAILON     CLERK
      4000 GZITECH                                            2000

17 rows selected.

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/429786/viewspace-1062584/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/429786/viewspace-1062584/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 GoldenGate概述 5 1.1 GoldenGate技术原理 5 1.2 GoldenGate可靠的复制 8 1.3 GoldenGate支持操作系统和数据库类型 8 第2章 安装GoldenGate 9 2.1 安装GoldenGate环境 9 2.2 分别在源数据库,目标数据库安装GoldenGate 9 2.2.1 下载GoldenGate 9 2.2.2 解压 10 2.2.3 安装GoldenGate 10 2.2.4 同时在目标数据库安装GoldenGate 11 第3章 把源数据库的数据同步到目标数据库中 11 3.1 设置ORACLE_HOME,ORACLE_SID环境变量 11 3.2 在源数据库ora01上打开归档日志及其辅助日志 12 3.3 在源数据库,目标数据库创建GoldenGate GLOBALS参数文件 13 3.3.1 在源数据库创建 13 3.3.2 创建Goldengate manager服务 13 3.3.3 在目标数据库安装上面步骤创建manager 14 3.4 在源数据库,目标数据库配置mgr,启动manager进程 14 3.4.1 配置manager服务的mgr配置文件 14 3.4.2 启动mgr 15 3.4.3 同样在目标数据库配置mgr文件 15 3.5 测试把源数据库数据同步到目标数据库数据库上 16 3.5.1 在源数据库创建test01数据库用户 16 3.5.2 执行GoldenGate的测试脚本,创建表 16 3.5.3 插入数据脚本 17 3.5.4 在goldengate中用oracle用户登陆数据库 17 3.5.5 增加需要传输的用户表 18 3.5.6 在目标数据库创建用户及其表结构 18 3.6 用goldengate中的direct load方式导入数据到目标数据库的test02用户表上 19 3.6.1 在源数据库配置一个extract进程 eini01 19 3.6.2 在目标数据库端配置一个replicat进程 19 3.6.3 在源数据库执行初始化过程 20 3.6.4 验证目标数据库端的test02用户表数据是否和源数据库一样 20 第4章 把源数据库的修改数据同步到目标数据库中 21 4.1 在源数据库配置一个EXTRACT进程及配置其文件 21 4.1.1 配置EXTRACT文件 21 4.1.2 在GGSCI.exe增加一个EXTRACT进程 22 4.2 配置data pump 23 4.2.1 在源数据库端添加一个pump进程 23 4.2.2 在源数据库的ggsci中增加extract进程 24 4.2.3 在源数据库执行RMTTRAIL 24 4.3 启动data pump capture process 24 4.4 在目标数据库端配置change delivery 26 4.5 在目标数据库中创建goldengate专属用户及其表 26 4.6 在目标数据库配置replicat进程 27 4.6.1 在ggsci增加一个replicat进程 27 4.6.2 编辑配置replicat文件 27 4.7 启动replicat进程 28 4.8 测试检查同步结果 28 4.8.1 在源数据库执行插入数据 28 第5章 把源数据库的DDL(表结构)修改同步到目标数据库中 32 5.1 在源数据库端关闭数据库的回收站 32 5.2 编辑源数据库参数文件GLOBALS 32 5.3 在源数据库创建goldengate01用户,并创建goldengate所需要的表 33 5.4 检查源数据库上的表是否安装好 35 5.5 修改源数据库配置extract文件 35 5.6 重新启动extract进程 36 5.7 验证源数据库是否可以同步表结构到目标数据库中 36 第6章 配置源数据库、目标数据库的双向数据传输 36 6.1 关闭目标数据库回收站,打开数据库辅助日志 37 6.2 在源数据库端添加checkpoint表,实现一致性 37 6.3 在源数据库增加一个replicat进程 38 6.4 在源数据库创建一个checkpoint表 38 6.5 编辑配置replicat进程 39 6.6 在目标数据库端配置GLOBALS文件 39 6.7 在目标数据库安装goldengate用户需要的表 39 6.8 在目标数据库配置一个extract进程 40 6.9 在目标数据库端配置一个pump进程 40 6.10 在源数据库端启动replicat进程 42 6.11 在目标数据库中启动extract、replicat的进程 42 6.12 目标数据库可以把数据、表结构的修过同步到源数据库服务器上 42 第7章 备注: 44 7.1 Oracle官网的下载地址 44 7.2 GoldenGate的GLOBALS配置文件内容 44 7.3 GoldenGate的eiex01配置文件内容 44 7.4 GoldenGate的epmp01配置文件内容 44 7.5 GoldenGate的rora01配置文件内容 45 7.6 GoldenGate的eiexbb配置文件内容 45 7.7 GoldenGate的epmpbb配置文件内容 45 7.8 GoldenGate的rorabb配置文件内容 45 7.9 更改GoldenGate的复制时间点 46 7.10 查看GoldenGate命令格式 46 7.11 查看manager,extract,replicat是否运行 47 7.12 查看goldengate进程的错误 48
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值