通过Tapdata Cloud的可视化界面,您可以将Oracle数据实时同步到表格存储(Tablestore)中。
前提条件
使用Tapdata Cloud同步Oracle数据到表格存储前,需要完成如下准备工作。
已注册Tapdata Cloud账号。
已创建RAM用户,并授予RAM用户管理表格存储服务的权限(AliyunOTSFullAccess)。具体操作,请参见使用RAM用户访问密钥访问表格存储。
背景信息
Tapdata Cloud是由Tapdata提供的集数据复制、数据开发为一体的实时数据服务,能够在跨云、跨地域、多类型数据源的场景下,提供毫秒级的实时数据同步服务和数据融合服务。更多信息,请参见什么是Tapdata。
注意事项
当前只支持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)是数据同步、数据异构、数据开发场景中的关键程序,通过流式技术从源端获取数据、处理转换数据并发送到目标端。
重要Agent通过流式技术从源端获取数据、处理转换数据并发送到目标端,数据不会流经 Tapdata Cloud,也不会上传和留存您的数据。
使用Tapdata Cloud连接源数据库和目标数据库。具体操作,请参见步骤三:连接源数据库和目标数据库。
创建数据复制任务用于进行源数据库到目标数据库的数据复制。具体操作,请参见步骤四:配置数据复制任务。
步骤一:配置Oracle数据库和授权账号
数据同步前,为Oracle数据库开启数据库归档模式、开启补充日志、开启标识键日志、开启全补充日志以及创建用于数据同步任务的账号。
以具有DBA权限的用户身份登录Oracle数据库。
开启数据库归档模式(ARCHIVELOG)。
您可以执行如下命令检查是否已开启数据库归档模式。
select log_mode from v$database;当返回结果为ARCHIVELOG时,表示已经开启,请跳过此步骤。否则请执行如下步骤开启。
执行如下命令关闭数据库。
重要请务必在业务低峰期再进行此操作,避免影响业务正常运行。
shutdown immediate;执行如下命令启动并挂载数据库。
startup mount;执行如下命令开启归档并打开数据。
alter database archivelog; alter database open;
开启补充日志(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
待部署Agent的机器必须能够访问互联网。
由于数据流转通常对时效性有较高的要求,因此,推荐将Tapdata Agent部署在Oracle数据库所属机器或相同网络的机器中,可极大降低网络延迟带来的影响。
此处以Linux操作系统(64位)为例介绍Agent部署流程,如果需要部署到其他平台(例如Windows、阿里云计算巢),请参见安装Agent文档。
-
在左侧导航栏,单击Agent管理。
-
在Agent管理页面,单击创建Agent。
-
在Agent下载与安装对话框,选择Linux(64 bit),然后根据界面提示进行Agent安装。
重要安装前请确认您的部署环境中已安装JAVA 1.8版本并正确配置环境变量。
-
登录到待部署Agent的机器。
-
执行如下命令创建tapdata目录用于安装和部署Tapdata Agent。
mkdir tapdata -
单击界面中的复制,复制步骤3的命令,并在tapdata目录下执行命令。
说明执行该命令后,Tapdata Agent会自动下载、自动部署以及启动。
等待命令执行完成,即可完成Tapdata Agent的安装和启动。
Tapdata Agent启动成功的示例如下所示。
WORK DIR:/root/tapdata Init tapdata... Download components... Downloading 100.00% 225.48 MB, Total size: 225.48 MB, avg speed: 12.3 MB/s, remaining time: 0m 0s Downloading 100.00% 0.00 KB .Total size: 1.07 KB Downloading 100.00% 0.00 KB .Total size: 0.14 KB organize files... WORK DIR:/root/tapdata Testing JDK... java version:1.8 Java environment OK. The max memory will be used by Tapdata is 1119M Waiting for the flow engine to start \ FlowEngine is startup at : 2022-12-22 14:54 -
步骤三:连接源数据库和目标数据库
通过Tapdata Cloud连接源数据库和目标数据库。
在左侧导航栏,单击连接管理。
连接作为源库的Oracle数据库。
在连接管理页面,单击创建连接。
在创建连接对话框的认证数据源页签,单击Oracle。
在创建连接页面,根据下表说明配置数据源参数。
参数
描述
连接名称
数据连接名称,请根据实际设置。多个连接的名称不能相同。
连接类型
支持将Oracle作为源头或者目标。此处取值为源头和目标或者源头。
连接方式
连接Oracle数据库的方式。取值范围如下:
SID:数据库实例名,是数据库和操作系统交互时用到的名称。
Service Name:服务名。当数据库有域名时,Service Name与Global DB Name相同;当数据库无域名时,Service Name与数据库名称相同。
数据库地址
数据库连接地址。
端口
数据库的服务端口。
SID
数据库实例名。当连接方式选择为SID时需要配置此参数。
Service Name
服务名。当连接方式选择为Service Name时需要配置此参数。
Schema
Schema名称,即一个连接对应一个 Schema。
说明如果需要连接多个Schema,请创建多个数据连接。
其他连接串参数
额外的连接参数,默认为空。
账号
数据库的账号。
密码
数据库的密码。
多租户模式
如果Oracle为多租户模式,则打开多租户模式开关并填写PDB信息。
日志插件
保持默认值logMiner即可。
时间类型的时区
默认为数据库所用的时区,您也可以根据业务需求指定。
包含表
要包含的表。取值范围如下:
全部(默认):包含数据库中的所有表。
自定义:自定义要包含的表。多个表或表达式之间用半角逗号(,)分隔。表达式支持使用星号(*)表示任意长度的字符。
排除表
从包含表规则匹配到的表中将指定的表排除。
打开排除表开关并设置要排除的表。多个表或者表达式之间用半角逗号(,)分隔。表达式支持使用星号(*)表示任意长度的字符。
agent设置
使用的Agent信息。取值范围如下:
平台自动分配(默认):由平台分配节点进行连接访问。
用户手动指定:设置此参数为用户手动指定后,选择要使用的Agent。
模型加载频率
数据源中模型数量大于1万时,Tapdata Cloud会按此参数设置定期进行模型刷新。
单击连接测试,测试通过后单击保存。
说明如果提示连接测试失败,请根据页面提示进行修复。
-
连接作为目标库的表格存储。
-
在连接管理页面,单击创建连接。
-
在创建连接对话框的Beta数据源页签,单击Tablestore。
-
在创建连接页面,根据下表说明配置数据源参数。
参数
描述
连接名称
数据连接名称,请根据实际设置。
连接类型
固定取值为目标。此数据连接在Tapdata Cloud中只能作为目标使用,不能作为源头。
服务地址
表格存储实例的服务地址。更多信息,请参见服务地址。
实例名称
表格存储实例的名称。更多信息,请参见实例。
AccessKey ID
RAM用户的AccessKey ID和AccessKey Secret。
说明当使用从STS获取的临时访问凭证访问表格存储时,请设置为临时访问凭证的AccessKey ID和AccessKey Secret。
AccessKey Secret
AccessKey Token
临时访问令牌。当使用从STS获取的临时访问凭证访问表格存储时,需要设置此参数。
agent设置
使用的Agent信息。取值范围如下:
-
平台自动分配(默认):由平台分配节点进行连接访问。
-
用户手动指定:设置此参数为用户手动指定后,选择要使用的Agent。
模型加载频率
数据源中模型数量大于1万时,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、延迟、任务时间统计等信息。