记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。
  Linux下GoldenGate实现Oracle 单机单向同步


一、配置Manager管理程的参数

(1)查看Manager进程状态

GGSCI (localhost) 3> info all

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     STOPPED                                          

 

 

GGSCI (localhost) 4>

 

(2)编辑参数

GGSCI (John-PC) 3> edit params mgr

在新打开的/u01/ogg/dirprm/mrg.prm文件中输入“port 7809”并保存退出。

 

二、配置抽取进程

GGSCI (localhost) 2> add extractext1,tranlog, begin now

EXTRACT added.

 

 

GGSCI (localhost) 3> add exttrail/u01/ogg/dirdat/st, extract ext1

EXTTRAIL added.

addexttrail /u01/ogg/dirdat/st, extract ext1表示通过ext1进程把数据抽取到本地的/u01/ogg/dirdat/st文件中。

st代表scott,表示本实验是要把scott.test_table中的数据同步到haishu.test_table中。当然也可以起其他名字,不过建议起的有意义一点。

exttrail表示本地。若要抽取到远程服务中,应使用add rmttrail语句。

 

编辑抽取进程ext1参数

GGSCI (localhost) 4> edit paramsext1

 

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

extract ext1

userid ogg,password oracle

rmthost 127.0.0.1,mgrport 7809

rmttrail /u01/ogg/dirdat/st

dynamicresolution

table scott.test_table;

因为这个实验是本机上的单向同步,所以远程IP地址即为本机地址127.0.0.1,当然也可以写为实际的IP地址192.168.6.135

 

三、添加checkpoint表

复制进程需要用到checkpoint表。

 

GGSCI (localhost) 5> edit params./GLOBAL

这里./表示当前目录,即/u01/ogg/

在./GLOBAL文件中输入以下内容,并保存退出。

GGSCHEMA ogg

CHECKPOINTTABLE ogg.checkpoint

 

添加checkpoint表

GGSCI (localhost) 6> addcheckpointtable ogg.checkpoint

 

Successfully created checkpoint tableogg.checkpoint.

 

 

四、配置复制进程

GGSCI (localhost) 5> add replicatrep1,exttrail /u01/ogg/dirdat/st, checkpointtable ogg.checkpoint

REPLICAT added.

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

 

编辑rep1进程参数

GGSCI (John-PC) > edit params rep1

 

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

replicat rep1

userid ogg,password oracle

assumetargetdefs

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

map scott.test_table, target haishu.test_table

RESOLVECONFLICT (UPDATEROWEXISTS,(DEFAULT, OVERWRITE))

RESOLVECONFLICT (INSERTROWEXISTS,(DEFAULT, OVERWRITE))

RESOLVECONFLICT (DELETEROWEXISTS,(DEFAULT, OVERWRITE))

RESOLVECONFLICT (UPDATEROWMISSING,(DEFAULT, IGNORE))

RESOLVECONFLICT (DELETEROWMISSING,(DEFAULT, IGNORE));

 

五、测试同步结果

1 在sqlplus环境中用sys用户登录数据库sqlplus / as sysdba

解锁scott用户

创建haishu用户并授予grant和connect权限

sys用户下创建scott.test_table表和haishu.scott表

 

SQL> create tablescott.test_table(id varchar(10) primary key);

SQL> create tablehaishu.test_table(id varchar(10) primary key);

 

2 在ogg环境中启动ogg的管理进程、抽取进程和复制进程

GGSCI (localhost) 16> start mgr

 

Manager started.

 

 

GGSCI (localhost) 17> start ext1

 

Sending START request to MANAGER ...

EXTRACT EXT1 starting

 

 

GGSCI (localhost) 18> start rep1

 

Sending START request to MANAGER ...

REPLICAT REP1 starting

 

 

GGSCI (localhost) 19> info all

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                          

EXTRACT     RUNNING     EXT1        00:00:00      00:16:45   

REPLICAT    RUNNING     REP1        00:00:00      00:00:01

进程状态为running表示正常启动;若为abended或stop表示出错。可用“view report 进程名称”来查看错误信息,比如“view report ext1”。

 

3 向scott方案中插入一条数据并从haishu方案中检验

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

 

已创建 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * fromhaishu.test_table;

 

ID

----------

scott-001

 

4 从scott方案中删除数据并从haishu方案中检验

SQL> delete from scott.test_table;

 

已删除 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * fromhaishu.test_table;

 

未选定行

 

上述实验结果说明成功实现把scott.test_table中的数据同步到haishu.test_table中。



转载请标明出处【Linux下GoldenGate实现Oracle 单机单向同步】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论