重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5274|回复: 4
打印 上一主题 下一主题

[原创] goldengate中添加同步表的操作

[复制链接]
跳转到指定楼层
楼主
发表于 2015-11-3 21:24:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


1.非异构同步:
(1)先停止源端ogg的抽取和传输进程
     stop exta01
      (注意: 若有长事务需确认归档是否存在
         info exta01 showch
         查看recovery checkpoint 的记录,确保该条归档和其后的归档都在,
         send extract exta01,forcestop)

      stop dpea01

(2)dblogin userid ggs,password ggs 登陆数据库
      info trandata table_name 如果为disabled 则用 add trandata table_name
      (注意: 如果是同步已有的表并且表结构发生变化的则用下面的步骤
         delete trandata table_name
         add trandata table_name)
(3)在抽取和投递进程中添加该表:
      edit params extra01
       table table_name
(4)启动 源端进程
      start *
(5)目标端停止复制进程
      stop repa01
(6)数据初始化:
      a、查询源端的导出目录
        sqlplus / as sysdba
       select * from dba_directories;
      b、查询scn号
       col get_system_change_number for 99999999999999
       select dbms_flashback.get_system_change_number from dual;
      c、导出导入
      源端:expdp \'/ as sysdba\' directory=directory_name dumpfile=###%U.dump logfile=###.log parallel=1 tables=user.tanle_name1,user.table_name2 content=data_only flashback_scn=###########
     传到目标端:scp ###%U.dump oracle@10.218.11.1:/goldengate 然后输入oracle密码
     目标端导入:impdp \'/ as sysdba\' directory=directory_name dumpfile=###%U.dump logfile=###.log parallel=1 tables=user.tanle_name1,user.table_name2 content=data_only table_exists_action=truncate remap_schema=user:user1 remap_tablespace=%:usertbs
   注意:导入过程中时刻注意目标端的表空间使用情况,以及表空间名的remap是否正确。
  (7)导入完成后在目标端复制进程中添加
    map user.table_name , target user1.table_name , filter (@GETENV ("TRANSACTION", "CSN") > ########### ) ;
    启动复制进程 start repa01


2.异构同步:
异构复制的数据同步比非异构的多加一步
在最后启动复制进程之前,源端生成表定义文件:
进入源端ogg主目录
cd dirprm
vi defgen.prm (或者在ogg主目录下./ggsci 然后在交互界面edit params defgen )
添加参数
defsfile ./dirdef/defgen.def,purge
userid ggs,password ggs
table user.table_name;
保存后退出
在ogg主目录下执行./defgen paramfile ./dirprm/defgen.prm

传到目标端将目标端dirdef下的def文件覆盖。

如果是整个进程的表都做了初始化,可用下面的语句启动复制进程
start repa01,aftercsn ############



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

沙发
发表于 2015-11-3 23:08:54 | 只看该作者
支持原创,
对于表结构不同的情况,最好加上对所有列补充日志,否则,可能导致update的数据不同步。
回复 支持 反对

使用道具 举报

板凳
发表于 2015-11-4 22:55:25 | 只看该作者
对于表结构不同的情况,你是如何对目标表进行初始化的呢?
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2015-11-8 22:24:39 | 只看该作者
郑全 发表于 2015-11-4 22:55
对于表结构不同的情况,你是如何对目标表进行初始化的呢?

我只遇到两种表结构不同的,一、在原表上增加几个字段(例如增加同步时间,更新时间等),在目标端导入完表后,进行增加字段,之后在复制进程中用colmap对应原表字段和新增字段。
二、目标端字段减少,这种情况下通过数据泵导入完表后,新建目标端表,再将导入的表insert到新建表中。
回复 支持 反对

使用道具 举报

5#
发表于 2015-11-9 18:39:23 | 只看该作者
不错的方法,还有其他方法吗
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-4-20 19:46 , Processed in 0.100509 second(s), 23 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表