ORACLE实用SQL语句(CDC篇)

本文介绍了Oracle的CDC(Change Data Capture)技术,用于增量数据采集。内容包括CDC的工作原理、开启日志归档的步骤、LogMiner的安装与使用,以及实际工作中通过CDC配合ETL工具进行数据同步的方法。
摘要由CSDN通过智能技术生成

ORACLE实用SQL语句(二)

CDC篇

对于增量数据采集,Oracle推出了两种主要方案,一种是我们熟悉的物化视图(materialized view),另一种就是CDC组件(Change Data Capture 变更数据捕获)。利用CDC,在对源表进行INSERT、UPDATE或DELETE等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。
CDC从Oracle9i开始引入,支持之后的版本。CDC体系结构基于发布者/订阅者模型。发布者捕捉变化数据并提供给订阅者。订阅者使用从发布者那里获得的变化数据。通常,CDC系统拥有一个发布者和多个订阅者。发布者首先需要识别捕获变化数据所需的源表。然后,它捕捉变化的数据并将其保存在特别创建的变化表中。它还使订阅者能够控制对变化数据的访问。订阅者需要清楚自己感兴趣的是哪些变化数据。一个订阅者可能不会对发布者发布的所有数据都感兴趣。订阅者需要创建一个订阅者视图来访问经发布者授权可以访问的变化数据。
整个运行过程场景如下:
在这里插入图片描述

首先,需要创建一个发布者用户和一个订阅者用户,将源表的所有权限赋给发布者,然后,需要登录到发布者账号创建源表的变化集和变化表,将变化表的查询权限赋给订阅者,然后登录订阅者用户账号新建订阅视图等操作,通过扩展订阅视图来查询变化表的数据,最后通过ETL将变化数据同步到目标表中去。

操作步骤

开启日志归档

在命令行工具中执行以下命令以sys用户连接到数据库。在实际使用过程中,可以有多种方式连接数据库,此处以命令行方式为例进行说明。

1、使用dba权限的用户登录数据库

sqlplus /nolog
CONNECT sys/密码 AS SYSDBA;

2、检查数据库是否开启归档日志
若回显打印“Database log mode: No Archive Mode”,说明日志归档未开启,继续执行下一步。
若回显打印“Database log mode: Archive Mode”,说明日志归档已开启,直接跳过开启步骤。

archive log list;
如果归档日志已开启,跳过下面开启归档日志步骤

3、执行以下命令配置归档日志参数
100G为日志文件存储空间的大小,请根据实际情况设置。
/opt/oracle/oradata/recovery_area为日志存储路径,请根据实际规划设置,但须确保路径提前创建

alter system set db_recovery_file_dest_size = 100G;
alter system set db_recovery_file_dest = '/opt/oracle/oradata/recovery_area' scope=spfile;

4、执行以下命令开启日志归档

shutdown immediate;
startup mount;
alter database archivelog;
alter database open;

检查是否开启归档日志
archive log list;

LogMiner的安装;

Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 在线/归档日志文件中的具体内容,特别是该工具可以分析出所有对于数据库操作的DML和DDL语句。该工具特别适用于调试、审计或者回退某个特定的事务。
LogMiner可以用于日志的分析,跟踪数据库变化,回退数据库变化,对部分误操作数据进行恢复,误操作人员账号定位查看,结合工具完成基于日志事物级别增量数据传输。

1、执行以下命令,检查LogMiner工具是否已安装
若无打印信息返回,说明LogMiner工具未安装,继续执行下一步。
若有打印信息返回,说明LogMiner工具已安装,直接跳过开启步骤。

desc DBMS_LOGMNR
desc DBMS_LOGMNR_D

2、执行以下命令,安装LogMiner工具

@$ORACLE_HOME/rdbms/admin/dbmslm.sql
@$ORACLE_HOME/rdbms/admin/dbmslmd.sql

3、执行以下命令修改日志记录参数(开启扩充日志)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值