本文档详细介绍了如何在流批一体Streamsets Data Collector (SDC)环境中配置Oracle CDC (Change Data Capture) 实时同步功能,特别关注了针对不同Oracle版本的配置差异。首先,确保数据库归档是至关重要的,因为Oracle CDC依赖于归档日志来捕获数据变化。通过SQL查询v$database视图可以检查当前的归档状态。
对于不归档的数据库,操作流程包括:
1. 关闭数据库并以SYSDBA身份登录:`sqlplus/assysdba`
2. 将数据库置于mount模式:`shutdown immediate`
3. 启用归档模式:`startup mount`然后`alter database archivelog`
4. 打开数据库读写权限:`alter database open readwrite`
5. 检查并设置日志模式为归档:`select log_mode from v$database`
接着,配置附加日志以捕获更详细的数据更改。检查`supplemental_log_data_min`、`supplemental_log_data_pk`和`supplemental_log_data_all`字段,确保开启了至少最小补充日志(记录基本的行级更改)和表主键补充日志(记录插入、更新和删除操作涉及到的主键)。对于多租户数据库(如12c、18c或19c),建议在特定容器级别启用,如:
- 对于特定容器:`ALTER SESSION SET CONTAINER = zoehip`
- 或者针对整个CDB:`ALTER SESSION SET CONTAINER = CDB$ROOT`
执行以下步骤:
1. 切换到目标容器:`ALTER SESSION SET CONTAINER = [container_name]`
2. 启用数据库最小补充日志:`ALTER DATABASE ADD SUPPLEMENTAL LOG DATA`
3. 开启表主键附加日志:`ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS`
最后,务必注意在执行ALTER TABLE语句时要谨慎,以确保只对所需表进行这些更改,避免意外影响其他表。
通过这些步骤,您将能够配置Streamsets Data Collector与Oracle数据库的实时同步,确保数据一致性与完整性。在实际操作中,请根据您的Oracle版本和环境需求进行适当的调整。