Oracle OGG 单表重新初始化同步的两种思路

Oracle OGG 单表重新初始化同步的两种思路

一站式学习AI基础知识+核心技术+实操教程+免费工具集
9大课程,边学习边实操,带你通关计算机视觉应用,还有免费工具集和开放平台供所有开发者使用!

Oracle OGG 单表重新初始化同步的两种思路

                                                 by ACDdante

一、应用需求
由于多种原因导致OGG源端和目标端两端数据不一致,且总体数据量差异较大,如果整个schema重新进行初始化,工作量过于巨大,且业务要求也不允许。在这种情况下,可考虑对数据出现不一致的单张表或者多张表进行初始化。

二、基本思路
001、使用replicat进程完成单表重新初始化

  1.  
    ①在目标端将出现数据不一致的表从replicat进程中排除
  2.  
    ②基于源端SCN对单张表或者多张表单独建立replicat进程进行初始化
  3.  
    ③等到新的replicat进行无延迟时停掉目标端对应的datapump进程
  4.  
    ④停止并删除新建的replicat进程,在原replicat进程中添加这些差异 表,指定SCN启动rep进程,完成数据同步

002、使用expdp/impdp数据导入导出完成单表重新初始化

  1.  
    ①在目标端将出现数据不一致的表从replicat进程中排除,并重启rep进程
  2.  
    ②在源端,基于最新SCN将该表单独导出expdp,并拷贝至目标端
  3.  
    ③在目标端,删除该差异表,drop table schema.tablexxx;使用impdp重新导入该表数据。
  4.  
    ④目标端,replicat进程将该表配置同步,指定SCN重新启动replicat进程,观察数据同步状态

!==============================================!
1、在目标端上,将MS_XXX 单表排除
edit param reptxyy
MAPEXCLUDE HIS.MS_XXX
重启REPXXXX应用进程

2、在 源端上查询最新的SCN

col current_scn for 999999999
select current_scn from v$database;
scn
16563972104

3、导数据到目标端:
源端导出MS_XXX表数据
expdp system/password directory=IMPDP dumpfile=xxxxhis20180122.dmp logfile=xxxxhis20180122.log tables=HIS.MS_XXX flashback_scn=16564108704
scp XXXXhis20180122.dmp 目标端IP:/u01/app/expdp

4、目标端导入数据
impdp system/password directory=expdp dumpfile=xxxxhis20180122.dmp logfile=xxxxhis20180122.log PARALLEL=4 tables=HIS.MS_XXX REMAP_SCHEMA=HIS:XXXX_HIS REMAP_TABLESPACE=HIS:XXXX_HIS transform=OID:N ignore=y

5、目标端指定SCN启动replicat
edit param repxxxx
删除排除MS_XXX表配置
通过指定SCN启动REPXXXX进程
start replicat REPXXXX, aftercsn 16563972104

6、查看数据同步状态
或者在目标端replicat进程中配置单表同步SCN起始位:
map HIS.MS_XXX, target XXXX_HIS.MS_XXX, filter(@GETENV("transaction","csn") >16563972104);
!===============================================!

posted @ 2021-10-13 14:46  耀阳居士  阅读(257)  评论(0编辑  收藏  举报