25. Setting up a GoldenGate replication with mapping between different columns

简单说明:

本篇博文实验源表和目标表列名不同的环境下的OGG复制
在博文《19. Setting up a GoldenGate replication between tables with different structures using defgen》
实验了目标库和源库表结构不同,表名不同和表列序不同的复制,本次实验是该实验的补充
依据《11. Setting up a simple GoldenGate replication confguration between two single node databases》
部署试验环境模拟本次实验,源端和目标端均只部署完MGR即可开始本次实验
注意在Oracle 11.2.0.4 之后需要打开ENABLE_GOLDENGATE_REPLICATION参数:
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;

目标库修改表列名:

su - oracle
sqlplus scott/tiger
ALTER TABLE EMP RENAME COLUMN SAL TO SALARY;
ALTER TABLE EMP RENAME COLUMN COMM TO COMMISSION;
exit

实验步骤:

1° 源端创建defgen配置文件:

su - oracle
cd /ggs/dirprm
cat >defs.prm<<EOF
DEFSFILE ./dirdef/defs.def
USERID ggs, PASSWORD ggs
TABLE SCOTT.EMP;
TABLE SCOTT.DEPT;
TABLE SCOTT.BONUS;
TABLE SCOTT.SALGRADE;
EOF
cd /ggs
./defgen paramfile ./dirprm/defs.prm
# 将生成的表结构文件复制到目标端对应位置
scp ./dirdef/defs.def 192.168.77.11:/ggs/dirdef

2° 源端配置抽取和发送进程配置文件:

su - oracle
cd /ggs/dirprm
cat >EGGTEST1.prm<<EOF
EXTRACT EGGTEST1
USERID ggs, PASSWORD ggs
EXTTRAIL /ggs/dirdat/st
TABLE SCOTT.*;
EOF
cat >PGGTEST1.prm<<EOF
EXTRACT PGGTEST1
USERID ggs, PASSWORD ggs
RMTHOST 192.168.77.11, MGRPORT 8809
RMTTRAIL /ggs/dirdat/rt
TABLE SCOTT.*;
EOF

3° 目标端配置应用进程配置文件:

su - oracle
cd /ggs/dirprm
cat >RGGTEST1.prm<<EOF
REPLICAT RGGTEST1
USERID ggs, PASSWORD ggs
DISCARDFILE /ggs/dirrpt/RGGTEST1.dsc, append, MEGABYTES 500
SOURCEDEFS ./dirdef/defs.def
-- 使用参数 SOURCEDEFS 指定表结构文件
MAP SCOTT.EMP, TARGET SCOTT.EMP, COLMAP(USEDEFAULTS, "SAL"="SALARY","COMM"="COMMISSION");
-- 使用COLMAP子句,指定不同与原表的列名的一一对应关系,列名需要用双引号引起来
MAP SCOTT.*, TARGET SCOTT.*;
EOF

4° 源端和目标端进程添加和启动:

# 源端操作:
su - oracle
cd /ggs
./ggsci
ADD EXTRACT EGGTEST1, TRANLOG, BEGIN NOW
ADD EXTTRAIL /ggs/dirdat/st, EXTRACT EGGTEST1
ADD EXTRACT PGGTEST1, EXTTRAILSOURCE /ggs/dirdat/st
ADD RMTTRAIL /ggs/dirdat/rt, EXTRACT PGGTEST1
START  EXTRACT EGGTEST1
STATUS EXTRACT EGGTEST1
START  EXTRACT PGGTEST1
STATUS EXTRACT PGGTEST1
exit
# 目标端操作:
su - oracle
cd /ggs
./ggsci
DBLOGIN, USERID ggs PASSWORD ggs
ADD CHECKPOINTTABLE ggs.rggtest1_ckpt
ADD REPLICAT RGGTEST1, EXTTRAIL /ggs/dirdat/rt, CHECKPOINTTABLE ggs.rggtest1_ckpt
START  REPLICAT RGGTEST1
STATUS REPLICAT RGGTEST1
exit

5° 验证:

# 源库操作:
sqlplus scott/tiger
insert into emp values(9999,'vincent','vincent',7788,sysdate,100,100,10);
commit;
exit
# 目标库验证:
sqlplus scott/tiger
select * from EMP where empno=9999;
exit
# 验证通过

另外的几种映射方法:

Source environment mapping
源端抽取进程配置映射,当一个源端配置多个目标端时使用
  EXTRACT EGGTEST1
  USERID ggs, PASSWORD ggs
  EXTTRAIL /ggs/dirdat/st
  TARGETDEFS ./dirdef/defs.def
  -- 指定目标端的defgen文件位置
  TABLE SCOTT.EMP, TARGET SCOTT.EMP, COLMAP(USEDEFAULTS, "SAL"="SALARY","COMM"="COMMISSION");
  TABLE SCOTT.*, TARGET SCOTT.*;

Defining global mappings
配置全局映射,当多个表的SAL都要映射成SALARY等这类需求存在时使用
在源端抽取或目标端应用配置文件中配置都可
  COLMATCH NAMES SALARY = SAL
  COLMATCH NAMES COMMISSION = COMM
  -- 使用 COLMATCH 配置列名映射关系
  MAP SCOTT.EMP, TARGET SCOTT.EMP COLMAP(USEDEFAULTS);
  MAP SCOTT.*, TARGET SCOTT.* COLMAP(USEDEFAULTS);
  ADDITIONAL TABLE MAP STATEMENTS GO HERE
  -- 表明这里有额外的MAP关系,对所有MAP的表都适用

Defining mappings using prefx/suffx
忽略列前缀的列MAP
  COLMATCH PREFIX DWH_
  COLMATCH SUFFIX _TGT
  -- 使用 COLMATCH 忽略列名的前缀 DWH_ 和列名的后缀 _TGT
  -- 实现 DWH_COL 和 COL 以及 COL_TGT 和 COL 的自动匹配
  -- 无论这些前缀后缀出现在源端还是目标端
  MAP SCOTT.EMP, TARGET SCOTT.EMP COLMAP(USEDEFAULTS);
  ADDITIONAL TABLE MAP STATEMENTS GO HERE

[TOC]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值