ITPub博客

首页 > 数据库 > Oracle > Linux下GoldenGate单机双向同步

Linux下GoldenGate单机双向同步

原创 Oracle 作者:zhenghaishu 时间:2015-08-05 11:47:46 0 删除 编辑

Linux下GoldenGate单机双向同步

上节实现了Linux系统中数据从scott.test_table到haishu.test_table的单向同步。本节在上节的基础上实现数据从haishu.test_table到scott.test_table的同步。这样就实现了数据在scott.test_table和haishu.test_table之间的双向同步。

 

一、配置抽取进程

GGSCI (localhost) 1> add extract ext2,tranlog, begin now

EXTRACT added.

 

 

GGSCI (localhost) 2> add exttrail /u01/ogg/dirdat/hs, extract ext2

EXTTRAIL added.

这里add exttrail /u01/ogg/dirdat/hs, extract ext2表示通过ext2进程把数据库中的数据抽取到本地的/u01/ogg/dirdat/hs文件中。

hs是haishu的简称,代表数据要从haishu.test_table中同步到scott.test_table中。当然也可以用别的字符,不过建议使用有意义的字符。

exttrail表示本地。若要把数据抽取到远程机器上,应使用“add rmttrail……”句式。

 

编辑抽取进程的参数:

GGSCI (localhost) 3> edit params ext2

 

在新打开的/u01/ogg/dirprm/ext2.prm中输入以下内容并保存退出

extract ext2

userid ogg,password oracle

rmthost 127.0.0.1,mgrport 7809

rmttrail /u01/ogg/dirdat/hs

dynamicresolution

table haishu.test_table;

 

 

二、配置复制进程

GGSCI (localhost) 4> add replicat rep2,exttrail /u01/ogg/dirdat/hs, checkpointtable ogg.checkpoint

REPLICAT added.

这个句子表示从本机的/u01/ogg/dirdat/hs中读取数据,并通过rep2进程把这些数据复制到数据库中。ogg.checkpoint是rep2的容器表。

 

编辑复制进程参数

GGSCI (localhost) 5> edit params rep2

 

在新打开的/u01/ogg/dirprm/rep2.prm中输入如下内容并保存退出

replicat rep2

userid ogg,password oracle

assumetargetdefs

discardfile /u01/ogg/dirdat/rep2_discard.txt,append

map haishu.test_table, target scott.test_table

RESOLVECONFLICT (UPDATEROWEXISTS, (DEFAULT, OVERWRITE))

RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT, OVERWRITE))

RESOLVECONFLICT (DELETEROWEXISTS, (DEFAULT, OVERWRITE))

RESOLVECONFLICT (UPDATEROWMISSING, (DEFAULT, IGNORE))

RESOLVECONFLICT (DELETEROWMISSING, (DEFAULT, IGNORE));

 

 

三、测试

1 在ogg环境中开ogg的启管理进程,抽取进程和同步进程

GGSCI (localhost) 10> start mgr

 

Manager started.

 

 

GGSCI (localhost) 11> start ext1

 

Sending START request to MANAGER ...

EXTRACT EXT1 starting

 

 

GGSCI (localhost) 12> start ext2

 

Sending START request to MANAGER ...

EXTRACT EXT2 starting

 

 

GGSCI (localhost) 13> start rep1

 

Sending START request to MANAGER ...

REPLICAT REP1 starting

 

 

GGSCI (localhost) 14> start rep2

 

Sending START request to MANAGER ...

REPLICAT REP2 starting

 

 

GGSCI (localhost) 15> info all

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                          

EXTRACT     RUNNING     EXT1        00:00:23      00:00:05   

EXTRACT     RUNNING     EXT2        00:09:09      00:00:02   

REPLICAT    RUNNING     REP1        00:00:00      00:00:04   

REPLICAT    RUNNING     REP2        00:00:00      00:00:01 

 

2 在sqlplus环境中用sys用户清空scott.table和haishu.table中的数据

SQL> delete from scott.table;

SOL> delete from haishu.table;

 

3 在scott.test_table中插入数据,并从haishu.test_table中检验

SQL> insert into scott.test_table values('scott-001');

 

已创建 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from haishu.test_table;

 

ID

----------

scott-001

 

4 在haishu.test_table中插入数据,并从scott.test_table中验证

SQL> insert into haishu.test_table values('haishu-001');

 

已创建 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from scott.test_table;

 

ID

----------

haishu-001

scott-001

 

5 删除scott.test_table中的数据,并从haishu.test_table中验证

SQL> delete from scott.test_table where id='haishu-001';

 

已删除 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from haishu.test_table;

 

ID

----------

scott-001

 

6 删除haishu.test_table中的数据,并从scott.test_table中查询

SQL> delete from haishu.test_table where id='scott-001';

 

已删除 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from scott.test_table;

 

未选定行

 

7 实验结果

通过上述的测试,我们发现Linux下的单机双向同步数据已经成功实现了。

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

请登录后发表评论 登录
全部评论

注册时间:2014-02-14

  • 博文量
    112
  • 访问量
    1057346