OGG新增字段标准化测试一(非主键情况下,且add trandata schema.table)

实际运维中,由于OGG同步的数据,未使用DDL同步的情况下,并且DDL新增字段并不规范的情况下,导致数据不一致,本次实验测试不规范的新增字段,会导致什么问题?

数据库版本11.2.0.4, OGG 19.1.0.0.4

OGG测试源端新增字段,目标端并未及时同步字段,源端dml操作测试

OGG Version 19.1.0.0.4 Oracle 11.2.0.4 RAC 2节点。
测试3个表:分别为D1,D2,D3,用户源端YZ,目标端BAK_YZ。

如下分别测试3中情况:

1.复制进程使用assumetargetdefs;
2.复制进程使用OGG 默认情况下;

3.复制进程使用指定的Def文件。

最后:建议生产环境正确的添加字段的步骤。

 

为了避免阅读乏困,特在此文章前面进行总结:

1.oracle 19 ogg有优化,优先让保障OGG进程不中断,因此新增字段不规范的情况下,会导致新增字段的数据不会同步到ogg目标端,虽然数据不一致,但是OGG软件同步链路正常;

2.正确的步骤

 源端关闭抽取进程;

执行DDL脚本;

DELETE,ADD TRANDATA OGG表;

目标端执行DDL脚本;

源端启动EXT抽取进程,完成。

 

如果使用defgen

 源端关闭抽取进程;

执行DDL脚本;

对变更的表,重新输出表结构def文件;

DELETE,ADD TRANDATA OGG表;

目标端关闭复制进程;

执行DDL脚本;

根据源端def文件,更新或更换DEF文件

源端启动EXT抽取进程,完成。

 

 

 

 

测试1.复制进程使用assumetargetdefs

测试1.复制进程使用assumetargetdefs
源端目标端均有此前同步的一个DD表的数据,复制使用他们的数据进行测试。
SQL> select * from dd;
        ID CC_NA WITTIME
---------- ----- ------------------------------
         2 2     03-JUN-20 02.34.37.000000 PM
SQL> create table d1 as select * from dd;
SQL> create table d2 as select * from dd;
SQL> create table d3 as select * from dd;
添加最小补充日志
GGSCI (t1 as ogg@t1) 18> dblogin USERID ogg,PASSWORD ogg
GGSCI (t1 as ogg@t1) 21> add trandata yz.d1
GGSCI (t1 as ogg@t1) 21> add trandata yz.d2
GGSCI (t1 as ogg@t1) 21> add trandata yz.d3
GGSCI (t1 as ogg@t1) 24> info trandata yz.d1
Logging of supplemental redo log data is enabled for table YZ.D1.
Columns supplementally logged for table YZ.D1: "CC_NAME", "ID", "WITTIME".
Prepared CSN for table YZ.D1: 2815050



源端测试OGG同步性
SQL> delete d1;
SQL> delete d2;
SQL> delete d3;
SQL> commit;
目标端验证[OK]
目标端如果没有对应的表,OGG复制进程报错,同步表过去就可以了。
2020-07-29 09:29:13 INFO OGG-06505 MAP resolved (entry YZ.D1): MAP "YZ"."D1",TARGET BAK_YZ.D1.
2020-07-29 09:29:13 WARNING OGG-00869 No data found when executing SQL statement