同步Oracle的数据至Kafka时,您需要参考本文,在数据源中完成网络、白名单及权限等相关配置,为后续执行数据同步方案做好网络环境及账号权限的准备。
前提条件
- 准备数据源:已购买来源数据源Oracle、去向数据源Kafka。
- 资源规划与准备:已购买独享数据集成资源组,并完成资源配置。详情可参见资源规划与配置。
- 网络环境评估与规划:进行数据集成前,您需根据业务情况,打通数据源、独享数据集成资源组之间的网络,网络联通后参考本文进行交换机、白名单等网络环境下的访问配置。
- 如果数据源和独享数据集成资源组均处于同地域的同一VPC网络中,数据源与资源组间的网络天然联通。
- 如果数据源和独享数据集成资源组均处于不同的网络环境中,您需要通过VPN网关等方式,将数据源与资源组间的网络打通。
背景信息
- 网络白名单
以下以使用同一VPC网络环境为例,您需要将数据集成资源组所在的VPC网段添加至白名单中,保障数据集成资源组可访问数据源。
- 账号权限
您需要规划一个可访问数据源的账号,用于后续数据集成过程中访问数据源并进行数据提取、写入的同步操作。
- 查看当前使用的数据库版本是否为DataWorks数据集成实时同步任务所支持的版本。
DataWorks的数据集成实时同步Oracle数据是基于Oracle Logminer日志分析工具实现的。实时同步Oracle数据目前仅支持配置Oracle数据源为Oracle的
10g
、11g
、12c non cdb
、18c non cdb
或19c non cdb
版本数据库,不支持配置为Oracle的12c cdb
、18c cdb
及19c cdb
版本数据库。数据库容器CDB(Container Database)是Oracle 12c及之后版本的数据库新特性,用于承载多个可插拔数据库PDB(Pluggable Database)。- 您可以通过如下任意语句查看Oracle数据库的版本。
- 语句一:
select * from v$version;
- 语句二:
select version from v$instance;
- 语句一:
- 如果查看到的Oracle数据库版本为
12c
、18c
或19c
,则您需要使用如下语句进一步确认该数据库是否为cdb
类型的数据库。DataWorks数据集成实时同步任务暂不支持使用cdb
类型的Oracle数据库。select name,cdb,open_mode,con_id from v$database;
说明 如果当前使用的数据库版本不是DataWorks数据集成实时同步任务支持的Oracle数据库版本,请尽快更换为数据集成实时同步任务支持的Oracle数据库版本,否则会导致数据集成任务无法执行。 - 您可以通过如下任意语句查看Oracle数据库的版本。
- 日志权限
来源数据源为Oracle时,您需要开启数据库级别的归档日志、Redo日志及补充日志。
- 归档日志:Oracle通过归档日志保存所有的重做历史记录,用于在数据库出现故障时完全恢复数据库。
- Redo日志:Oracle通过Redo日志来保证数据库的事务可以被重新执行,从而使得在故障(例如断电)之后,数据可以被恢复,因此您需要为数据库开启并切换Redo日志。
- 补充日志:补充日志是对Redo日志中信息的补充。在Oracle中,Redo日志用于记录被修改的字段的值,而补充日志是对Redo日志中变更记录的补充信息,可以确保Oracle的Redo日志包含描述所有数据更改的完整信息,以便在进行数据恢复、数据同步等操作时,可以追溯到完整的语句及相关变更。Oracle数据库的某些功能要求启用补充日志才能正常或更好的工作,因此您需要为数据库开启补充日志。
例如,如果未启用补充日志,执行UPDATE命令后,Redo日志中只会记录通过UPDATE命令更改后的字段值,启用补充日志后,则Redo日志中会记录被修改字段,修改前的值、修改后的值以及修改目标字段的条件值。当数据库发生故障(例如断电)时,您可以基于此修改信息恢复数据。
使用数据集成时推荐开启主键列或唯一索引列补充日志。- 开启主键列的补充日志后,如果数据库有任何更新,则组成主键的所有列都会被记录在日志中。
- 开启唯一索引列的补充日志后,如果组成唯一键或位图索引的任何列被修改,则组成该唯一键或位图索引的列都会被记录在日志中。
DataWorks数据集成实时同步Oracle数据前,您需要确保已为数据库开启归档日志及补充日志。查看当前使用的数据库是否开启数据库级别的归档日志及补充日志的SQL语句如下。select log_mode, supplemental_log_data_pk, supplemental_log_data_ui from v$database;
- 当
log_mode
的返回结果为ARCHIVELOG,则表示数据库的归档日志已开启,当返回结果不为ARCHIVELOG,则表示数据库的归档日志未开启,您需要参考本文操作步骤的《开启归档日志》,开启归档日志。 - 及
supplemental_log_data_ui
的返回结果为YES,则表示数据库的补充日志已开启,当返回结果为FALSE,则表示数据库的补充日志未开启,您需要参考本文操作步骤的《开启补充日志》,开启补充日志。
- 检查数据库的字符编码格式
您需要确保Oracle中不能包含数据集成不支持的字符编码格式,防止同步数据失败。当前数据集成同步数据时,仅支持UTF8、AL32UTF8、AL16UTF16及ZHS16GBK编码格式。
- 检查是否包含不支持的数据类型
您需要确保Oracle中不能包含数据集成不支持的数据类型,防止同步数据失败。当前数据集成进行实时同步时,不支持LONG、BFILE、LONG RAW及NCLOB数据类型 。
使用限制
- Oracle仅支持在主库中为主库或备库开启补充日志。
- 当前数据集成同步数据时,仅支持UTF8、AL32UTF8、AL16UTF16及ZHS16GBK编码格式。
- 当前数据集成进行实时同步时,不支持LONG、BFILE、LONG RAW及NCLOB数据类型 。
- 实时同步Oracle数据目前仅支持配置Oracle数据源为Oracle的
10g
、11g
、12c non cdb
、18c non cdb
或19c non cdb
版本数据库,不支持配置为Oracle的12c cdb
、18c cdb
及19c cdb
版本数据库。数据库容器CDB(Container Database)是Oracle 12c及之后版本的数据库新特性,用于承载多个可插拔数据库PDB(Pluggable Database)。
注意事项
- DataWorks数据集成实时同步任务,目前对于Oracle主库支持订阅联机重做日志(Online Redo),对于Oracle备库仅支持订阅归档日志。因此,对于时效性要求比较高的实时同步任务,建议订阅主库的实时增量变更。订阅Oracle备库时,Oracle日志的产生到可以被获取的最短延迟时间取决于Oracle的自动切换归档日志的时间,不能保证时效性。
- Oracle数据库的归档日志建议保留3天。当写入大批量数据至Oracle数据库时,实时同步数据的速度可能会慢于日志生成的速度,方便在同步任务出现问题时,为追溯数据预留足够的时间。您可以通过分析归档日志排查问题并恢复数据。
- DataWorks数据集成实时同步任务,不支持对Oracle数据库中无主键的表进行
truncate
操作。对于无主键表进行日志分析(即logminer
操作)是根据Rowid
进行回查,当遇到truncate
操作时会修改原表的Rowid
,该操作会导致同步任务运行报错。 - 在规格为
24 vCPU 192 GiB
的DataWorks上运行实时同步任务时,如果非update
等操作日志较多,并且速度达到约每秒记录3~5W条数据的极限速度,则Oracle服务器的单核CPU使用率最高可以达到25%~35%;如果处理update
等操作日志,则处理实时同步消息的DataWorks机器可能会存在性能瓶颈,Oracle服务器的单核CPU使用率仅可以达到1%~5%。
操作步骤
后续步骤
配置完成数据源后,来源数据源、资源实例、去向数据源彼此间已可网络联通,且不存在访问限制。您可将来源数据源和去向数据源添加至DataWorks的数据源列表中,便于后续创建数据同步方案时关联来源和去向数据源。
添加数据源操作可参见添加数据源。