GoldenGate双向复制配置
一、环境准备
- 两台数据库服务器,分别安装Oracle数据库和GoldenGate软件。
- 确保两台服务器之间网络互通,并且防火墙开放了GoldenGate相关端口(默认7809)。
- 数据库已开启归档模式,并且强制日志模式。
二、数据库配置
1. 开启归档和强制日志
在两台数据库服务器上分别执行以下操作:
-- 查看当前归档模式 archive log list; -- 若未开启归档,需重启数据库到mount状态开启 shutdown immediate; startup mount; alter database archivelog; alter database open; -- 开启强制日志 alter database force logging;
2. 创建GoldenGate用户并授权
在两台数据库上创建专用用户并授予必要权限:
-- 创建用户 create user ggate identified by ggate default tablespace users temporary tablespace temp; -- 授予权限 grant connect, resource, dba to ggate; grant select any dictionary to ggate; grant alter any table to ggate; grant flashback any table to ggate; grant execute on dbms_flashback to ggate;
3. 启用补充日志
在两台数据库上执行:
alter database add supplemental log data (all) columns; alter system switch logfile;
三、GoldenGate Manager进程配置
1. 源端Manager配置(Server A)
编辑mgr.prm文件:
PORT 7809 DYNAMICPORTLIST 7810-7820 AUTOSTART ER * AUTORESTART ER *, RETRIES 5, WAITMINUTES 3 PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7 LAGREPORTHOURS 1 LAGINFOMINUTES 30 LAGCRITICALMINUTES 45
2. 目标端Manager配置(Server B)
配置与源端类似,确保端口不冲突:
PORT 7909 DYNAMICPORTLIST 7910-7920 AUTOSTART ER * AUTORESTART ER *, RETRIES 5, WAITMINUTES 3 PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7 LAGREPORTHOURS 1 LAGINFOMINUTES 30 LAGCRITICALMINUTES 45
3. 启动Manager进程
在两台服务器上分别启动:
./ggsci GGSCI> start mgr GGSCI> info all
四、Extract进程配置(数据抽取)
1. Server A Extract配置(抽取本地数据)
编辑ext_a.prm:
EXTRACT ext_a SETENV (ORACLE_SID=orcl) USERID ggate, PASSWORD ggate EXTTRAIL ./dirdat/aa TABLE schema_name.table_name;
2. Server B Extract配置(抽取本地数据)
编辑ext_b.prm:
EXTRACT ext_b SETENV (ORACLE_SID=orcl) USERID ggate, PASSWORD ggate EXTTRAIL ./dirdat/bb TABLE schema_name.table_name;
3. 添加Extract进程
在各自服务器上添加并启动:
-- Server A ADD EXTRACT ext_a, TRANLOG, BEGIN NOW ADD EXTTRAIL ./dirdat/aa, EXTRACT ext_a -- Server B ADD EXTRACT ext_b, TRANLOG, BEGIN NOW ADD EXTTRAIL ./dirdat/bb, EXTRACT ext_b START EXTRACT ext_a START EXTRACT ext_b
五、Pump进程配置(数据传输)
1. Server A Pump配置(发送到Server B)
编辑pump_a.prm:
EXTRACT pump_a RMTHOST Server_B_IP, MGRPORT 7909 RMTTRAIL ./dirdat/bb TABLE schema_name.table_name;
2. Server B Pump配置(发送到Server A)
编辑pump_b.prm:
EXTRACT pump_b RMTHOST Server_A_IP, MGRPORT 7809 RMTTRAIL ./dirdat/aa TABLE schema_name.table_name;
3. 添加Pump进程
在各自服务器上添加并启动:
-- Server A ADD EXTRACT pump_a, EXTTRAILSOURCE ./dirdat/aa ADD RMTTRAIL ./dirdat/bb, EXTRACT pump_a -- Server B ADD EXTRACT pump_b, EXTTRAILSOURCE ./dirdat/bb ADD RMTTRAIL ./dirdat/aa, EXTRACT pump_b START EXTRACT pump_a START EXTRACT pump_b
六、Replicat进程配置(数据应用)
1. Server B Replicat配置(应用来自Server A的数据)
编辑rep_b.prm:
REPLICAT rep_b SETENV (ORACLE_SID=orcl) USERID ggate, PASSWORD ggate ASSUMETARGETDEFS HANDLECOLLISIONS MAP schema_name.table_name, TARGET schema_name.table_name;
2. Server A Replicat配置(应用来自Server B的数据)
编辑rep_a.prm:
REPLICAT rep_a SETENV (ORACLE_SID=orcl) USERID ggate, PASSWORD ggate ASSUMETARGETDEFS HANDLECOLLISIONS MAP schema_name.table_name, TARGET schema_name.table_name;
3. 添加Replicat进程
在各自服务器上添加并启动:
-- Server B ADD REPLICAT rep_b, EXTTRAIL ./dirdat/aa, CHECKPOINTTABLE ggate.checkpoint -- Server A ADD REPLICAT rep_a, EXTTRAIL ./dirdat/bb, CHECKPOINTTABLE ggate.checkpoint START REPLICAT rep_b START REPLICAT rep_a
七、双向复制冲突解决
- 采用基于时间戳的冲突检测机制。
- 在业务层面尽量避免同时修改同一行数据。
- 设置合理的延迟阈值,及时发现并处理冲突。
八、监控与维护
- 定期检查GoldenGate进程状态:info all。
- 监控日志文件,查看是否有错误信息。
- 定期备份GoldenGate配置文件和数据。