支持版本
使用驱动版本为 ojdbc6,目前支持 Oracle11g、12c、18c、19c 版本,其中18c、19c 新特性不支持。
使用限制
当前数据集成同步数据时,仅支持 UTF8、AL32UTF8、AL16UTF16 及 ZHS16GBK 编码格式。
说明:
支持读取视图表。
Oracle 离线单表读取节点配置
1. 查询模式选择表。

参数 | 说明 |
数据来源 | 可用的 Oracle 数据源。 |
查询模式 | 表:按照来源端选择的库、表进行数据同步,该模式需要配置字段映射。 自定义 Query:按照来源端填写的自定义 Quey 语句查询数据,默认按照同名映射的方式进行数据同步,无需配置字段映射。该模式当前支持目标端为 MySQL、Kafka、Oceanbase、COS、DLC。 注意: 1. 自定义 Query 模式下默认以同名映射规则将数据查询结果同步至目标端表的对应同名字段。针对区分大小写的数据源,字段名称相同但大、小写状态不同时将被认为是不同字段。 2. 自定义 Query 语句要求明确表所属的库或 Schema,例如,Hive 数据源语句中需要写明库.表。 3. 自定义 Query 模式下目标端为 COS、Kafka 时字段类型默认为 String。 4. 若自定义 Query 语句中含有 union all,则取语句中第一个表的字段作为同步映射的字段。 5. 自定义 Query 模式不支持查询来源端数据库的系统表或虚拟表,例如,Oracle 数据库的 DUAL 表。 6. 自定义 Query 语句中存在 case when 语句时,需要使用别名,例如,select id,vehicleid,case when driverid >115 then 0 else driverid end as driverid,startlocation from test.ods_vehicle。 7. 自定义 Query 模式下暂不支持画布转换、数据对账。 8. 自定义 Query 模式下目标端不支持一键建表。 |
库 | 支持选择、或者手动输入需读取的库名称。 默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
Schema | 支持选择、或者手动输入需读取的 Schema。 |
表 | 支持选择、或者手动输入需读取的表名称。 |
添加分库分表 | 可创建多个数据源并添加对应的表对象。 注意: 分库分表情况下选择的多个表对象需保证 Schema 信息一致(包括字段名称、字段类型)。数据字段模块内系统默认展示第一个数据源的第一张表的元数据字段信息,若多表间字段不一致可能会导致运行失败。 |
切割键 | 指定用于数据分片的字段,指定后将启动并发任务进行数据同步,可以提升数据同步效率。 您可以将源数据表中某一列作为切分键,建议使用主键或有索引的列作为切分键, 如果需要配置为字符串,浮点和日期等其它类型的字段,请手动输入即可。 |
筛选条件(选填) | Oracle 根据指定 where 条件拼接 SQL,并根据该 SQL 进行数据抽取。例如,在测试时指定 where 条件为 row_number()。 where 条件可以有效地进行业务增量同步 。 where 条件不配置或为空时,将视作全表同步数据 。 |
2. 查询模式选择自定义 Query。

参数 | 说明 |
数据来源 | 可用的 Hive 数据源。 |
查询模式 | 表:按照来源端选择的库、表进行数据同步,该模式需要配置字段映射。 自定义 Query:按照来源端填写的自定义 Quey 语句查询数据,默认按照同名映射的方式进行数据同步,无需配置字段映射。该模式当前支持目标端为 MySQL、Kafka、Oceanbase、COS、DLC。 注意: 1. 自定义 Query 模式下默认以同名映射规则将数据查询结果同步至目标端表的对应同名字段。针对区分大小写的数据源,字段名称相同但大、小写状态不同时将被认为是不同字段。 2. 自定义 Query 语句要求明确表所属的库或 Schema,例如,Hive 数据源语句中需要写明库.表。 3. 自定义 Query 模式下目标端为 COS、Kafka 时字段类型默认为 String。 4. 若自定义 Query 语句中含有 union all,则取语句中第一个表的字段作为同步映射的字段。 5. 自定义 Query 模式不支持查询来源端数据库的系统表或虚拟表,例如,Oracle 数据库的 DUAL 表。 6. 自定义 Query 语句中存在 case when 语句时,需要使用别名,例如,select id,vehicleid,case when driverid >115 then 0 else driverid end as driverid,startlocation from test.ods_vehicle。 7. 自定义 Query 模式下暂不支持画布转换、数据对账。 8. 自定义 Query 模式下目标端不支持一键建表。 |
自定义 Query | 需按照数据源类型填写对应查询语句,将根据该语句的查询结果作为来源端数据进行同步。 |
Oracle 离线单表写入节点配置


参数 | 说明 |
数据去向 | 需要写入的 Oracle 数据源。 |
库 | 支持选择、或者手动输入需写入的库名称。 默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
Schema | 支持选择、或者手动输入需要写入的 Oracle 数据模式。 |
表 | 支持选择、或者手动输入需写入的表名称 当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
是否清空表 | 在写入该 Oracle 数据表前可以手动选择是否清空该数据表。 |
批量提交大小 | 一次性批量提交的记录数大小,该值可以极大减少数据同步系统与 Oracle 的网络交互次数,并提升整体吞吐量。如果该值设置过大,会导致数据同步运行进程 OOM 异常。 |
写入模式 | Oracle写入支持两种模式: append:追加写入。 upsert:根据设置主键字段进行数据更新写入。 |
前置 SQL(选填) | 执行同步任务之前执行的 SQL 语句,根据数据源类型对应的正确 SQL 语法填写 SQL,例如,执行前清空表中的旧数据(truncate table tablename)。 |
后置 SQL(选填) | 执行同步任务之后执行的 SQL 语句,根据数据源类型对应的正确 SQL 语法填写 SQL,例如,加上某一个时间戳 alter table tablename add colname timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。 |
数据类型转换支持
读取
Oracle 读取支持的数据类型及转换对应关系如下(在处理 Oracle 时,会先将 Oracle 数据源的数据类型和数据处理引擎的数据类型做映射):
Oracle 数据类型 | 内部类型 |
NUMBER,INTEGER,INT,SMALLINT | LONG |
NUMERIC,DECIMAL,FLOAT,DOUBLE PRECISION,REAL | DOUBLE |
LONG,CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2,CLOB,NCLOB,CHARACTER,CHARACTER VARYING,CHAR VARYING,NATIONAL CHARACTER,NATIONAL CHAR,NATIONAL CHARACTER VARYING,NATIONAL CHAR VARYING,NCHAR VARYING | STRING |
TIMESTAMP,DATE | DATE |
BIT,BOOL | BOOLEAN |
BLOB,RAW,LONG RAW | BYTES |
写入
Oracle 写入支持的数据类型及转换对应关系如下:
内部类型 | Oracle 数据类型 |
LONG | NUMBER,INTEGER,INT,SMALLINT |
DOUBLE | NUMERIC,DECIMAL,FLOAT,DOUBLE PRECISION,REAL |
STRING | LONG,CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2,CLOB,NCLOB,CHARACTER,CHARACTER VARYING,CHAR VARYING,NATIONAL CHARACTER,NATIONAL CHAR,NATIONAL CHARACTER VARYING,NATIONAL CHAR VARYING,NCHAR VARYING |
DATE | TIMESTAMP,DATE |
BOOLEAN | BIT,BOOL |
BYTES | BLOB,RAW,LONG RAW |
Oracle 脚本 Demo
如果您配置离线任务时,使用脚本模式的方式进行配置,您需要在任务脚本中,按照脚本的统一格式要求编写脚本中的 reader 参数和 writer 参数。
"job": {"content": [{"reader": {"parameter": {"password": "******","column": [ //列名"ID","NAME"],"connection": [{"jdbcUrl": ["jdbc:oracle:thin:@ip:1521:DATABASE"],"table": [ //源表"SCHEMA.SOURCE_TABLE"]}],"where": "ID>10", //筛选条件"splitPk": "ID", //切割键"username": "root"},"name": "oraclereader"},"transformer": [],"writer": {"parameter": {"postSql": [ //后置sql""],"password": "******","column": [ //列名"ID","NAME"],"connection": [{"jdbcUrl": "jdbc:oracle:thin:@ip:1521:DATABASE","table": [ //目标表"SCHEMA.SINK_TABLE"]}],"writeMode": "upsert", //写入模式"batchSize": 1024, //批量提交大小"username": "root","on": [ //唯一性索引"ID"],"preSql": [ //前置sql""]},"name": "oraclewriter"}}],"setting": {"errorLimit": { //脏数据阈值"record": 0},"speed": {"byte": -1, //不限制同步速度,正整数表示设置最大传输速度 byte/s"channel": 1 //并发数量}}}。