1 / 15
文档名称:

Oracle+CDC.doc

格式:doc   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

Oracle+CDC.doc

上传人:2028423509 2016/3/10 文件大小:0 KB

下载得到文件列表

Oracle+CDC.doc

相关文档

文档介绍

文档介绍:.页眉. .页脚. Oracle CD C操作手册 Oracle 的增量数据处理方案中联新时代 1. CDC 简介 . CDC 是一种数据增量处理技术在构建数据仓库系统的 ETL 过程中, 增量数据的抽取是一个非常关键的环节. 对解决方案一般有两点要求:?准确性, 能够将业务系统中的数据按一定的频率准确的取到数据仓库中?性能, 不能对业务系统造成太大的压力, 影响现有业务目前,最为常用的 ETL 增量数据处理方式有三种: ?时间戳?日志对比(CDC) ?全面数据对比三种方式各有优劣, 时间戳是目前应用比较普遍的方式。在 Oracle= 中推出了两种主要的 ETL 方案,一种是我们熟悉的物化视图( materialized view ), 另一种就是本文将要介绍的 CDC 组件( Change Data Capture 改变数据捕获)。 CDC 特性是在 Oracle9i 数据库中引入的。 CDC 能够帮助你识别从上次提取之后发生变化的数据。利用 CDC ,在对源表进行 INSERT 、 UPDATE 或 DELETE 等操作的同时就可以提取数据, 并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。 . CDC 与传统增量处理方式的对比分析我们对比一下 CDC 方式与传统的全表对比与时间戳方式。全表对比使用数据仓库中的当前表与业务系统表进行对比,取得变化了的数据,典型是使用 minus 语句: SELECT *FROM new_version MINUS SELECT *FROM old_version; 使用全表对比有以下几方面的问题: ?需要将业务系统中表全部转输,造成很高的网络负载?需要对两版本的表进行全表扫描,性能代价非常高?无法反映数据的历史状态,如无法捕捉库存的历史变化记录还有一种常用的方式是时间戳, 它是以业务表中某一个字段的值, 作为判断新旧数据的标志。如,”病人费用记录”中的登记时间, 每次只抽取上次抽取记录时间以后产生的数据。时间戳方式存在以下问题: ?无法捕获对时间戳以前数据的 delete 和 update 操作, 在数据准确性上受到了一定的限制。而类似于 ZLHIS 这种业务系统对已经发生的数据进行 update 和 delete 操作非常普遍( 如划价记录转收费记录) ,应用场景受到了限制。?要求业务系统的表必须一个可以标识新旧数据的列,而某些表没有设置这种列。 . CDC 的发布订立模型 CDC 体系结构基于发布者/ 订阅者模型。发布者捕捉变化数据并提供给订阅者。订阅者使用从发布者那里获得的变化数据。通常, CDC 系统拥有一个发布者和多个订阅者。发布者首先需要识别捕获变化数据所需的源表。然后, 它捕捉变化的数据并将其保存在特别创建的变化表中。它还使订阅者能够控制对变化数据的访问。订阅者需要清楚自己感兴趣的是哪些变化数据。一个订阅者可能不会对发布者发布的所有数据都感兴趣。订阅者需要创建一个订阅者视图来访问经发布者授权可以访问的变化数据。 CDC 有几个重要的基本概念需要先明确一下: ?源表(Source Table) ,业务数据库的需要捕获数据的源表?变化表(C hange Table) ,保存从源表捕获的变化数据( 包括各种 DML 产生的数据)?变化集(C hange Set) , 是保证事务一致性的数据集合。一个变化集对应多个变化表?订阅视图(S ubscription V iew), 提供给读取变化表数据的视图?订阅窗口(Subscription Window) , 定义了查看变化数据的时间范围. 就象一个观察变化数据的滑动窗口。变化数据处理完成后,可以对清除订阅窗口。 . CDC 的同步与异步模式?同步模式, 实时的捕获变化数据并存储到变化表中, 发布者与订阅都位于同一数据库中。下图说明了同步模式的基本架构。?异步模式,以 Oracle 流复制技术为基础, 由于流复制比较复杂, 本文档不涉及异步模式的 CDC . CDC 相关的数据库对象(Package) ?包(Package) ? DBMS_CDC_PUBLISH , 用于定义发布操作? DBMS_CDC_SUBSCRIBE ,用于定义订阅操作?角色? EXECUTE_CATALOG_ROLE ? SELECT_CATALOG_ROLE ? CREATE TABLE and CREATE SESSION privileges ? EXECUTE on the DBMS_CDC_PUBLISH package ?视图? ALL_SOURCE_TABLES 源表? ALL_PUBLISHED_COLUMNS 发布的表列? All_Subscr