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

OGG Integrated Native DDL简单测试

IT那活儿 2021-07-17
1526

 简 述 

最近考虑将某应用系统的OGG链路启用DDL同步,因为抽取进程本来就是用的Integrated模式,数据库和OGG版本均为19C,所以抽取进程启用DDL只需添加DDL相关参数即可,数据库层面将需要同步的schema添加schematrandata。为了验证具体能达到的效果,所以本次现在虚拟机上做前期测试。

 原 理 

OGG从11R2开始提出了Integrated模式,在Integrated模式下不在使用OGG用户去挖掘信息,而是使用了Logmining Server(OUTbound Server)这个进程读数据中的日志信息,转换生成Logical Change records(LCR)文件,extract进程再将读取这个LCR文件把数据存入trail文件。带来的一个好处就是OGG12c之后DDL无需触发器了(OGG12C,DB11204)。

测试过程
首先测试添加schematrandata,观察在表有DML的情况下是否能添加成功:

可以看到,添加成功。Schema-level的附加日志是启用DDL复制的前提条件。

在已经配好了正常的同步的OGG进程后,主要向抽取进程中添加如下参数:

DDL INCLUDE MAPPED EXCLUDE MAPPED OBJTYPE 'TRIGGER' EXCLUDE MAPPED INSTR 'FOREIGN KEY'

DDLOPTIONS REPORT

使用exclude排除触发器和外键,添加参数后重启进程。

向复制进程中添加如下参数(复制进程默认开启DDL):

DDL INCLUDE MAPPED
DDLOPTIONS REPORT
reperror default,discard
DDLSUBST 'TBS_DATA' WITH 'TBS_TEST' INCLUDE ALL

DDLSUBST参数实现了源、目标端表空间不同情况下的转换。

1. 测试添加表字段:

源端:

可以看到,DDL操作被抽取进程捕捉到。

目标端:

可以看到,DDL操作已同步。

2. 测试修改字段长度

源端:

目标端:

3. 测试rename表名

源端:

目标端:

4. 测试新建表

源端:

目标端:

可以看到表空间也进行了转换。

5. 测试创建索引

源端:

目标端:

总 结 

通过简单测试,一般情况下的DDL,OGG都是可以支持的。但是后续生产环境要开启DDL的,需要考虑的因素较多,毕竟系统已经运行了较长的时间,肯定会有较多的表不一致的情况,直接开启,肯定会有大量的报错产生。所以具体如何开启,还需要妥善的方案和前期准备工作。

END

更多精彩干货分享

点击下方名片关注

IT那活儿

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

评论