Simple CDC最简单的一种 CDC。在这里,每一张 CDC 的表的变化都是独立捕获的,不需要考虑多张存在主外键引用关系的表之间的数据一致性。

1 环境准备

源表:ODI_SRC.DEPT

目标表:ODI_TAG.DEPT

配置拓扑结构见ODI Studio拓扑结构的创建与配置(Oracle)

模型反向工程见:Oracle Data Integrator 12c-模型(Model)和 数据存储(DataStore)

2导入并配置JKM

首先在项目中导入 JKM JKM Oracle Simple

JKM 是为表生成并捕获日志的知识模块,需要在模型或表上面进行配置。

编辑模型ODI_SRC的日记记录,选择简单日记记录模式,并选择 JKM Oracle Simple:

Oracle Data Integrator 12c----简单CDC(Simple CDC)

3启用 CDC

ODI 提供简易的界面来启用 CDC,包括下面的步骤:添加到 CDC, 订阅 CDC,启动日记。

首先右键模型ODI_SRC(或者右键数据存储EMP)→已更改数据捕获→添加到CDC

Oracle Data Integrator 12c----简单CDC(Simple CDC)

点击刷新按钮可以看到模型ODI_SRC中的表的图表发生了变化,出现了黄色的小时钟:

Oracle Data Integrator 12c----简单CDC(Simple CDC)

如果没有黄色的小时钟表,可以在工具→首选项勾选上在树中显示CDC内容Oracle Data Integrator 12c----简单CDC(Simple CDC)

接下来从模型ODI_SRC的弹出菜单中选择启动日记(也可以对某一张表启动日记):

Oracle Data Integrator 12c----简单CDC(Simple CDC)

对于简单 CDC,启动日记的时候可以输入订阅的用户名。在弹出的窗口中录入订阅的用户名,如 Simple,点击添加订户:Oracle Data Integrator 12c----简单CDC(Simple CDC)

点击确定完成:

Oracle Data Integrator 12c----简单CDC(Simple CDC)

这将会启动一个会话,

Oracle Data Integrator 12c----简单CDC(Simple CDC)

请在 Operator 中查看会话是否成功完成。这个会话会在数据库中创建一些对象:CDC 的数据字典表(SNP开头),日记表和视图(通常是J$JV$开头),trigger(通常以T$开头)。

Oracle Data Integrator 12c----简单CDC(Simple CDC)

可以发现EMP表,DEPT表上多了触发器,内容分别如下

触发器T$EMP(如果你只在表Dept上而不是模型上启动了日志,这没有这个)

ODI_SRC_WORK.T$EMP after insert or update or delete on ODI_SRC.EMP for each row declare V_FLAG VARCHAR(1); V_EMPNO NUMBER(4); begin if inserting then V_EMPNO := :new.EMPNO; V_FLAG := 'I'; end if; if updating then V_EMPNO := :new.EMPNO; V_FLAG := 'I'; end if; if deleting then V_EMPNO := :old.EMPNO; V_FLAG := 'D'; end if; insert into ODI_SRC_WORK.J$EMP ( JRN_SUBSCRIBER, JRN_CONSUMED, JRN_FLAG, JRN_DATE, EMPNO ) select JRN_SUBSCRIBER, '0', V_FLAG, sysdate, V_EMPNO from ODI_SRC_WORK.SNP_SUBSCRIBERS where JRN_TNAME = 'ODI_SRC.EMP' /* The following line can be uncommented for symetric replication */ /* and upper(USER) <> upper('ODI_SRC') */ ; end;
View Code

相关文章: