一致性 CDC 中引入了变化集的概念。一个变化集中可以包括多个相互存在关联关系(如主外键引用关系)的表。CDC 在捕获和发布一个变化集中的变化时能够保证数据的一致性。这个练习介绍如何使用能够保证一致性的CDC。

1 环境准备

源表:ODI_SRC.DEPT,ODI_SRC.EMP

目标表:ODI_TAG.DEPT, ODI_TAG.EMP

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

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

2导入并配置JKM

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

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

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

3启用 CDC 日记

一致性 CDC 同简单 CDC 在实现方式和功能上都有不同,但是在使用上大致相同。这里还是包含了这几步:添加到 CDC, 订阅 CDC,启动日记。

首先右键模型ODI_SRC→已更改数据捕获→添加到CDC

查看

右键模型ODI_SRC→已更改数据捕获→订户→订阅

在弹出窗口种输入订阅用户,如Consistent,然后添加

点击确定完成订阅。这会启动一个会话。请在 Operator 中检查会话完成情况。

接下启动日记:右键模型ODI_SRC→已更改数据捕获→启动日记

这个操作也会执行一个会话,该会话执行完之后也将会生成一些 CDC 专用的数据库对象。生成的内容同简单 CDC 类似。

4测试是否能够捕获变化

往 DEPT 中插入一行数据数据。

INSERT INTO ODI_SRC.DEPT (DEPTNO, DNAME, LOC) VALUES ('', 'Assitant', 'BOSTON');

查看日记数据

继续插入数据

insert into odi_src.emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) 
values ('', 'miller', 'clerk', '', sysdate, '', null, '');

查看日记数据

然后查询日记表:

SELECT * FROM "ODI_SRC_WORK"."JV$DDEPT";
SELECT * FROM "ODI_SRC_WORK"."JV$DEMP";

可以查询到数据

但是,如果你执行下面的 SQL 查询

SELECT * FROM "ODI_SRC_WORK"."JV$DEPT";
SELECT * FROM "ODI_SRC_WORK"."JV$EMP";

你会发现查询不到内容。这是因为一致性 CDC 提供了按窗口扩展,按用户锁定并访问日记数据的机制。我们需要这种机制来保证在捕获和发布变化数据的时候不违反一致性。

Designer 提供了界面来扩展窗口和锁定订户。

首先从模型 ODI_SRC 的右键弹出菜单中选择扩展窗口:

然后从模型 ODI_SRC 的右键弹出菜单中选择锁定订户:

在弹出的窗口中选择并添加要锁定的订户,然后确定完成锁定:

这两个步骤都会提交一个会话。在 Operator 中查看会话执行情况。然后再查询视图

我们会发现视图中能看到变化数据了。

SELECT * FROM "ODI_SRC_WORK"."JV$DEPT";

SELECT * FROM "ODI_SRC_WORK"."JV$EMP";

5创建接口将变化数据同步到目标

在项目ODI_Exercise中创建接口Consistent_CDC_Dept 和 Consistent_CDC_Emp,这里以Consistent_CDC_Dept 表为例

在关系图中将 ODI_SRC 中的 EMP 添加到源,将 ODI_TRG中的 EMP 添加到目标数据存储,并自动映射。

然后选中源数据存储,选中“仅以进行日记记录的数据”,

指定日志过滤器,过滤器的内容是针对订户的,下面的例子表示当前接口将消费Consistent订户的数据:

其他的和一般的映射相同

然后配置好 LKM(使用LKM SQL TO Oracle),IKM(使用 Oracle Increamental Update),和 CKM。

然后执行两个接口。我们看到变化数据被同步到了ODI_TAG中的DEPT和EMP表中。

但是我们会发现日记数据还在。也就是说对于使用了一致性设置的 CDC,接口同步完数据之后并不会自动清除日记。

我们需要执行另外两个操作来清除已经消费了的日记数据:解除锁定和清除日记。Designer 也提供了执行这两个操作的界面。

6创建一个包完成一个变化集的数据同步

一致性 CDC 会为一个模型创建一个变化集,变化集的名称同模型的名称相同。在ODI_SRC 变化集中包含了2张表:DEPT, EMP。

然后创建一个包CDC_Consistent_Pkg。在关系图中将模型ODI_SRC拖进来。指定类型为日记记录模型,选上扩展窗口和锁定订户,并且添加订户 Consistent:

然后将 Consistent_CDC_Dept 和 Consistent_CDC_Emp拖进来。在最后再将模型 ODI_SRC 拖进来,指定类型为日记记录模型,选上清除日记和取消订户锁定,并且添加订户 Consistent:

7循环执行

在上面的第一个日记记录模型ODI_SRC后面添加OdiWaitForLogData

CDC集的名字可以通过下面的SQL查询

SELECT * FROM "ODI_SRC_WORK"."SNP_CDC_SET";

在上面的第2个日记记录模型ODI_SRC后面添加OdiSleep

设置第一步为第一个模型ODI_SRC

参考:

http://odiexperts.com/cdc-consistent/

