想请教一下,CDC是什么?有什么作用?如何进行配置?谢谢。

解决方案 »

  1.   

    Oracle CDC 介绍(本节主要内容摘自 OWB 用户手册)发布和订阅模型
    大多数 CDC 系统都需有人来完成数据的捕获和发布,这个人就是发布者。同时也有多个应用程序或人来访问发布的数据,这些应用程序或个人就是订阅者。 CDC 提供了 PL/SQL 包来完成发布和订阅任务。发布者:
    发布者通常是数据库的DBA, 他创建和维护包括了 CDC 系统的模式对象,发布者要和两个数据库进行交互
    源数据库(source database):
    即生产系统数据库,里面包含了需要发布的数据,相关的表称为源表。
    中间数据库(staging database)
    中间数据库是实际完成数据捕获的数据。依赖于发布者使用的捕获方式,中间数据库可以是源数据库也可以不是源数据库。中间数据库中保存下面的 CDC 对象。
    变更表(change table):
    变更表是一个关系表,包含了源表中变化的数据。对于发布者而言,变更表就是数据发布。
    变更集(change set)
    变更集是一组变更的数据,它们用来保证事务的一致性,包含一个或多个变更表。
    变更源(change source)
    变更源是对源数据库的一种逻辑表示,它包括一个或多个变更集。
    发布者需要完成的任务包括:
    决定哪些源数据库和表是订阅者关心的,以及要使用的 CDC 的模式(同步或异步)
    使用Oracle 提供的包 DBMS_CDC_PUBLISH 从源表中建立 CDC 系统
    通过 GRANT 和 REVOKE 这样的SQL 语句来管理订阅者访问变更表的权限(不过访问者不会直接访问变更表,而是访问视图)。
    订阅者:
    订阅者是已经发布的并更数据的用户,订阅者需要完成下面的任务:
    1. 使用Oracle 提供的包 DBMS_CDC_SUBSCRIBE 来完成
    创建订阅:
    通知CDC准备接收变更的数据:
    通知CDC 完成一组变更数据:
    2. 使用 SELECT 语句从订阅者视图中抽取变化的数据。
    变更源和数据捕获模型
    同步模式:
    同步模式使用源数据库触发器来捕获变更的数据。这种方式是实时的没有延迟。当 DML 操作提交后,变更表中就产生了变更数据。
    同步模式会给源数据库增加负载,但和数据表比较的方式相比,同步模式可以减少系统负载。
    同步变更源 SYNC_SOURCE 是唯一的、预定义的,它代表了源数据库。不能更改和删除。
    在同步模式下,变更表必须存在于源数据库本地。异步模式:
    异步模式使用数据库的重做日志(redo log)文件,在源数据库发生变更以后,才进行数据捕获。异步模式依赖于源数据库的补充日志(supplemental logging)的级别。补充日志会给源数据库增添了负载,所以要小心使用异步CDC 模式。
    有两种方式来捕获异步变更数据,分别是HotLog和AutoLog:HotLog:
    HotLog是从源数据库的重做日志文件中获得变更的数据。这种方式会有一段时间延迟。
    HotLog变更源 HOTLOG_SOURCE 也是唯一的、预定义的,它代表了源数据库的重做日志文件。不能更改和删除。
    在HotLog模式下,变更表必须存在于源数据库本地。AutoLog:
    AutoLog是从日志转移服务(Log transport services)管理的一组重做日志文件中获得变更数据。日志转移服务将重做日志文件自动地从源数据库转移到中间数据库。通过使用数据库初始化参数,发布者可以配置日志转移服务使其能够自动的从源数据库将重做日志文件转移到中间数据库。在中间数据库中,当来了新的重做日志文件,就可以获取到新的变更数据。因此延迟程度取决于重做日志文件的转移频率。
    没有预定义的AutoLog 变更源。发布者提供源数据库信息来创建一个AutoLog 数据源。
    在HotLog模式下,变更表可以保存在源数据库本地或远程,一般都是保存在远程。
    变更集:
    一个变更集是一组变更的数据,它作为一个整体来管理,可以保证事务的一致性。一个变更集只属于一个变更源。一个变更源可以包括多个变更集。从概念上将,变更集和变更源的模式应该相同,也就是说,AutoLog模式的变更集是属于AutoLog变更源的。
    当一个发布者将两个或更多的变更表放在同一个变更集中,订阅者可以连接变更集里表而且要保证事务的一致性。三种模式的变更集:
    同步:
    在预定义好的变更源 SYNC_SOURCE 中,发布者可以定义新的变更集,也可以使用预定义的变更集SYNC_SET。预定义的变更集SYNC_SET不能更新和删除。
    异步HotLog:
    发布者要在预定义的数据源 HOTLOG_SOURCE 中定义新的数据集。
    异步AutoLog
    发布者要在用户定义的数据源中定义新的数据集。总结:
    模式 变更源 代表的源数据库 相关的变更集
    同步 预定义 SYNC_SOURCE 本地 预定义SYNC_SET 和发布者定义
    异步HotLog 预定义 HOTLOG_SOURCE 本地 发布者定义
    异步AutoLog Publisher-defined 远程或本地 发布者定义