暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

OGG在原有进程新增表同步

原创 stofm 2022-11-22
3894

适用范围

适用于ogg所有版本

方案概述

客户有时会有这样的需求,在已有的ogg进程上新增一个表同步,源端目标端都不增加新的进程,并且最小限度不影响其他表同步。
我们可以利用临时进程先同步新增表,等追平后再加到现有的replicat进程。

实施步骤

1、ogg进程状态检查
源端目标端的OGG已经部署好,并且有ogg进程在运行。

进程名 源端/目标端 进程类型 备注
ext1 源端 EXTRACT 现有捕获进程,在运行
pump1 源端 EXTRACT 现有投递进程,在运行
rep1 目标端 REPLICAT 现有复制进程,在运行
tmp1 目标端 REPLICAT 临时进程,未创建

检查ogg进程状态,查看是否有延迟,如果有延迟解决延迟后再进行新增表同步

GGSCI > info all

2、源端捕获进程添加要同步的表(源端)
编辑抽取进程参数文件添加同步表

GGSCI > edit param ext1

--20211215--
TABLE scott.emp;
--20211215--

3、添加同步表的trandata(源端)

登录ogg管理用户
GGSCI > dblogin userid ogg, password ogg

添加表级trandata
GGSCI > add trandata scott.emp

检查trandata
GGSCI > info trandata scott.emp

4、重启捕获进程(源端)

GGSCI > stop ext1

Sending STOP request to EXTRACT EXT1 ...
Request processed.

GGSCI > start ext1

Sending START request to MANAGER ...
EXTRACT EXT1 starting

源端已经可以捕获到scott.emp表了。

5、源端投递进程添加要同步的表(源端)

编辑投递进程参数文件添加同步表
GGSCI > edit param pump1

--20211215--
TABLE scott.emp;
--20211215--

重启投递进程
GGSCI > stop pump1

Sending STOP request to EXTRACT PUMP1 ...
Request processed.


GGSCI > start pump1

Sending START request to MANAGER ...
EXTRACT PUMP1 starting

投递进程已经投递表scott.emp了

6、初始化表数据
源端数据库查询导出SCN(源端)

SQL > set numw 20
SQL > select current_scn from gv$database;
         CURRENT_SCN
--------------------
      13891433310456
      13891433310456

源端使用数据泵基于SCN导出表数据(源端)

  $ expdp dumpfile=scott20211215.dmp logfile=scott20211215.log directory=OGG_DMP FLASHBACK_SCN=13891433310456 tables=scott.emp

将导出的dmp文件拷贝到目标端

  scp scott20211215.dmp 10.xx.xx.xx:/home/oracle

检查源端表空间(源端)

  SQL > select distinct t1.table_name,t1.tablespace_name tab_ts,t2.tablespace_name ind_ts from dba_tables t1,dba_indexes t2 where t1.table_name=t2.table_name and t1.table_name in ('EMP') and t1.owner='SCOTT';

检查目标端表空间(目标端)

  SQL > select distinct OWNER,TABLESPACE_NAME from dba_segments where owner='SCOTT';

目标端导入初始化数据(目标端)

  $ impdp dumpfile=scott20211215.dmp logfile=scott20211215imp.log directory=OGG_DMP REMAP_TABLESPACE=source_tbs:target_tbs

7、目标端创建临时的replicat进程(目标端)
编辑临时replicat进程参数文件

  
GGSCI > edit param tmp1

REPLICAT tmp1
setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK ) 
userid ogg, password ogg
ddl include mapped
--ddlerror default ignore retryop
--DDLERROR 1435 IGNORE INCLUDE OPTYPE ALTER OBJTYPE SESSION
ddlerror default ignore
SQLEXEC "ALTER SESSION SET CONSTRAINTS=DEFERRED"
REPORT AT 01:59
REPORTROLLOVER AT 02:00
--REPERROR DEFAULT,DISCARD
--HANDLECOLLISIONS
DISCARDFILE ./dirrpt/tmp1.dsc,append,megabytes 100
DISCARDROLLOVER AT 02:00
GETTRUNCATES
ASSUMETARGETDEFS
DYNAMICRESOLUTION
ALLOWNOOPUPDATES

--20211215--
map scott.emp,target scott.emp;
--20211215--


添加临时进程

  GGSCI > add REPLICAT tmp1 exttrail ./dirdat/lp,checkpointtable ogg.ggschkpt

修改临时进程trail文件序列号为早于expdp时间的序列号

  GGSCI > ALTER REPLICAT tmp1, EXTSEQNO 4741

临时进程基于csn启动进程

  GGSCI > start tmp1,aftercsn 13891433310456


查看临时进程是否追平

  GGSCI > info tmp1


8、临时进程tmp1追平后,停止源端投递进程(源端)

GGSCI > stop pump1

Sending STOP request to EXTRACT PUMP1 ...
Request processed.


9、将新增表从临时复制进程添加到现有复制进程

检查目标端临时和正式复制进程是否延迟,rba号是否一致。

  GGSCI > info tmp1

REPLICAT   TMP1      Last Started 2021-12-15 12:03   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:03 ago)
Log Read Checkpoint  File ./dirdat/lp004743
                     2021-12-15 12:05:12.076375  RBA 20187867

GGSCI > info rep1

REPLICAT   REP1    Last Started 2019-12-06 14:58   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:01 ago)
Log Read Checkpoint  File ./dirdat/lp004743
                     2021-12-15 12:05:12.076375  RBA 20187867

两个进程的seqno:4743,rba:20187867 一致,继续接下来的操作,不一致的话查找原因

停止tmp1、rep1

GGSCI > stop tmp1
GGSCI > stop rep1

在rep1中加入新增表

--20211215--
map scott.emp,target scott.emp;
--20211215--

启动 rep1复制进程

GGSCI > start rep1

10、删除临时复制进程tmp1(目标端)

GGSCI > dblogin userid ogg, password ogg
Successfully logged into database.

GGSCI > delete tmp1
Deleted REPLICAT TMP1.

11、源端启动投递进程(源端)

  GGSCI > start pump1

12、检查所有进程状态,及表的同步信息

GGSCI > info all

GGSCI > stats xxx,total,table schema.table

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论