一:以前的做法
首先,我介绍一下,在使用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) |