12
返回列表 发新帖
楼主: duansq

goldengate同步表主键不同请教

[复制链接]
论坛徽章:
47
2011新春纪念徽章
日期:2011-01-04 10:24:02奥迪
日期:2013-11-09 23:09:27保时捷
日期:2013-10-15 20:14:48阿斯顿马丁
日期:2013-10-12 09:11:59三菱
日期:2013-09-14 16:45:56雪铁龙
日期:2013-08-21 12:50:25马自达
日期:2013-08-14 12:51:35ITPUB社区千里马徽章
日期:2013-06-09 10:15:34蓝锆石
日期:2013-04-12 00:10:42劳斯莱斯
日期:2013-11-09 23:09:27
11#
发表于 2010-12-15 22:11 | 只看该作者
原帖由 duansq 于 2010-12-15 13:32 发表
是否可以在目标端使用keycols 将目标表和源上表对应的字段进行列出,这样是否可行,还请各位指导?


那对应的字段组合,里面的值也要求是唯一的,就是说2边必须有字段一致的、唯一的“键”。
“源上有两个表,一个主一个备”  是否可以在同步时将主表排除掉,备表与目标表单独同步?如果业务上不允许,那么是否可以在源端的2个表也增加字段EDORNO,分别默认设置‘1’和‘2’标识?

使用道具 举报

回复
论坛徽章:
47
2011新春纪念徽章
日期:2011-01-04 10:24:02奥迪
日期:2013-11-09 23:09:27保时捷
日期:2013-10-15 20:14:48阿斯顿马丁
日期:2013-10-12 09:11:59三菱
日期:2013-09-14 16:45:56雪铁龙
日期:2013-08-21 12:50:25马自达
日期:2013-08-14 12:51:35ITPUB社区千里马徽章
日期:2013-06-09 10:15:34蓝锆石
日期:2013-04-12 00:10:42劳斯莱斯
日期:2013-11-09 23:09:27
12#
发表于 2010-12-15 22:14 | 只看该作者
原帖由 Toms_zhang 于 2010-12-15 22:05 发表
针对你的这个需求,可以考虑如下的配置:
   需求分析
         " 源上有两个表,一个主一个备,正常情况下在主表,处理完后到备表,处理的方式是先插备表然后删主表。 源系统上的主表和备表对应目标系统上的同一个表,这样就目标系统上就不能建立和原主表/备表一样的唯一索引, 如果建立唯一索引,那么在源上进行数据迁移,目标端将出现唯一性问题.
           因此,puber考虑在目标表新增一个标志字段,源系统上的主表的数据标志为为1,备表过来的数据标志为2, 这样就才不会出现数据无法插入。
         "
      
   模拟表结构
   test_s1代表源端主表
   create table test_s1
   (a int,
    b varchar2(32),
    c int,
    constraint pk_test_s1 primary key(a,b)
   );

   test_s1代表源端备表
   create table test_s2
   (a int,
    b varchar2(32),
    c int,
    constraint pk_test_s2 primary key(a,b)
   );

   test_t代表目标端对应表
   create table test_t
   (flag char(1),   --新加一个区分主备表数据的字段
    a int,
    b varchar2(32),
    c int,
    constraint pk_test_t primary key(flag,a,b)
   );

   GG配置

   因为源和目标的结构不一定,所以需要定义data definitions,我这里定义了source definitions,在目标端的复制进程中通过SOURCEDEFS引用,这个参数具体怎么用,请参见Administrator's Guide doc.
   声明:下面这个配置,对DML操作是没有问题的,但对truncate操作是有些问题的,因为多表对一表的配置,所以要想支持truncate操作,必须在复制进程中将truncate操作转换为delete操作才可以,本配置中未做设置。
     
   源端的Extract进程
     。。。(略)
     TABLE STUDY.TEST_S*;  

   目标端的配置
     。。。
     SOURCEDEFS ./dirdef/test_s.DEF
     。。。
     TABLE STUDY.test_s1, TARGET STUDY.test_t, COLMAP (USEDEFAULTS, flag="1", keycols (flag, a, b);
     TABLE STUDY.test_s2, TARGET STUDY.test_t, COLMAP (USEDEFAULTS, flag="2", keycols (flag, a, b);


   你按照如上的思路修改配置,重新测试看看能否正常工作!
   再次说明,以上配置example仅仅针对你的本次需求!
   

有空试试

使用道具 举报

回复
论坛徽章:
17
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-01-04 11:49:54复活蛋
日期:2011-12-07 13:08:30ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412010广州亚运会纪念徽章:棒球
日期:2011-02-23 09:25:352011新春纪念徽章
日期:2011-02-18 11:43:352010广州亚运会纪念徽章:保龄球
日期:2010-12-24 13:11:522010广州亚运会纪念徽章:体育舞蹈
日期:2010-11-29 11:20:27ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010广州亚运会纪念徽章:摔跤
日期:2010-09-14 14:57:06
13#
 楼主| 发表于 2010-12-30 17:22 | 只看该作者
我后来确实是按楼上的这么来做了,添加了一个字段,用来区分是主备表,并和源端主键一块,组合成目标端的主键,不再出现问题
对于主键的修改GOLDENGATE可能还是存在些许问题

使用道具 举报

回复
论坛徽章:
17
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-01-04 11:49:54复活蛋
日期:2011-12-07 13:08:30ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412010广州亚运会纪念徽章:棒球
日期:2011-02-23 09:25:352011新春纪念徽章
日期:2011-02-18 11:43:352010广州亚运会纪念徽章:保龄球
日期:2010-12-24 13:11:522010广州亚运会纪念徽章:体育舞蹈
日期:2010-11-29 11:20:27ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010广州亚运会纪念徽章:摔跤
日期:2010-09-14 14:57:06
14#
 楼主| 发表于 2010-12-30 17:27 | 只看该作者

回复 #10 Toms_zhang 的帖子

谢谢Toms_zhang
    当时没有办法,就是采用添加字段方式处理了,目前还正常,

我们不同步ddl,源端不允许有truncate,因此,两个表对一个表应该不会存在您说的需要将truncate转换为delete的处理
再次感谢

使用道具 举报

回复
论坛徽章:
5
2011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:09
15#
发表于 2011-1-6 11:19 | 只看该作者
源库表与目标库表主键要一致才同步。

使用道具 举报

回复
论坛徽章:
5
2011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:09
16#
发表于 2011-1-6 11:20 | 只看该作者
把源库的主键找出来,通过脚本在目标库创建吧。

使用道具 举报

回复
论坛徽章:
0
17#
发表于 2011-1-23 14:20 | 只看该作者
你可在目标端建一个和源端主键一样的唯一索引,不过最好源和目标的对像结构一致

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表