帮你快速理解、总结文档立即下载

Oracle 数据源

最近更新时间:2026-09-11 20:42:31
我的收藏

概述

Oracle 是企业级关系型数据库,广泛应用于金融、电信、政府等行业的核心业务系统。DataBuddy 数据接入支持将 Oracle 作为来源端,覆盖离线同步、实时整库同步、分库分表同步等场景。本文介绍其连接配置、能力支持范围、前提条件与常见问题。

支持的版本

类型
支持版本
Oracle
11g / 12c / 19c
JDBC Driver
ojdbc6
不支持 Oracle 19c 的新特性。

读取能力

能力
离线读
实时整库读
分库分表读
支持
✓
✓
✓
完整数据源能力对照参见 支持的数据源与读取能力。

使用限制

实时同步限制(基于 LogMiner)

限制项
说明
日志保留时间
增量日志至少保留 72 小时
备库支持
仅支持 logical standby,不支持 physical standby
无主键表
无主键表无法保证 exactly-once 语义
账号限制
严禁使用 system 或 sys 账号配置数据源
DDL 风险
加列带默认值可能导致解析异常;LogMiner 可能导致 DML 与 DDL 顺序错乱
性能瓶颈
LogMiner 读取超过 5k/s 时可能出现较大延迟
RAC 模式风险
日志文件切换可能导致 LogMiner 不感知,造成数据缺失
若无法接受上述限制,建议使用 OGG (Oracle GoldenGate) 方案。

离线同步限制

限制项
说明
视图
支持读取视图
编码格式
仅支持 UTF8 / AL32UTF8 / AL16UTF16 / ZHS16GBK

支持的字段类型

完整字段类型请参见 Oracle 官方文档。
字段类型
离线读
实时读
NUMBER / INTEGER / INT / SMALLINT / NUMERIC / DECIMAL
✅
✅
FLOAT / BINARY_FLOAT / DOUBLE PRECISION / BINARY_DOUBLE / REAL
✅
✅
CHAR / VARCHAR / VARCHAR2 / NCHAR / NVARCHAR2
✅
✅
CLOB / NCLOB
✅
✅
DATE / TIMESTAMP / TIMESTAMP WITH TIME ZONE / TIMESTAMP WITH LOCAL TIME ZONE
✅
✅
BLOB / RAW / LONG RAW
✅
✅
ROWID
❌
✅
INTERVAL YEAR TO MONTH / INTERVAL DAY TO SECOND
❌
✅
XMLTYPE / BFILE
❌
❌
NUMBER 类型根据精度自动映射为 TINYINT / SMALLINT / INT / BIGINT 或 DECIMAL;精度未指定时默认映射为 DECIMAL(38, 18)。

实时同步支持的 DML / DDL

DML

操作
是否支持
INSERT / DELETE / UPDATE
✅

DDL

操作
是否支持
新增表 / 新增列 / 删除列 / 重命名列 / 修改列类型
✅
删除表 / 清空表 / 重命名表(RENAME TABLE)
❌
DDL 变更响应仅在增量阶段 生效;加列带默认值可能导致解析异常,LogMiner 可能导致 DML 与 DDL 顺序错乱。

前提条件

1. 配置账号权限

离线同步 :
CREATE USER wedata_user IDENTIFIED BY your_password;
GRANT CREATE SESSION TO wedata_user;
GRANT SELECT ANY TABLE TO wedata_user;
实时同步 :
CREATE USER wedata_cdc_user IDENTIFIED BY your_password DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS;
GRANT CREATE SESSION, SELECT ANY TABLE, SELECT_CATALOG_ROLE TO wedata_cdc_user;
GRANT ANALYZE ANY TO wedata_cdc_user;
GRANT EXECUTE_CATALOG_ROLE TO wedata_cdc_user;
GRANT LOGMINING TO wedata_cdc_user; -- 12c 及以上版本需要,11g 不需要
GRANT EXECUTE ON DBMS_LOGMNR TO wedata_cdc_user;
GRANT EXECUTE ON DBMS_LOGMNR_D TO wedata_cdc_user;

