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

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;
注意
监控表字段变更时,严禁使用 systemsys 账号配置数据源。

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:sidjdbc: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:检查网络连通性、监听器状态、防火墙端口。

相关文档