Oracle CDC(Change Data Capture)概述

Oracle CDC是9i数据库引入的一种增量数据采集特性,它能捕获源表的INSERT、UPDATE或DELETE操作,保存在变化表中,提供发布订阅模型。CDC包括同步和异步模式,异步模式基于Oracle流复制技术。实施步骤涉及创建和激活变更集、订阅源表等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、增量数据采集概述

数据采集通常是指ETL过程中Extract-数据抽取部分。除了ETL外在不同应用系统之间通常也需要传递数据,在某些环境条件限制下不能将数据从一个系统直接移到另一个系统,只能借助文本来作为中间媒介传递数据,且文本的生成有时间窗口的限制,所以对数据采集即数据抽取的性能有一定的要求。对增加数据的采集的方法常用的有以下几种:

1. 时间戳(Timestamps on rows)

2. 版本号(Version Numbers on rows)

3. 状态指示(Status indicators on rows)

4. 时间戳、版本号、状态指示混合使用(Time/Version/Status on rows)

5. 触发器 (Triggers on tables)

6. 表差异(Table differencing)

7. 数据库的日志扫描(Log scanners on databases)

对于增量数据采集情况在Oracle中推出了两种主要方案,一种是我们熟悉的物化视图(materialized view),另一种就是本文将要介绍的CDC组件(Change Data Capture 改变数据捕获)。

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

二、CDC的发布订阅模型

CDC体系结构基于发布者/订阅者模型。发布者捕捉变化数据并提供给订阅者。订阅者使用从发布者那里获得的变化数据。通常,CDC系统拥有一个发布者和多个订阅者。发布者首先需要识别捕获变化数据所需的源表。然后,它捕捉变化的数据并将其保存在特别创建的变化表中。它还使订阅者能够控制对变化数据的访问。订阅者需要清楚自己感兴趣的是哪些变化数据。一个订阅者可能不会对发布者发布的所有数据都感兴趣。 订阅者需要创建一个订阅者视图来访问经发布者授权可以访问的变化数据。

CDC有几个重要的基本概念需要先明确一下:

l 源表(Source Table),业务数据库的需要捕获数据的源表

l 变化表(Change Table) ,保存从源表捕获的变化数据(包括各种DML产生的数据)

l 变化集(Change Set),是保证事务一致性的数据集合。一个变化集对应多个变化表

l 订阅视图(Subscription View),提供给读取变化表数据的视图

l 订阅窗口(Subscription Window) ,定义了查看变化数据的时间范围.就象一个观察变化数据的滑动窗口。变化数据处理完成后,可以对清除订阅窗口。

三、CDC的同步与异步模式

l 同步模式,实时的捕获变化数据并存储到变化表中,发布者与订阅都位于同一数据库中,同步模式实际使用trigger的形式来捕捉变化数据。下图说明了同步模式的基本架构。

clip_image002

l 异步模式,以Oracle流复制技术为基础,从redo log中读取日志记录来捕捉变化数据。异步模式有三种:

1. Asynchronous HotLog

clip_image004 2. Asynchronous Distributed HotLog

Oracle 19c版本中启用 CDC (Change Data Capture) 功能,虽然官方并未内置一个预打包的 CDC 实现,但你可以通过自定义脚本和第三方工具如 Oracle GoldenGate 或第三方开源工具来实现。以下是基本步骤: 1. **安装GoldenGate**(如果尚未安装):Oracle GoldenGate是一个流行的数据库变更数据捕获解决方案,可以与Oracle数据库集成。你需要从Oracle官网下载并安装GoldenGate。 2. **创建表空间**: 创建一个专门用于存储日志文件的表空间。例如: ``` CREATE TABLESPACE cdc_tablespace DATAFILE '/path/to/cdc_datafile.dbf' SIZE 50M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; ``` 3. **配置GoldenGate**: 配置GoldenGate实例以监听目标数据库。这包括设置连接信息、服务名等,并指定要捕获哪些数据库对象。 4. **启动GoldenGate**: 启动GoldenGate的服务,确保其能够与Oracle数据库通信。 5. **启用CDC**: 使用GoldenGate提供的工具(如ggadmin或SQL命令)创建CDC连接,然后为需要捕获变化的表创建cdc日志。例如: ``` GGSCI> connect /as sysdba GGSCI> create log my_cdc_log for table sales order (tablespace cdc_tablespace); ``` 6. **触发CDC事件**: 如果需要,可以配置触发器或使用GoldenGate的代理程序来自动启动日志收集。 7. **监控和管理**: 定期检查日志状态,处理错误并调整日志配置以适应应用需求。 请注意,这是一个简化的概述,实际部署可能涉及更复杂的网络配置和安全性考虑。对于大型生产环境,强烈建议查阅Oracle GoldenGate文档以及相关的技术博客和教程。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值