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
目录
打赏
0
0
0
0
91
分享
相关文章
“一切皆是映射” (光剑)
一切皆是映射 映射即流 流即函数 ​​​​ 这句话背后的意义不仅仅在于函数式编程。量子力学说过,事物只在相互作用时才出现。“事物”即“一切”,“相互作用”即“映射”。
1334 0
|
4月前
映射关系(1-1 1-n n-n)
映射关系(1-1 1-n n-n)
50 1
2.映射关系(1-1 1-n n-n)
本文介绍了MyBatis框架中处理不同类型的关联关系(一对一、一对多、多对一及多对多)的方法。一对一关联可通过简单的属性字段映射实现;一对多关联需要在相关类中添加列表属性,并在Mapper文件中使用`<collection>`标签进行配置;多对一关联则需在Mapper文件中使用`<association>`标签来指定关联对象;对于多对多关联,通常需要定义一个中间类并在双方类中分别添加集合属性,通过`<collection>`标签完成映射。
Hibernate之关联关系映射(一对一主键映射和一对一外键映射)
1:Hibernate的关联关系映射的一对一外键映射:   1.1:第一首先引包,省略   1.2:第二创建实体类:     这里使用用户信息和身份证信息的关系,用户的主键编号既可以做身份证信息的主键又可以做身份证信息的外键,这里先做外键。
1032 0
Hibernate映射解析——七种映射关系
首先我们了解一个名词ORM,全称是(Object Relational Mapping),即对象关系映射。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。
1177 0
DTS开发记录(4)-- 映射列
在DTS开发记录(1)--系统总体结构 一文中,我们介绍到映射列:“参与了数据映射的源列或目标列。注意,并不是所有的列都会参与映射,这是常见的情况。”1.映射列分为:源映射列和目标映射列。     public interface IMappingColumn    {        str...
971 0