CDC不同模式在ODI中体现系列之一 同步模式
Oracle Database Change Data Capture feature
变化数据捕获是一个通称,是用来描述捕捉增量变化应用到数据存储。随着数据量的不断增长和数据存储日益变化,数据捕获是数据仓库一个重要功能,特别是要求实时或近实时的数据仓库。
在Oracle数据库概念中,数据采集的变化数据库功能,能够在Oracle数据库上捕捉增量。传统上你会必须修改源代码的应用,以捕获增量变化。
Oracle的变化数据捕获使增量变化捕获而不对源程序做任何更改。
Oracle数据库10g第2版介绍异步分布式CDC,比原有9i数据库第2版有了更大的提高。这食谱介绍如何设置这样一个异步变化数据捕获环境。
模式分类对比:
同步CDC模式(Synchronous Mode)通过在源库上建立trigger的方式来捕获增量数据,因此可以做到实时抽取增量数据.
异步HotLog模式(Asynchronous HotLog Mode)直接从source database的online redo log file中抽取增量数据,由于需要解析日志文件,会有一定的时间延迟。change table也必须在源库中生成。该模式由于是在源数据库中解析日志,对源数据库也会造成一定的压力,但是比同步CDC模式的压力要小一些。
异步分布式HotLog模式(Asynchronous Distributed HotLog Mode)和异步HotLog模式相比,主要是将多个source database的当前联机日志中解析出增量数据,然后传递一个staging database中处理,便于集中式数据管理。
异步AutoLog模式(Asynchronous AutoLog Mode)则是先将日志文件从source database传递到staging database,然后在staging database执行日志分析。这样可以将对source database的压力减到最小
Publishers and Subscribers (发布用户和订阅用户)
publisher 就是发布变化数据捕捉的数据库用户.所以在ODI需要先创建一个发布者.
subscriber 就是通过所谓的订购,利用这个捕捉的变化数据的数据库用户,也可以理解为订阅者.
出于安全原因,发布者和订阅用户不应该是相同的数据库用户。一个 Publisher可以支持许多subscriber用户。
CDC利用变化表和用户视图。数据变化写入变化表为使用CDC提供了一个可扩展的基础架构.用户针对变化表的数据可以获得一致数据变化集的视图。用户可以扩展和清除订阅窗户,通过数据库视图,隐式地改变数据集。如果没有任何用户订阅变化数据,变化表中的数据可以被清除。CDC 通过PL/SQL包进行调用.
CDC有两种捕捉数据方式 同步CDC和异步CDC.
异步CDC又分3种模式: 异步HotLog模式,异步分布式HotLog模式,异步AutoLog模式.
同步CDC模式创建方式:
1.创建Publisher用户,在sys用户中创建变化表集(change set),然后在变化集中创建相应的变化表
(change table),一个change set可以对应多个change table.
2.创建Subscriber用户,publisher用户把change table访问权限授予subscriber用户.
3.Subscriber可以创建subscription(订阅),通过创建subscribe可以订阅change set中多个source table,
这个table是change table的源表.
4.激活订阅 activate subscription
5.扩展窗口 extend_windows,扩展窗口以后才能看到数据变化.如果想每次都看到数据的变化,必须每次扩展窗口.
上面的5个步骤,是在Oracle数据库中实施的步骤,那么在ODI中如何体现呢?下面我们来具体的实施方法.
因为同步模式CDC是通过触发器的方式来实现,所以数据库可以运行在非归档的模式下.
1.在ODI中CDC是通过日志知识模块来实施的,所以我们首先要引入知识模块
在ODI项目中选择日记JKM,然后选择右键,导入知识模块,因为我们是用同步模式CDC,选择"JKM Oracle Simple"知识KM就可以,我们还可以看到JKM Oracle Consistent,再后面的异步CDC,我们会引用进来,呵呵.
2.
在模型属性中选择日志记录TAB页,然后选择简单,选择日志记录KM时,可以看到刚才我们添加的KM,JKM Oracle Simple.CDC, 这个KM下面有说明,不适合频繁的操作,不会对生产系统带来价值,反而影响性能.因为这个JKM是触发器的形式.
这个时候,我们在模型中也已经定义好了JKM,下面就可以在模型的Data Store中进行添加到CDC,我们也可以针对整个模式做CDC,这里我们选择单独的Data Store.
我们先查看系统已有的触发器:
SQL> conn odi_tmp/odi_tmp
已连接。
SQL> select * from user_triggers;
未选定行
SQL>
可以看到目前开发用户下面是没有触发器的.
选择JKM以后,点击应用.
后面,我们可以通过数据库确认ODI在数据库中建立了触发器.
3.开始添加Data Store到数据源
添加数据源到CDC以后,会看到CDC左上角出现一个表的橙色图标,表示已经加到CDC,但是还没有启动.
4.启动日志
启动日志以后,我们需要定义ODI的订阅者,也就是需要捕捉这个日志数据的用户.
启动日志会弹出执行对话框,选择相应的上下文,如果切换到生产库,切换上下文就可以.
5.开始订阅日志,选择订阅用户
订阅时,因为我们用SUPERVISOR用户登录,所以系统会默认用
SUNOPSIS用户
点击确定以后,可以看到Data Store的左上角有个绿色时钟的图标,表示已经成功启动CDC
6.查看CDC的订阅状态
绿色图标表示已经成功订阅.
7.确认数据库中是否也用相应的触发器
这个时候,再次查看ODI_TMP下面的触发器,为什么要查看ODI_TMP下面:
因为我们在Topology Manager当中定义ORACLE连接的时候,就已定义了工作架构的用户,
默认是和架构用户一样,所以我们可以看到选择工作架构用户的好处.
这时可以看到触发器已经成功被ODI创建:
SQL>select trigger_name,trigger_type,table_name,status,action_type from user_triggers;
TRIGGER_NA TRIGGER_TYPE TABLE_NA STATUS ACTION_TYPE
---------- ---------------- -------- ---------------- ----------------------
T$CUSTOMER AFTER EACH ROW CUSTOMER ENABLED PL/SQL
8.我们来测试CDC同步模式的数据
我们右键选择数据模型以后,点击数据,进行数据的编辑
点击+号,我们添入一条数据
点击应用以后,我们可以看到数据已经加入
点击日志数据,查看CDC是否已经成功捕捉数据库表的数据
9.查看ODI是否捕捉数据
我们在接口把同步CDC加入到接口中
我们点击源数据源下面有个”仅已记录日记记录的数据”前面的方框,点击以后,就把CDC成功添加到接口了.
CDC不同模式在ODI中体现系列之一 同步模式的更多相关文章
- Singer 学习十 同步模式
sync 模式是属于tap 的操作,同步模式下,tap 需要提交 schema. record .state message, singer 指南对于每种 类型有详细的说明 streams 每个str ...
- CDC不同模式在ODI体现系列之二 异步模式
CDC不同模式在ODI体现系列之二 异步模式 2 异步模式需要在数据库中做一些准备工作: 改数据为归档并启用logminer: SQL> shutdown immediate 数据库已经关闭. ...
- ODI中的CDC
ODI中的CDC是通过一组所谓的日志知识模块(Journal Knowledge Module,JKM)实现的,在项目中加在了这些模块后,就可以在接口设计时选择全量数据,还是变化数据. ODI共提 ...
- 设计模式系列之迭代器模式(Iterator Pattern)——遍历聚合对象中的元素
模式概述 模式定义 模式结构图 模式伪代码 模式改进 模式应用 模式在JDK中的应用 模式在开源项目中的应用 模式总结 说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修 ...
- (5.12)mysql高可用系列——复制中的在线切换GTID模式/增加节点/删除节点
目录 [0]需求 前提,已经假设好基于传统异步复制的主库和从库1. [0.1]传统异步切换成基于GTID的无损模式 [0.2]增加特殊要求的从库 [1]操作环境 [2]构建 复制->半同步复制 ...
- ODI中删除数据的处理
ODI中删除数据的处理 一.前提知识:数据从源数据库向数据仓库抽取时,一般采用以下几种方式: 全抽取模式如果表的数据量较小,则可以采取全表抽取方式,以TRUNCATE/INSERT方式进行数据抽取. ...
- [工作中的设计模式]享元模式模式FlyWeight
一.模式解析 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...
- 开始VS 2012中LightSwitch系列的第3部分:我该选择哪一个屏幕模板
[原文发表地址] Beginning LightSwitch in VS 2012 Part 3: Screen Templates, Which One Do I Choose? [原文发表时间] ...
- 大话设计模式C++版——工厂模式在COM中的典型应用
上篇<大话设计模式C++版——抽象工厂模式>中,我们拯救世界未遂,留下小小的遗憾,本篇中我们将给出一个解决方案——COM组件技术,同时也顺便扯扯工厂模式在COM组件技术中的应用. 工厂模式 ...
随机推荐
- Less2css error 终极解决方案
使用sublime Text3 的时候,安装less2Css后,和很多人一样以为大功告成,开始要运行编译less文件,结果开始发现 于是乎开始搜索问题和解决方案,然后就有了下面的解决方案1 方案1:通 ...
- PS切图保存后的背景图为透明
1.若想PS切图保存后的背景图为透明,那么则需要在如下图中所示的修改即可,切图后[文件]——>[存储为web格式]——>[PNG-24]: 2.要想在css中的背景图片为相通,则先剪切一个 ...
- 用python发送GET和POST请求
GET请求: python2.7: import urllib,urllib2 url='http://192.168.199.1:8000/mainsugar/loginGET/' textmod ...
- make file 详
一: linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. 1.命令格式: touch [选项]... 文件... 2.命令参数: -a ...
- MVC 返回ActionResult 类型
1. Content() 返回文本类型,比如"Hello World!". 2.File() 返回文件类型,如PDF,JPG. 3.HttpNotFound() 返回404 HTT ...
- VS2015中使用Git
10分钟学会在VS2015中使用Git 写程序必然需要版本控制,哪怕是个人项目也是必须的.我们在开发UWP APP的时候,VS2015默认提供了对微软TFS和Git的支持.考虑到现在Git很火,作为微 ...
- Three.js基础
Three.js基础探寻一 Three.js基础探寻一 1.webGL 一种网络标准,定义了一些较底层的图形接口. 2.Three.js 一个3Djs库,webGL开源框架中比较优秀的一个.除了w ...
- php date操作
date(format,timestamp) d - 月中的天 (01-31) m - 当前月,以数字计 (01-12) Y - 当前的年(四位数) h 小时,12 小时格式,有前导零 01 到 12 ...
- 优雅智慧女性课程班 - 公开课程 - 课程介绍 - 中国人民大学商学院EDP中心
优雅智慧女性课程班 - 公开课程 - 课程介绍 - 中国人民大学商学院EDP中心 优雅智慧女性课程班 课程总览 思想睿智成熟,外表美丽自信,气质优雅端庄,是魅力女性所应具备的特性.在当今不确定环境下, ...
- Hibernate 、多表关联映射 - 一对一关系映射(one- to-one)
hibernate.cfg.xml: <hibernate-configuration> <session-factory name="sessionFactory&quo ...