Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4478115
  • 博文数量: 109
  • 博客积分: 10011
  • 博客等级: 上将
  • 技术积分: 2457
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-18 19:04
文章分类

全部博文(109)

文章存档

2011年(1)

2010年(10)

2009年(36)

2008年(62)

我的朋友

分类: Oracle

2009-08-26 14:18:30

一:以前的做法
  首先,我介绍一下,在使用Change Data Capture之前,我们怎么得到表有哪些数据发生了改变。
 方法一:table differencing
 SELECT * FROM old_version MINUS SELECT * FROM new_version;
 缺陷:1:必须传输所有的表的数据,2:MINUS性能损失很大。3:如果数据有多次改变,不能捕获中间过程。
 方法二:Change-value selection
 通过上次更新时间确定有哪些数据发生了改变。
 缺陷:1:查询消耗性能较大,必须对时间字段做也许不必要的索引。2:无法捕获中间值。3:有些系统没有类似  的字段。
二:Capturing Change Data with Change Data Capture
      有两种模式:1:同步。运用trigger .2:异步。可以运用分析redolog的方式。分为HotLog, Distributed  HotLog, and AutoLog。可以运用ORACLE stream.
 Publish and Subscribe Model:
 Publisher是发布改变数据的用户。subscribers是访问改变数据的用户。
 1)Publisher可以从一下数据源得到改变的数据:
 a)The source tables   b)Redo log files(在线和归档redolog从resource database到staging database)   c)Change source(运用oracle stream)
   Publisher有以下的任务:
 a)决定有哪些数据源和表是用户所需要的。b)运用DBMS_CDC_PUBLISH 包捕获数据。c)控制访问权限。
 2)Subscribers可以从捕获的改变的数据被应用的数据库中得到数据,他们包括:
 a)Change table  b)Change set  c)Change source
   Subscribers有以下任务:
 a)运用DBMS_CDC_SUBSCRIBE包得到改变了的数据。 b)当它得到了数据时,运用DBMS_CDC_SUBSCRIBE包通知Publisher准备接受。c)运用DBMS_CDC_SUBSCRIBE包通知Publisher它已经接收完成了数据。d)用select语句从subscriber views得到数据
三:Change Sources and Modes of Change Data Capture
 1:Synchronous Change Data Capture
 SYNC_SOURCE 是唯一的同步改变资源,不能被修改和删除。
 2:Asynchronous Change Data Capture
  Asynchronous HotLog Mode
  改变的数据是从ONLINE REDOLOG中捕获,HOTLOG_SOURCE 是唯一的异步改变资源,不能被修改和删除。
2:Asynchronous Distributed HotLog Mode
  这种模式不需要定义改变数据源,Change Data Capture把不同的改变数据传输到各个不同的STAGING DATABASE,然后通过各个STAGING DATABASE中定义的publisher来定义改变数据,每一个定义了change sets。在source database和staging database 分别有两个publisher,他们通过database link通信。
3:Asynchronous AutoLog Mode
    这样模式的工作原理和DATA GUARD的工作原理类似,也可以分为传输ONLINE REDO和ARCHIVE REDO两种,
 
阅读(3608) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~