ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle Database Change Data Capture feature

Oracle Database Change Data Capture feature

原创 Linux操作系统 作者:赵宇 时间:2009-11-04 14:53:15 0 删除 编辑
Oracle Database Change Data Capture feature

变化数据捕获是一个通称,是用来描述捕捉增量变化应用到数据存储。随着数据量的不断增长和数据存储日益变化,数据捕获是数据仓库一个重要功能,特别是要求实时或近实时的数据仓库。
在Oracle数据库概念中,数据采集的变化数据库功能,能够在Oracle数据库上捕捉增量。传统上你会必须修改源代码的应用,以捕获增量变化。
Oracle的变化数据捕获使增量变化捕获而不对源程序做任何更改。
Oracle数据库10g第2版介绍异步分布式CDC,比原有9i数据库第2版有了更大的提高。这食谱介绍如何设置这样一个异步变化数据捕获环境。




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,扩展窗口以后才能看到数据变化.如果想每次都看到数据的变化,必须每次扩展窗口.


异步HotLog模式创建方式:

1.创建publisher用户,授予相应权限,设置数据库参数.
2.修改数据库force logging,add supplemental,archive log,同时把相应源表的列添加到supplemental 列.
3.在sys用户下创建change set,change table,同时激活change set以后,就可以通过change table看捕捉的数据

在alert_devdb.log看到下面:

LOGMINER: End mining logfiles during dictionary load for session 11
Thu Apr 09 05:49:15 2009
LOGMINER: Begin mining logfile for session 11 thread 1 sequence 172, /u01/app/oracle/archive/devdb/1_172_679002284.dbf
LOGMINER: End mining logfile for session 11 thread 1 sequence 172, /u01/app/oracle/archive/devdb/1_172_679002284.dbf
LOGMINER: Begin mining logfile for session 11 thread 1 sequence 173, +DATA/devdb/onlinelog/group_2.262.679002289
Thu Apr 09 05:49:32 2009
knllgobjinfo: MISSING Streams multi-version data dictionary!!!
knlldmm: gdbnm=DEVDB
knlldmm: bjn=74098
knlldmm: bjv=1
knlldmm: scn=1292448
knlldmm: pnum=1
Thu Apr 09 05:49:51 2009
LOGMINER: End mining logfile for session 11 thread 1 sequence 173, +DATA/devdb/onlinelog/group_2.262.679002289
LOGMINER: Begin mining logfile for session 11 thread 1 sequence 174, +DATA/devdb/onlinelog/group_3.263.679002291
Thu Apr 09 05:50:01 2009
LOGMINER: End mining logfile for session 11 thread 1 sequence 174, +DATA/devdb/onlinelog/group_3.263.679002291
LOGMINER: Begin mining logfile for session 11 thread 1 sequence 175, +DATA/devdb/onlinelog/group_1.261.679002285

注意:
As the errors are one-time only errors reported on table creation and they do not affect Streams replication they can be safely ignored.
In this case this message does not indicate incorrect operation of Streams.


异步分布Hotlog和Autolog模式:
因为涉及两个数据库,分别是source database和staging database

1.在source database创建一个publisher用户.在staging database 创建一个publisher用户.
2.配置staging database和source database的数据库参数,同时设置global_names=true or false
3.在source database 修改数据库force logging,add supplemental,同时加源表到supplemental 日志组.
4.在source database创建到staging database的dblink.在staging database创建到source database的dblink,如果dblink名字和
service name不一致,会出现错误,solution如下:
Metalink:
Solution
-- To implement the solution, please execute the following steps::
Drop and recreate the dblinks at SOURCE and STAGING databases.
Make sure the database links are created with names that match exactly the GLOBAL_NAME of the
database they connect to.
5.在staging database创建分布式的change source(和之前模式相比,这里change source是单独创建,不像之前,直接在创建change set直接输入HOTLOG_SOURCE),change set,change table.
注意在11g创建change table还会出错,因为多了一个DDL相关参数,加入以后,选择'Y'
6.在staging database中启用 change source,change set
7.在staging database中将change table权限授予用户或者subscriber


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/175005/viewspace-618103/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-25

  • 博文量
    73
  • 访问量
    893847