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、执行以下命令修改日志记录参数(开启扩充日志)