假如已经存在一套ogg(一个oracle到另一个oracle的同步),现在我想在一个新的oracle数据库上也配置下ogg,即想实现一个源端往多个目标端同步数据。
在本实验之前,需要先确保已搭建一套ogg,可参考:
https://blog.csdn.net/yabingshi_tech/article/details/111058709
一 实验步骤
1.1 在目标端安装ogg
cd /opt
mkdir -p oracle/ogg
chown oracle:dba /opt/oracle/ogg
su - oracle
cd /opt/oracle/ogg
上传安装包
unzip V28941-01.zip
tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
./ggsci
[oracle@PC ogg]$ ./ggsci
GGSCI (PC) 1> CREATE SUBDIRS
1.2 设置数据库
#在目标数据库端创建Oracle GoldenGate用户
create user ogg identified by ogg;
grant dba to ogg;
#在目标数据库启用归档模式
shutdown immediate
startup mount
alter database archivelog;
alter database open;
select name,log_mode from v$database;
1.3 配置ogg
1.3.1 在目标数据库上配置MANAGER
请进入Oracle GoldenGate安装目录执行ggsci连接后执行下列步骤:
执行EDIT PARAMS MGR 命令,加入如下参数,并使用vi命令:wq保存退出。
PORT 7809
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *,WAITMINUTES 10,RETRIES 3,RESETMINUTES 60
PURGEOLDEXTRACTS dirdat/rt
DYNAMICPORTLIST 7840-8000
1.3.2 在源数据库端配置Data Pump
- 创建用于Pump的第二EXTRACT组,注意数指定据源Local Trail为lt
ADD EXTRACT pumpkw2, EXTTRAILSOURCE dirdat/lt, BEGIN now
- 为pump组创建Remote Trail
Remote Trail名称只能是两位字符,如rt
ADD RMTTRAIL dirdat/rt, EXTRACT pumpkw2
- 为pump组编辑参数
执行EDIT PARAMS pumpkw2命令,加入如下参数,并以:wq保存退出。指定目标数据数据库的GoldGate运行位置。例:
EXTRACT pumpkw2
USERID ogg PASSWORD ogg
RMTHOST 192.168.144.208,MGRPORT 7809
RMTTRAIL dirdat/rt
TABLE scott.t;
1.3.3 在目标端配置Replicat
请进入Oracle GoldenGate安装目录执行ggsci连接后执行下列步骤:
- 创建CheckPoint表
DBLOGIN USERID ogg, PASSWORD ogg
ADD CHECKPOINTTABLE checkpoint
- 创建Replicat组,注意数指定据源Remote Trail为rt,CheckPoint表为CheckPoint表
ADD REPLICAT wrt, EXTTRAIL dirdat/rt, BEGIN now,CHECKPOINTTABLE ogg.checkpoint
- 为wrt组创建Local Trail
执行EDIT PARAMS wrt命令,加入如下参数,并以:wq保存退出。例:
REPLICAT wrt
USERID ogg, PASSWORD ogg
HANDLECOLLISIONS
ASSUMETARGETDEFS
MAP scott.t, TARGET scott.t;
参数将保存在dirprm/wrt.prm文件中
1.4 手动同步数据
源库scott.t表已经有数据了,但目标端还没这个表及数据,需要先手动同步。
#在源端导出:
exp scott/tiger tables=t file=scott_t.dmp
#备份目标端数据
略
#在目标端导入:
imp scott/tiger file=scott_t.dmp
SQL> select * from t;
ID
----------
1
1.5 开启ogg同步
1.5.1 在目标端启动mgr
start mgr
启动mgr会自动启动replicat进程:
GGSCI (PC) 8> info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING WRT 00:00:00 00:00:03
1.5.2 在源端启动pump进程
start PUMPKW2
1.5.3 测试数据同步
在源端插入一条数据:
SQL> insert into scott.t(id) values(3);
1 row created.
SQL> commit;
Commit complete.
# 在目标端查询
SQL> select * from t where id = 3;
ID
----------
3