暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

SQLServer到Oracle通过OGG初始化并通过基于时间的方式开启复制进程

IT那活儿 2021-06-25
2170
环境介绍
源端:

操作系统版本:

Windows Server 2008 R2 Enterprise

数据库版本:

Microsoft SQL Server 2008

OGG版本:

Oracle GoldenGate Command Interpreter for SQL Server

Version 12.1.2.1.10 21604177 OGGCORE_12.1.2.1.0OGGBP_PLATFORMS_150902.1337

Windows x64 (optimized), Microsoft SQL Server on Sep 2

Operating system character set identified as GBK.

目标端:

目标端操作系统内核版本:

CentOS Linux release 7.4.1708 (Core)

数据库版本:

11.2.0.4.0

OGG版本:

Oracle GoldenGate Command Interpreter for Oracle

Version 12.1.2.1.10 21604177 OGGCORE_12.1.2.1.0OGGBP_PLATFORMS_150902.1337_FBO

Linux, x64, 64bit (optimized), Oracle 11g on Sep  2

Operating system character set identified as UTF-8.

方案介绍
当前项目上sqlserver到oracle想要初始化一张新表,需要依赖中间库,

原始方案

  1. 目标库sqlserver全部备库

  2. 中间库sqlserver全库恢复

  3. 中间库通过ogg原有的初始化功能初始化此表数据到目标库

  4. 初始化完成,源库和目标库建立复制关系,基于备份点启动复制进程

优化后的方案

  1. 源库直接初始化数据到目标库

  2. 目标库搭建复制进程基于初始化时间点之前启动复制进程

  3. 添加reperror (-1, discard)参数针对主机冲突异常处理

基于时间的优点

sqlserver初始化少量表到oracle,我们这边项目同步需求相对较多,以前保留的初始化方案是采用第一种原始方案,这就导致这类需要初始化的需求每次提交都要预留一周的操作时间,毕竟备份恢复600G的数据库耗时和对生产系统的性能影响还是不小的,最后我们通过优化采用基于时间的开启复制进程方式,大大缩减了中间耗时的时间成本,工作效率提升95%。

操作方案

源库配置

MGR进程:


GGSCI (crmprddb) 2> view params mgrPORT 7809PURGEOLDEXTRACTS dirdat\cm* USECHECKPOINTS, MINKEEPDAYS 3AUTORESTART EXTRACT *, WAITMINUTES 6, RETRIES 5LAGREPORTMINUTES 5LAGCRITICALMINUTES 15

投递进程DPCRM


GGSCI (crmprddb) 3> view params DPCRMEXTRACT dpcrmDISCARDFILE dirrpt\dpcrm.dsc, PURGEPASSTHRURMTHOST 192.168.***.***, MGRPORT 7809RMTTRAIL dirdat/trTABLE *.*;

抽取进程EXTCRM:


GGSCI (crmprddb) 6> view param EXTCRMEXTRACT extcrmSOURCEDB ggsadmin, USERID 用户名, PASSWORD 密码TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINTDYNAMICRESOLUTIONREPORTCOUNT EVERY 30 MINUTES, RATEDISCARDFILE dirrpt\extcrm.dsc, PURGEEXTTRAIL dirdat\cmGETUPDATEBEFORESNOCOMPRESSUPDATESNOCOMPRESSDELETESTABLE dbo.ACCOUNTBASE; --投递的表TABLE MetaDataSchema.ENTITY;

源端操作

1. 增加test表表级附加日志

dblogin sourcedb test, userid test, password test

add trandata  dbo. test

--查看附加日志是否添加

info trandata  dbo. test

2. 将test表添加到抽取进程

edit params EXTCRM

table dbo. test;

3. 源端重启抽取进程

stop *

start *

4. 源端修改defgen配置文件,重新生成defgen文件,并传输到目标端

vi ./dirprm/defgen.prm

table dbo. test;

重新生产定义文件scp到目标端

defgen paramfile d:\ogg\dirprm\defgen.prm

5. 目标端重启crm复制进程,让新defgen文件生效

scp ./dirdef/crm.def oracle@192.168.***.***:/oracle/ogg/dirdef/

stop *

start *

6. 源库配置初始化进程

initcrm1:源端初始化进程名

intcrm1:目标端初始化进程名


GGSCI> ADD EXTRACT initcrm1, SOURCEISTABLEGGSCI> edit params initcrm1EXTRACT initcrm1SOURCEDB test, USERID test, PASSWORD testRMTHOST 192.168.***.***, MGRPORT 7809RMTTASK REPLICAT, GROUP intcrm1table dbo.test;

目标端配置

新增初始化进程intcrm1


GGSCI> ADD replicat intcrm1, specialrunGGSCI> edit params intcrm1SETENV (ORACLE_HOME = "/oracle/product/11.2.0" )SETENV (ORACLE_SID = "odsdb")SETENV (NLS_LANG = "American_America.AL32UTF8")REPLICAT intcrm1USERID ggsadmin, PASSWORD ggsadmin--BULKLOADSOURCEDEFS oracle/ogg/dirdef/crm.defMAP dbo.test, TARGET bi_ods. test

源端启动初始化进程

start initcrm1

查看初始化进程执行情况

info * , task

开启初始化进程后,通过info * , task查看同步状态,初始化进程同步完成后会自动断开

基于时间启动复制进程

新加复制进程CRMTEST,基于时间点:

ADD REPLICAT CRMTEST, EXTTRAIL dirdat/tr,BEGIN 2021-05-07 17:00:00

添加主键冲突异常处理参数:

reperror (-1, discard) 此参数针对ora-00001主键冲突报错,直接跳过


GGSCI> dblogin userid test,password testGGSCI> ADD REPLICAT CRMTEST, EXTTRAIL dirdat/tr,BEGIN 2021-05-07 17:00:00GGSCI> edit params CRMTESTINCLUDE dirprm/upd.macSETENV (ORACLE_HOME = "/oracle/product/11.2.0")SETENV (ORACLE_SID = "odsdb")SETENV (NLS_LANG = "American_America.AL32UTF8")REPLICAT CRMTESTUSERID ggsadmin, PASSWORD ggsadminDISCARDFILE ./dircrd/CRMTEST.dsc, PURGESOURCEDEFS oracle/ogg/dirdef/crm.defSQLEXEC "ALTER SESSION SET COMMIT_WAIT = NOWAIT"BATCHSQLDBOPTIONS DEFERREFCONSTDBOPTIONS SUPPRESSTRIGGERSALLOWDUPTARGETMAPreperror (-1, discard)MAP dbo.test, TARGET bi_ods.test;

启动复制进程

alter replicat CRMTEST, extseqno 022983, extrba 0
start CRMTEST

删除异常处理参数

通过 info CRMTEST 查看进程同步情况,当进程同步追上以后,删除reperror (-1, discard)

参数,至此基于时间的异构数据库ogg表同步配置完成。

END

更多精彩干货分享

点击下方名片关注

IT那活儿


文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论