通过Tapdata Cloud的可视化界面,您可以将Oracle数据实时同步到表格存储(Tablestore)中。
前提条件
- 已注册Tapdata Cloud账号。
- 已创建表格存储实例和表。具体操作,请参见通过控制台使用。
- 创建RAM用户并完成授权。
- 已创建RAM用户,并授予RAM用户管理表格存储服务的权限(AliyunOTSFullAccess)。具体操作,请参见配置RAM用户权限。重要 创建RAM用户时,请选中OpenAPI调用访问。
- 已为RAM用户创建AccessKey。具体操作,请参见创建AccessKey。
- 已创建RAM用户,并授予RAM用户管理表格存储服务的权限(AliyunOTSFullAccess)。具体操作,请参见配置RAM用户权限。
背景信息
Tapdata Cloud是由Tapdata提供的集数据复制、数据开发为一体的实时数据服务,能够在跨云、跨地域、多类型数据源的场景下,提供毫秒级的实时数据同步服务和数据融合服务。更多信息,请参见什么是Tapdata Cloud。
注意事项
- 当前只支持Oracle 9i、10g、11g、12c、19c版本的数据同步。
- 如果设置了Oracle数据库的connect_time参数,则可能导致实时同步异常。
您可以通过执行如下命令查看connect_time参数的设置。其中username请设置为数据库账号。
、select resource_name, limit from dba_profiles where profile=( select profile from dba_users where username = 'username');
- 请为归档日志预留足够的存储空间,避免由于存储占满影响Oracle数据库的运行。
使用流程
使用Tapdata Cloud将Oracle数据同步到表格存储的使用流程如下:
- 配置Oracle数据库和授权账号。具体操作,请参见步骤一:配置Oracle数据库和授权账号。
- 在Oracle数据库所属机器或相同网络的机器上部署Tapdata Agent。具体操作,请参见步骤二:部署Tapdata Agent。Tapdata Agent(简称Agent)是数据同步、数据异构、数据开发场景中的关键程序,通过流式技术从源端获取数据、处理转换数据并发送到目标端。重要 数据不会流经Tapdata Cloud,Tapdata Agent也不会上传和留存您的数据。更多信息,请参见数据安全和网络配置。
- 使用Tapdata Cloud连接源数据库和目标数据库。具体操作,请参见步骤三:连接源数据库和目标数据库。
- 创建数据复制任务用于进行源数据库到目标数据库的数据复制。具体操作,请参见步骤四:配置数据复制任务。
步骤一:配置Oracle数据库和授权账号
数据同步前,为Oracle数据库开启数据库归档模式、开启补充日志、开启标识键日志、开启全补充日志以及创建用于数据同步任务的账号。
- 以具有DBA权限的用户身份登录Oracle数据库。
- 开启数据库归档模式(ARCHIVELOG)。您可以执行如下命令检查是否已开启数据库归档模式。
select log_mode from v$database;
当返回结果为ARCHIVELOG时,表示已开启,请跳过此步骤。否则请执行如下步骤开启。
- 开启补充日志(Supplemental Logging),请根据数据库版本执行相应命令。
数据库版本 命令 Oracle 9i ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
Oracle 10g ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; ALTER system switch logfile; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
Oracle 11g Oracle 12c 执行如下命令,确认是否开启了补充日志。 SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;
当返回结果的前两列为Yes或Implicit时,表示只开启了标识键日志(Identification Key Logging),您还需要开启全补充日志(Full Supplemental Logging)。
- 开启标识键日志。请根据实际选择为单个表开启或者为所有表开启
- 为单个表开启标识键日志。
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; ALTER TABLE schema name.table name ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
- 为所有表开启标识键日志。
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
- 为单个表开启标识键日志。
- 开启全补充日志。请根据实际选择为单个表开启或者为所有表开启。
- 为单个表开启全补充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
- 为所有表开启全补充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
- 为单个表开启全补充日志
- 执行如下命令提交变更。
ALTER SYSTEM SWITCH LOGFILE;
- 创建用于数据同步任务的账号并授权,请根据数据库版本执行相应命令。
数据库版本 命令 Oracle 10g CREATE USER username IDENTIFIED BY password; GRANT create session, alter session, execute_catalog_role, select any dictionary, select any transaction, select any table, create any table, create any index, unlimited tablespace to user name;
Oracle 11g Oracle 12c(标准模式) CREATE USER username IDENTIFIED BY password; GRANT create session, alter session, select any dictionary, select any transaction, logmining, execute_catalog_role, create any table, create any index, unlimited tablespace TO username;
请根据您对表的权限需求,重复执行GRANT命令来赋予SELECT权限。
Oracle 12c(多租户模式) 重要 在Oracle 12c的多租户模式下创建用户时,必须在cdb中创建并且命名格式约定为c##name
。ALTER SESSION SET CONTAINER=cdb$root; CREATE USER username IDENTIFIED BY password CONTAINER=all; GRANT create session, alter session, set container, select any dictionary, select any transaction, logmining, execute_catalog_role, create any table, create any index, unlimited tablespace TO username CONTAINER=all; ALTER SESSION SET CONTAINER=pdb;
请根据您对表的权限需求,重复执行GRANT命令来赋予SELECT权限。
当Oracle数据库作为源库时,请使用该用户来通过JDBC的身份验证。重要 使用该用户进行JDBC的身份验证时,必须使用整个用户名(包含c##
)作为JDBC连接的用户名。
步骤二:部署Tapdata Agent
由于数据流转通常对时效性有较高的要求,因此,推荐将Tapdata Agent部署在Oracle数据库所属机器或相同网络的机器中,可极大降低网络延迟带来的影响。
- 登录Tapdata Cloud平台。
- 在左侧导航栏,单击Agent管理。
- 在Agent管理页面,单击创建Agent。
- 在Agent下载与安装对话框,选择Linux(64 bit),然后根据界面提示进行Agent安装。重要 安装前请确认您的部署环境中已安装JAVA 1.8版本并正确配置环境变量。等待命令执行完成,即可完成Tapdata Agent的安装和启动。
Tapdata Agent启动成功的示例如下图所示。
步骤三:连接源数据库和目标数据库
通过Tapdata Cloud连接源数据库和目标数据库。
- 登录Tapdata Cloud平台。
- 在左侧导航栏,单击连接管理。
- 连接作为源库的Oracle数据库。
- 连接作为目标库的表格存储。
步骤四:配置数据复制任务
通过配置数据复制任务,可以现同构或者异构数据源间的实时同步,适用于数据迁移、数据同步、数据灾备、读性能扩展等多种业务场景。
- 登录Tapdata Cloud平台。
- 在左侧导航栏,单击数据复制。
- 在数据复制页面,单击创建。
- 在页面左侧,将Oracle和表格存储数据库拖拽到右侧画布中,然后将其连接起来。
- 单击Oracle数据库,根据下表说明在右侧面板配置参数。
参数 描述 节点名称 默认为连接名称,请根据实际设置。 DDL事件采集 暂不支持对表格存储执行DDL语句同步,无需配置此参数。 选择表 选择要复制的表。取值范围如下: - 按表名选择:按照表名选择待复制的表。
在待复制表区域选中表,然后单击
图标完成设置。
您也可以单击批量选表,输入多个表名来批量选择要复制的表。多个表名之间用半角逗号(,)分隔。
- 按正则表达式匹配:使用正则表达式匹配满足表达式的表作为要复制的表。
使用此方式时,当源库中新增的表满足表达式时,该表也会被自动同步到目标库。
批量读取条数 全量同步时,每批次读取的记录条数,默认值为100。 一般保持默认值即可。 日志连续挖掘 是否开启日志连续挖掘。默认已开启。请根据使用的Oracle版本设置。 - 当Oracle版本低于19c时,建议开启此开关,延迟更低。
- 当Oracle版本高于等于19c时,必须关闭此开关。重要 当Oracle版本高于等于19c时,请务必关闭此开关。
日志积压数量 日志连续挖掘时最大日志积压数量。只有当开启日志连续挖掘开关时才能设置此参数。请根据源端更新频率设置。 - 当源端更新频率较低时,请设置较低的值,延迟更低。
- 当源端更新频率较高时,请设置较高的值,吞吐更高。
一般可以按照
源端数据变化QPS/10
计算,建议值为1~1000。挖掘线程数 日志挖掘时,以占用数据库CPU资源为代价来提高日志挖掘速度。只有当关闭日志连续挖掘开关时才能设置此参数。 建议当源端更新频率超过1万时设置,最大不建议超过8。
大事务事件界限 将事务事件定义为大事务的临界值,默认值为10000。当事务事件超过该数值时会进入大事务逻辑。 重要- 该值设置过大可能会影响内存。
- 按照大事务处理后会存在本地磁盘缓存。当复制任务出现异常时,请注意磁盘清理。
关联键更新 是否进行关键键更新。默认已开启,表示会进行关联键更新。 关闭关联键更新开关可以提升性能,但是关联键的更新会被忽略。
开启同步LOB类型(BLOB,CLOB,NCLOB) 是否开启同步LOB类型。默认已开启,表示会同步LOB类型。 关闭开启同步LOB类型(BLOB,CLOB,NCLOB)开关可以提升性能,但是LOB类型解析会不可靠。
未提交事务生命时长(分钟) 未提交事务的最长保留时间,默认值为60。单位为分钟。 长时间未提交的事务会导致每次启停任务将从该事务开始挖掘,会影响性能,因此超过该时长未提交的事务将被清理。
- 按表名选择:按照表名选择待复制的表。
- 单击Tablestore数据库,预览数据结构并设置高级选项。
参数 描述 节点名称 默认为连接名称,请根据实际设置。 推演结果 查看表的数据结构(例如字段名称、字段类型)以及根据需要设置字段类型。 说明- 如需调整字段类型,单击目标字段类型中的
图标,然后在弹出的对话框中完成设置。
- 由于Tablestore单个表的列数量不可超过32个,如果Oracle中待同步表的列数量超过 32,您可以在页面左侧拖拽一个字段编辑节点进来,将其作为Oracle和Tablestore的中间节点连接起来,然后在字段编辑节点中屏蔽与业务无关的列以满足需求,更多信息,请参见处理节点。
高级设置 重复处理策略 当目标表已存在时的处理策略,默认为保持目标端原有结构及数据。如果目标表没有数据且结构和源表不一致,可选择为清除目标表原有表结构及数据。 数据写入模式 数据写入表格存储的处理方式。取值范围如下: - 按事件类型处理:根据插入事件、更新事件和删除事件分别设置数据写入策略。
- 追加写入:只处理插入事件,丢弃更新事件和删除事件。
数据写入策略 按照事件类型处理数据写入时的策略。当数据写入模式选择为按事件类型处理时才能设置此参数。 处理插入事件的策略为目标存在时更新,处理更新事件和删除事件的策略为不存在时丢弃。
全量多线程写入 全量数据写入的并发线程数,默认值为8,可基于目标端写性能适当调整。 增量写入线程数 增量数据写入的并发线程数,默认未启用。打开增量写入线程数开关后可基于目标端写性能适当调整。 - 如需调整字段类型,单击目标字段类型中的
- 可选:单击上方的
图标,请根据下表说明配置任务属性。
参数 描述 任务名称 同步任务的名称,请根据实际设置。 同步类型 数据同步的类型。取值范围如下: - 全量+增量:全量数据同步完成后,再同步增量数据。
- 全量:将源端的存量数据复制到目标端。
- 增量:将源端实时产生的新数据或数据变更复制到目标端。
任务描述 任务的描述信息。 高级设置 计划开始时间 任务的计划开始时间。 如果需要指定任务开始时间,打开计划开始时间开关后,选择开始的日期和时间。
数据校验 打开数据校验开关后,任务会自动对同步结果的一致性进行全量校验和增量校验,并会在运行监控页面展示校验不一致的数据行数。 重要 当任务符合以下任意一种情况时,即使打开数据校验开关,任务也不会进行校验。- 添加了中间处理节点。
- 源连接不支持校验。
- 目标连接不支持校验。
增量同步并发写入 打开增量同步并发写入开关后,增量同步时,源端数据会并发写入目标端。 增量滞后判断时间设置 用于快速判断复制任务是否存在滞后。 打开增量滞后判断时间设置开关并设置判断时间。增量同步时,如果增量同步的滞后时间大于设置的判断时间,则复制任务存在滞后。
默认值为1,单位为秒。
处理器线程数 处理器的线程数。 增量数据处理模式 增量同步时,增量数据的处理模式。取值范围为批量、逐条。 agent设置 使用的Agent信息。取值范围如下: - 平台自动分配(默认):由平台分配节点进行连接访问。
- 用户手动指定:设置此参数为用户手动指定后,选择要使用的Agent。
- 确认无误后,单击启动。操作完成后,您可以查看任务的执行情况,例如QPS、延迟、任务时间统计等信息。