goldegate根据实际要求进行映射到多个不同表

简介: OGG如何按照要求拆分表。 例如,我们源端有一个表比如叫做TESTR 我们需要按照一定的过滤条件进行拆分 1、我们需要目标端一个同样的表保存全部TESTR的数据 2、我们需要目标端一个不同的表保存IT=2的数据 3、我们需要目标端一个不同的表保存IT=...
OGG如何按照要求拆分表。
例如,我们源端有一个表比如叫做TESTR
我们需要按照一定的过滤条件进行拆分
1、我们需要目标端一个同样的表保存全部TESTR的数据
2、我们需要目标端一个不同的表保存IT=2的数据
3、我们需要目标端一个不同的表保存IT=3的数据
注意如果在以前的EXTRACT和REPLICAT中有相应的星号的配置我们需要排除掉这个表
如下:
EXTRACT端
tableexclude test.testr
replicat端
MAPEXCLUDE test.testr;


然后我们配置EXTRACT 端环境
登录数据库建立测试表
SQL> create table testr (it int,im int);
 
Table created
加入主键
SQL> alter table testr add constraint PK_IT primary key (it);
 
Table altered
ggsci设置日志补足功能
GGSCI (test1) 8> add trandata test.testr


然后设置REPLICAT端环境
登录数据库建立测试表


SQL> create table testr (it int,im int);
 
Table created
 
SQL> create table testr1 (it int,im int);
 
Table created
 
SQL> create table testr2 (it int,im int);
 
Table created
 
SQL>  alter table testr add constraint PK_IT primary key (it);
 
Table altered
 
SQL>  alter table testr1 add constraint PK_IT1 primary key (it);
 
Table altered
 
SQL>  alter table testr2 add constraint PK_IT2 primary key (it);


Table altered


这样环境就设置好了。
接下来我们配置EXTRACT进程的参数文件
 extract ey03
 setenv (ORACLE_SID=ora10g)
 userid ggs_admin,password ggs_admin
 exttrail ./dirdat/sc
 warnlongtrans 2h
 table test.testr;
 
在GGSCI中增加这个extract进程
GGSCI (test1) 2> add extract ey03,tranlog,threads 1,begin now
增加extract 的trail file
add exttrail ./dirdat/sc, extract ey03 megabytes 50
编辑extract的PUMP进程参数文件
接下来编辑PUMP参数文件
eidt params py03


extract py03
passthru
rmthost 192.168.190.7, mgrport 7809
rmttrail ./dirdat/tc
table test.testr;


ADD EXTRACT py03, EXTTRAILSOURCE ./dirdat/sc
然后指定trail file放到哪里
add rmttrail ./dirdat/tc,extract py03 megabytes 50


启动ey03,py03
start *


这样我们新配置得就传输到目标端了
然后我们配置3个REPLICAT进程来分别获取不同的数据到不同的表
配置第一个replicat进程
然后配置我们replicat的参数文件
replicat rt03
setenv (ORACLE_SID=OLAP)
userid ggs_admin, password ggs_admin
discardfile ./dirrpt/rolap03.dsc,purge
assumetargetdefs
map test.testr, target test.testr;
增加REPLIACT进程
add replicat rt03,exttrail ./dirdat/tc, checkpointtable ggs_admin.ggschkpt


当然我们需要配置额外的2个REPLICAT进程来完成我们不同的应用


编辑参数
replicat rt04
setenv (ORACLE_SID=OLAP)
userid ggs_admin, password ggs_admin
discardfile ./dirrpt/rolap04.dsc,purge
assumetargetdefs
map test.testr, target test.testr1 FILTER ( it=2); 
增加REPLIACT进程
add replicat rt04,exttrail ./dirdat/tc, checkpointtable ggs_admin.ggschkpt


注意一下这里的FILTER过滤是留下=2的记录而不是过滤掉


然后启动
就行了
接下来的=3的就一样的操作就行了,当然记得他们的来源是TC这一个队列,虽然我们可以配置多个EXTRACT进程来抽取
但是一般来说EXTRACT的性能是没有问题,同时多个EXTRACT队列之间是不保证完全一致的,所以同一个应用的抽取进程
最好是一个。
测试
源端
SQL> insert into testr values(2,2);
 
1 row inserted
 
SQL> commit;
 
Commit complete
 
SQL> insert into testr values(3,2);
 
1 row inserted
 
SQL> commit;
 
 目标
 SQL> select * from testr1;
 
                                     IT                                      IM
--------------------------------------- ---------------------------------------
                                      2                                       2
 
SQL> select * from testr;
 
                                     IT                                      IM
--------------------------------------- ---------------------------------------
                                      2                                       2
                                      3                                       2
 通过
 当然此处你还可以过滤掉只进程
 FILTER (ON UPDATE, ON DELETE, AMOUNT > 1000);
Commit complete
相关文章
|
7月前
|
存储 C++ 索引
哈希表、集合、映射
哈希表、集合、映射
|
1月前
映射关系(1-1 1-n n-n)
映射关系(1-1 1-n n-n)
26 1
|
4月前
|
XML JSON Java
2.映射关系(1-1 1-n n-n)
本文介绍了MyBatis框架中处理不同类型的关联关系(一对一、一对多、多对一及多对多)的方法。一对一关联可通过简单的属性字段映射实现;一对多关联需要在相关类中添加列表属性,并在Mapper文件中使用`<collection>`标签进行配置;多对一关联则需在Mapper文件中使用`<association>`标签来指定关联对象;对于多对多关联,通常需要定义一个中间类并在双方类中分别添加集合属性,通过`<collection>`标签完成映射。
|
7月前
|
Java 关系型数据库 MySQL
JPA中实体类属性相关注解与数据表列映射详解
JPA中实体类属性相关注解与数据表列映射详解
381 0
|
消息中间件 安全 Dubbo
程序员健康作息表
程序员健康作息表
|
前端开发 JavaScript Java
WebJars 映射
WebJars 映射
199 0
“一切皆是映射” (光剑)
一切皆是映射 映射即流 流即函数 ​​​​ 这句话背后的意义不仅仅在于函数式编程。量子力学说过,事物只在相互作用时才出现。“事物”即“一切”,“相互作用”即“映射”。
1321 0