Oracle Data Integrator 12c----一致性 CDC(Consistent CDC)的更多相关文章

  1. Oracle Data Integrator 12c 安装(ODI安装)

    Oracle Data Integrator 12c 安装(ODI安装) 企业版安装步骤(包含独立安装步骤) 官网下载Oracle Data Integrator 12cR2 (12.2.1.0.0) ...

  2. Oracle Data Integrator 12c (12.1.2)新特性

    改进特性如下: 基于流程界面的声明式设计 在12c中,以前的接口(interface)已经改为映射(mapping),新的基于流程声明的设计方式更灵活,也更容易使用.在12c中,映射的实现是通过使用J ...

  3. Manipulating Data from Oracle Object Storage to ADW with Oracle Data Integrator (ODI)

    0. Introduction and Prerequisites This article presents an overview on how to use Oracle Data Integr ...

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

    Simple CDC最简单的一种 CDC.在这里,每一张 CDC 的表的变化都是独立捕获的,不需要考虑多张存在主外键引用关系的表之间的数据一致性. 1 环境准备 源表:ODI_SRC.DEPT 目标表 ...

  5. Oracle Goldengate和Oracle Data Integrator的初步认识

    免责声明:     本文中使用的部分图片来自于网络,如有侵权,请联系博主进行删除 1. Oracle Glodengate是什么? GoldenGate是oracle的一种基于数据库日志的数据同步软件 ...

  6. Oracle Data Integrator与OWB的集成及迁移

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  7. Oracle Data Integrator 12cR1 (12.1.3.0.0)安装过程

    Oracle Data Integrator 12cR1 (12.1.3.0.0)安装过程 下载安装文件 Oracle Data Integrator 12cR1 (12.1.3.0.0) http: ...

  8. Oracle Data Integrator 12c-第一个映射

    一.创建"项目" 设计器->项目,点击插入项目图标, 在项目对话框的"定义"标签下输入项目名称如ODI_Exercise ,保存 二.导入知识模块 项目→ ...

  9. oracle data integrator与大数据平台的集成

    在最新版本的ODI中,通过使用各种知识模块,可在统一的界面上实现对传统数据库.hive, pig, spark, hdfs等的ETL操作,满足在同一系统或采用相同的方式实现ETL功能. 详细的内容可参 ...

随机推荐

  1. Material Designer的低版本兼容实现(十一)—— Switch

    5.0中的switch和之前完全不同了,漂亮不漂亮咱们另说,总之4.x上是没有这样的效果了.实现方式有两种,一种是用这个兼容包来做类似的效果,一种是用传统的checkbox来代替.我感觉兼容包的效果是 ...

  2. 自己写的SeekBarPreference,可以实现seekbar滑动监听和设置默认进度和最大进度

    我通过参考android源码,把这个烂尾的类写完了.具体实现了seekbar的数据自动存储,seekbar拖动时触发监听器,可以设置默认的进度和最大进度.先说使用的方式: 1.在xml文件中使用pre ...

  3. Notification详解(含工具类)

                                                                     昨天一天只写了两篇文章,效率超低.追其原因呢,其实我一直在研究noti ...

  4. 基于DPI(深度报文解析)的应用识别

    一.概述 1.DPI(Deep packet inspection,深度报文解析) 所谓“深度”是和普通的报文分析层次相比较而言的,“普通报文检测”仅分析IP包4 层以下的内容,包括源地址.目的地址. ...

  5. Newtonsoft.Json高级用法,json序列号,model反序列化,支持序列化和反序列化DataTable,DataSet,Entity Framework和Entity,字符串

    原文地址:https://www.cnblogs.com/yanweidie/p/4605212.html 手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口 ...

  6. UML图与软件开发过程那点关系

    首先,软工文档, 软工文档,也就是计划,设计,描述,使用软件的一些文件,它最大的特点就是固定不变,用来给不同的人和计算机来阅读.在期间,文档起到了桥梁的作用,看这张图很形象: 在这里在看一下国家统一规 ...

  7. C#邮件发送(最坑爹的邮箱-QQ邮箱)

    最近工作挺清闲的,有空的时候陪妹子出去玩玩,自己看看小说,看看电影,日子过的挺欢乐的,这个星期幡然悔悟,代码才是我的最爱,做点小东西,就写个邮件发送程序.说的邮件发送相信工作过基本上都会用到过,用户注 ...

  8. Python3爬虫:利用Fidder抓取手机APP的数据

    1.什么是Fiddler? Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,ht ...

  9. Swift语言从天而降,是否能掀起新一轮的科技革命?

    Swift语言从天而降,是否能掀起新一轮的科技革命? Swift语言诞生到如今,才短短一个月多,Swift居然挤进TIOBE排行榜的第16位,相信这发展的速度绝不是不论什么一个语言可与之相提并论,那S ...

  10. AI 也开源:50 大开源 AI 项目 (转)

    这些开源AI项目专注于机器学习.深度学习.神经网络及其他应用场合. 自IT界早期以来,研制出能像人类那样“思考”的机器一直是研究人员的一大目标.在过去几年,计算机科学家们在人工智能(AI)领域已取得了 ...