-- 系统视图查询权限
GRANT SELECT ON V_$DATABASE TO wedata_cdc_user;
GRANT SELECT ON V_$LOG TO wedata_cdc_user;
GRANT SELECT ON V_$LOG_HISTORY TO wedata_cdc_user;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO wedata_cdc_user;
GRANT SELECT ON V_$LOGMNR_LOGS TO wedata_cdc_user;
GRANT SELECT ON V_$ARCHIVED_LOG TO wedata_cdc_user;
GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO wedata_cdc_user;
注意
监控表字段变更时,严禁使用 system 或 sys 账号配置数据源。

2. 开启日志归档(仅实时同步)

需要重启数据库,并占用磁盘空间。
sqlplus / as sysdba
ALTER SYSTEM SET db_recovery_file_dest_size = 10G;
ALTER SYSTEM SET db_recovery_file_dest = '/opt/oracle/oradata/recovery_area' scope=spfile;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
ARCHIVE LOG LIST; -- 验证归档模式

3. 开启补充日志(仅实时同步)

未开启会导致 UPDATE 操作下游其他列为空。
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER TABLE schema_name.table_name ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

创建数据源

操作步骤

1. 登录 DataBuddy 控制台。
2. 在顶部切换到目标地域和 Workspace。
3. 进入 数据接入 > 任务管理 > 数据源管理 (或 平台管理 > 数据源管理 )。
4. 点击 添加数据源 ,选择 Oracle 。
5. 填写连接配置与认证信息,详见 参数说明。
6. 点击 测试连接 (参见 数据源连通性测试)。
7. 测试通过后点击 保存 或 保存 & 创建任务 。

参数说明

参数
说明
是否必填
数据源名称
数据源在工作空间内的唯一标识
是
JDBC URL
jdbc:oracle:thin:@host:port:sid 或 jdbc:oracle:thin:@//host:port/service_name
是
用户名
数据库连接账号(不允许使用 system / sys)
是
密码
数据库连接密码(支持 SSM 凭证托管)
是
数据源版本
11g / 12c / 19c
是
JDBC URL 示例:
jdbc:oracle:thin:@10.0.0.1:1521:ORCL
jdbc:oracle:thin:@//10.0.0.1:1521/ORCLPDB

在数据接入任务中使用

实时整库

配置项
说明
来源表范围
指定表 (仅同步选中的表,新增表需重启)/ 正则匹配 (指定库名 + 表名正则,符合规则的新增表自动接入)
读取模式
全量 + 增量 / 仅增量

离线单表

参数
说明
库 / Schema / 表
必填;支持指定与正则匹配
切割键
建议主键或索引列;用于并行同步
筛选条件
标准 WHERE 语法

最佳实践

账号权限最小化 :使用专用账号,避免 system / sys。
日志保留时间 :归档日志至少保留 72 小时。
切割键选择 :主键或索引列。
性能考量 :LogMiner 超过 5k/s 时建议使用 OGG 方案替代。

常见问题

Q:实时同步延迟较大?

A:LogMiner 读取超过 5k/s 时存在性能瓶颈。可优化作业并行度、减少同步表数量;高吞吐场景建议 OGG。

Q:加列带默认值后任务异常?

A:LogMiner 对带默认值的加列解析存在问题。建议先加列、再 UPDATE 默认值。

Q:RAC 环境下部分数据未同步?

A:日志文件切换可能导致 LogMiner 不感知。请增加日志保留时间,优化归档日志配置。

Q:UPDATE 后目标端其他列为空?

A:未开启补充日志。执行:
ALTER TABLE schema_name.table_name ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

Q:连接超时或被拒绝?

A:检查网络连通性、监听器状态、防火墙端口。

相关文档