转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
oracle捕捉变化数据         ★★★★

oracle捕捉变化数据

作者:闵涛 文章来源:闵涛的学习笔记 点击数:619 更新时间:2009/4/22 21:59:05


 

使用变化数据捕捉特性可以简化数据仓库应用中的ETL过程。

数据提取是所有数据仓储的一个完整组成部分。数据通常是在晚上从事务处理系统中被提取出来并被传输到数据仓库。一般情况下,数据仓库中的所有数据都是由从源系统中提取出的数据来更新。但是在提取和传输海量数据时,资源和时间的消耗都是巨大的。

由于数据提取每日都在进行,因此如果只是提取和加载自上次提取之后发生变化的数据,那么效率就会大大提高。但是,在大多数源系统中,识别并提取最新变化的数据即使是可能的,也非常困难。

除了识别最新变化数据的挑战之外,许多提取、转换和加载(ETL)环境都包含一个源系统,为多个目标系统提供数据。另外,从一个源系统到多个目标系统同步改变数据也是一个挑战。

Oracle变化数据捕捉(Change Data Capture,CDC)特性简化了识别自上次提取后发生变化的数据的过程。CDC提供了易于使用的API来设置CDC环境。 如果你是参与数据集成项目的DBA或开发人员,需要定期从一个系统提取大量数据并将其传输到另一个系统或多个系统,那就赶快考虑使用CDC来缩短ETL的时间吧。

本文将为你提供一种设置CDC环境的循序渐进的方法,概述设置CDC环境的先决条件,并讨论为你的应用程序设置CDC时需要掌握的API。

概述

CDC特性是在Oracle9i数据库中引入的。CDC能够帮助你识别从上次提取之后发生变化的数据。利用CDC,在对源表进行INSERT、UPDATE或DELETE等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。

图 1 给出了CDC环境的基本体系结构。

CDC建立订阅者视图来控制目标系统对变化数据的获取。目标系统是任何需要使用从源系统中捕获的数据的应用程序。

发布者和订阅者

CDC体系结构基于发布者/订阅者模型。发布者捕捉变化数据并提供给订阅者。订阅者使用从发布者那里获得的变化数据。通常,CDC系统拥有一个发布者和多个订阅者。

发布者首先需要识别捕获变化数据所需的源表。然后,它捕捉变化的数据并将其保存在特别创建的变化表中。它还使订阅者能够控制对变化数据的访问。

订阅者需要清楚自己感兴趣的是哪些变化数据。一个订阅者可能不会对发布者发布的所有数据都感兴趣。 订阅者需要创建一个订阅者视图来访问经发布者授权可以访问的变化数据。

Change Data Capture architecture

图1: 变化数据捕捉的体系结构

 

设置CDC环境

CDC特性是Oracle9i (及更高版本)数据库软件的一部分,你无需安装除Oracle9i外的任何其他软件就可以使用CDC。要使用Oracle9i 数据库的CDC特性,请按下述步骤进行:

  • 启用数据库中的Java功能(Java虚拟机,JVM)。有关配置Oracle JVM的详细说明,请参见《Oracle9i数据库Java开发人员指南》。当使用数据库配置助理(Database Configuration Assistant,DBCA)创建数据库时,你可以选择安装Oracle JVM。

     

  • 启用系统触发器。当创建数据库时,系统触发器默认情况下是启用的。

一旦你的数据库做好了CDC准备,你就可以按照以下步骤设置CDC环境。

1. 确定源表。
2. 设置发布者。
3. 创建变化表。
4. 设置订阅者。
5. 订阅源表并激活订阅过程。
6. 设置CDC窗口。
7. 准备订阅者视图。
8. 访问变化表中的数据。
9. 删除订阅者视图,并清除CDC窗口。
10. 重复第6到第9步,以查看新数据。

出于本文的目的,我将使用一个销售应用程序作为示例。源应用程序是记录关于每笔销售的信息的事务处理系统。该系统的表的计划所有者是SALES_OP。

我设置一个基于销售运营数据的数据仓库。用户SALES_DW是数据仓库的所有者。我的CDC系统的目的是高效地将变化数据从事务处理系统(SALES_OP拥有的源表)传输到数据仓库系统(SALES_DW拥有的目标表)。 变化数据包括:

 

  • 自上次提取后在源表中插入(INSERT)的数据;

     

     

  • 自上次提取后在源表中更新(UPDATE)的数据;

     

     

  • 自上次提取后从源表中删除的(DELETE)的数据。

     

在下面几节中,我将向你演示如何在源系统中捕捉变化数据并将其提供给目标系统。

1.识别源表

数据库用户SALES_OP拥有两个表:PRICE_LIST和SALES_TRAN。这两个表分别保存已售商品的价格清单和每笔销售交易的细节。

 

SQL> DESC PRICE_LIST

 Name          Null?     Type
 ----------    -------   -------
 PRODUCT_ID    NOT NULL  VARCHAR2(20)
 UOM           NOT NULL  VARCHAR2(20)
 PRICE_PER_UOM NOT NULL  NUMBER(10,2)

SQL> DESC SALES_TRAN

 Name           Null?    Type
 ----------     -------  -------
 PRODUCT_ID     NOT NULL VARCHAR2(20)
 SALE_DATE_TIME NOT NULL TIMESTAMP(6)
 QUANTITY       NOT NULL NUMBER(10,2)

 

每天早上,这两个表中发生变化的数据必须被提取出来并传送到数据仓库系统。

2.设置发布者

发布者是创建和维护变化表的数据库用户。正如前面提到的,发布者的职责是识别并提取变化数据,并将其提供给订阅者。要做到这一点,必须给发布者分配以下两个数据库角色:

 

  • SELECT_CATALOG_ROLE
  • EXECUTE_CATALOG_ROLE

 

为了简单起见,让用户SALES_OP 充当发布者的角色。因为SALES_OP拥有源表,所以将其指定为发布者会比较简单。不过,你也可以指定任何其他数据库用户为发布者。在由多个数据库用户拥有的表构成源表的情况下,最好指定另一个用户作为发布者。在这种情况下,该用户需要在源表上有SELECT权限。

3.创建变化表

每个源表都需要一个变化表。发布者使用DBMS_LOGMNR_CDC_PUBLISH .CREATE_CHANGE_TABLE过程来创建变化表,如清单 1所示。在这个例子中,与PRICE_LIST和 SALES_TRAN 相对应的变化表分别被命名为CDC_PRICE_LIST和CDC_SALES_TRAN。

CREATE_CHANGE_TABLE 过程将变化集的名字作为一个变量来传递。一个变化集是一个变化表的集合。 在清单 1中,我使用了系统生成的变化集:SYNC_SET。

4.设置订阅者

在我的例子中,目标系统SALES_DW是订阅者。为了能够订阅变化数据,订阅者必须在源表和变化表上有SELECT权限,如下所示:

 

connect sales_op/sales_op
grant select on PRICE_LIST to sales_dw;
g



没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台