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

标签: | 发表时间:2020-06-05 16:57 | 作者:
出处:http://blog.itpub.net
双向同步与单向同步类似,但需要着重注意两个问题:防止数据循环和防止数据冲突。
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,passwordtiger
 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,passwordtiger
 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>insertinto 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>insertinto 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/,如需转载,请注明出处,否则将追究法律责任。

相关 [oracle goldengate 系统] 推荐:

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

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

Oracle GoldenGate 监控工具:ggserr.log 错误日志不可忽视

- - CSDN博客推荐文章
Oracle 原厂最近在生产环境的主数据库安装了 OEM 12C 的监控插件后,主数据库对外十几个库同步同步的. Oracle GoldenGate 实例出现异常,疯狂地往 GoldenGate 根目录的 ggserr.log 输入出如下错误日志:. 2013-02-22 22:33:26  WARNING OGG-01930  Oracle GoldenGate Capture for Oracle, pcqstqz1.prm:  Datastore error in 'dirbdb': BDB0060 PANIC: fatal region error detected; run recovery.

探讨一下,如何用开源替代Oracle Goldengate - 墨天轮

- -
大家好,今天我们要来探讨一下如何用开源替代Oracle Goldengate软件. 所以我们要想办法在今后的运维中进行开源替换. 比较有名的就是debezium,它是一个开源项目,为捕获数据更改(change data capture,CDC)提供了一个低延迟的流式处理平台. 它的架构如图所示,它通过kafka connect将变更后的数据传入kafka,然后在给下游的消费者使用.

oracle ogg goldengate 双活复制避免循环复制参数_ITPUB博客

- -
我简单的简绍一下goldengate的一些实用的、常用的参数. 一、双向复制避免数据循环复制的参数. 首先说明一下循环复制,官网上的描述:. 意译:主端对数据的修改,被应用到了备端. 但是备端在执行这个主端传递过来的数据改变时,又被备端的extract 进程.       扑获到,并且又反给主端. 然后主端又给备端,这样形成了循环复制,会一直循环下去.

数据库复制-Goldengate

- - 人月神话的BLOG
参考: http://wenku.baidu.com/view/4fd7ea22bcd126fff7050b5d.html. GoldenGate TDM(交易数据管理)软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活.

Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间

- - CSDN博客推荐文章
例如有表table,table 中有两个字段:name 、makedate. 插入系统时间应为sysdate:. insert into table (name,makedate) values('测试',sysdate);. 插入系统时间应为current timestamp并且makedate数据类型为timestamp.

GoldenGate的复制原理和Quest公司的SharePlex产品一样

- - 数据库 - ITeye博客
 GoldenGate的复制原理和Quest公司的SharePlex产品一样,都是挖掘Oracle的日志(redo和归档)然后生成自己的队列文件,通过队列文件传输到目标端,目标端通过读取相应的队列文件在目标数据库中重演事务. 可以想像,SharePlex产品未来将会面临来自于Oracle公司何等强大的压力.

(总结)CentOS Linux下配置Oracle 11gR2为系统服务自动启动

- - 服务器运维与网站架构|Linux运维|互联网研究
PS:在Windows下安装完成Oracle 11gR2后,默认就开机自启动Oracle相关服务,但Linux下安装完后每次都得手动启动和关闭数据库(dbstart | dbshut)、监听器(lsnrctl)、控制台(emtcl). 如何把Oracle添加到Linux系统服务里开机自启动呢. 下面以CentOS 6.3为例详解,其他发行版一样通用.

Oracle数据库系统工程师培训视频教程下载

- - Oracle - 数据库 - ITeye博客
   分享一套穆远龙老师的Oracle数据库系统工程师培训的视频教程下载,一共57讲,教程涉及到内存结构、物理结构、备份和恢复、安全审计、性能调优等等技术点.    该课程系统详细的介绍了Oracle数据库的整个过程,让您从基础入门到精通,贯穿整个学习.      第一讲:Oracle数据库系统基础.

Oracle 11g系统自动收集统计信息的一些知识

- - CSDN博客数据库推荐文章
---11g的是 周一到周五 22:00-2:00 周六周日 6:00-4:00. WINDOW_NAME          REPEAT_INTERVAL                                              DURATION. CLIENT_NAME                                                      STATUS.