学习 StreamSets(二):Oracle CDC Client

REDO LOG

Redo Log 用于 Oracle 数据库实例失败恢复,记录了数据库修改历史。

通过执行 SQL 语句:

SELECT log_mode FROM v$database;  

查看是否开启 Redo Log,NOARCHIVELOG 意为未开启,ARCHIVELOG 意为已开启。

如果 Redo Log 未开启,使用 SYSDBA 执行以下步骤:

1.关闭数据库:

SHUTDOWN IMMEDIATE;  

2.启动并挂载数据库:

STARTUP MOUNT;  

3.启动归档并打开数据库:

ALTER DATABASE ARCHIVELOG;  
ALTER DATABASE OPEN;  

增量日志

Oracle 增量日志(Supplemental Logging)

按类型三类:

  • 最小增量日志(Minimal Supplemental Logging),为了使用 LogMiner,推荐至少开启最小增量日志
  • 标识键日志(Identification Key Logging)
  • 全增量日志(Full Supplemental Logging)

👇表格描述了操作对应的记录数据:

操作 Identification Key Logging Full Supplemental Logging
INSERT 所有包含数据的字段,忽略空值字段 所有字段
UPDATE 主键字段和值更新字段 所有字段
SELECT_FOR_UPDATE 主键字段和值更新字段 所有字段
DELETE 主键字段 所有字段

按级别分两类:

  • 数据库级别(Database-Level)增量日志
  • 表级别(Table-Level)增量日志

启用最小增量日志:

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;  

启用标识键日志:

-- 数据库级别
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;  
-- 表级别
ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;  

启用全增量日志:

-- 数据库级别
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;  
-- 表级别
ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;  

提交修改:

ALTER SYSTEM SWITCH LOGFILE;  

LOGMINER

LogMiner 是 Oracle 数据库自带的用于通过 SQL 接口分析归档 Redo Log 文件的工具。

Header 属性提供了许多 CDC 数据的元数据信息,可以在 Processor 数据处理时使用,

  • oracle.cdc.operation 操作,包括 INSERT、UPDATE、SELECT_FOR_UPDATE 和 DELETE
  • oracle.cdc.timestamp 时间戳
  • oracle.cdc.table 表名

以表达式操作为例,可以通过表达式获得 Header 属性值:

record.attribute('oracle.cdc.operation') // 操作  

参考