---
title: 如何使用 DataX 工具迁移 Oracle 数据到 OceanBase-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于如何使用 DataX 工具迁移 Oracle 数据到 OceanBase相关的常见问题和使用技巧，帮助您快速解决如何使用 DataX 工具迁移 Oracle 数据到 OceanBase的难题。
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 如何使用 DataX 工具迁移 Oracle 数据到 OceanBase

更新时间：2026-08-25 02:41

## 总结说明

本文主要描述如何使用 DataX 工具将 Oracle 数据迁移到 OceanBase Oracle 模式租户。

## 详细说明

### 一、源端和目标端环境准备

#### 源端 Oracle 环境准备

在源端 Oracle 数据库中创建测试表：

```sql
SQL> CREATE TABLE departments (
    dept_id NUMBER(10) PRIMARY KEY,
    dept_name VARCHAR2(50) NOT NULL,
    dept_location VARCHAR2(50),
    dept_manager VARCHAR2(50)
);

Table created.

```

插入测试数据：

```sql
SQL> INSERT INTO departments (dept_id, dept_name, dept_location, dept_manager)
VALUES (1, '人事部', '北京市', '王经理');

SQL> INSERT INTO departments (dept_id, dept_name, dept_location, dept_manager)
VALUES (2, '财务部', '上海市', '张经理');

-- 省略其余插入数据

SQL> INSERT INTO departments (dept_id, dept_name, dept_location, dept_manager)
VALUES (6, '运营部', '武汉市', '周经理');

SQL> INSERT INTO departments (dept_id, dept_name, dept_location, dept_manager)
VALUES (7, '客服部', '南京市', '黄经理');

1 row created.

```

确认源表数据量：

```sql
SQL> SELECT count(1) FROM departments;

  COUNT(1)
----------
         7

```

#### 目标端 OceanBase 环境准备

在目标端 OceanBase 数据库的 Oracle 模式兼容租户中创建与源端结构相同的表（DataX 不支持迁移表结构，目标表需提前创建）：

```shell
obclient> CREATE TABLE departments (
    ->     dept_id NUMBER(10) PRIMARY KEY,
    ->     dept_name VARCHAR2(50) NOT NULL,
    ->     dept_location VARCHAR2(50),
    ->     dept_manager VARCHAR2(50)
    -> );
Query OK, 0 rows affected (0.99 sec)

```

确认目标表初始数据为空：

```shell
obclient> SELECT count(1) FROM departments;
+----------+
| COUNT(1) |
+----------+
|        0 |
+----------+
1 row in set (0.14 sec)

```

### 二、安装 DataX

#### 下载并解压安装文件

```bash
wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202303/datax.tar.gz
tar zxvf datax.tar.gz
cd datax

```

#### 目录结构说明

解压后的目录结构如下：

```bash
$ tree -L 1 --filelimit 30
.
├── bin
├── conf
├── job
├── lib
├── log
├── log_perf
├── plugin
├── script
└── tmp

```

各目录说明：

| 目录名 | 说明 |
| --- | --- |
| bin | 可执行文件目录，该目录下的 `datax.py` 为 DataX 任务的启动脚本 |
| conf | 日志文件配置目录，存放 DataX 与任务无关的配置文件 |
| lib | 运行时依赖包目录，存放 DataX 运行所需的全局 jar 文件 |
| job | 任务配置目录，包含用于测试验证 DataX 安装的任务配置文件 |
| log | 日志文件目录，存放 DataX 任务运行日志。DataX 运行时默认将日志输出到标准输出，同时写入 log 目录 |
| plugin | 插件文件目录，保存 DataX 支持的各种数据源插件 |

### 三、配置 Job 文件

#### 创建 Job 配置文件

将以下 JSON 配置文件按照源端和目标端的实际环境信息填写后，放置到 `datax/job/` 目录下。

#### 注意

请直接下载并使用此 JSON 文件。下方示例代码中包含注释说明，直接复制使用时格式可能会有问题。

```json
{
    "job": {
        "setting": {
            "speed": {
                "channel": 32
            },
            "errorLimit": {
                "percentage": 0.1
            }
        },
        "content": [
            {
                "reader": {
                    "name": "oraclereader",
                    "parameter": {
                        "username": "TEST2",
                        "password": "xxxxxx",
                        "column": ["*"],
                        "connection": [
                            {
                                "table": ["TEST2.DEPARTMENTS"],
                                "jdbcUrl": ["jdbc:oracle:thin:@xx.xx.xx.xx:1521:helowin"]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "oceanbasev10writer",
                    "parameter": {
                        "writeMode": "insert",
                        "batchSize": 5000,
                        "memstoreThreshold": "90",
                        "username": "TEST2@oracle#obcluster",
                        "password": "xxxxxx",
                        "column": ["*"],
                        "connection": [
                            {
                                "table": ["TEST2.DEPARTMENTS"],
                                "jdbcUrl": "jdbc:oceanbase://xx.xx.xx.xx:2883/TEST2"
                            }
                        ]
                    }
                }
            }
        ]
    }
}

```

#### 全局配置参数说明

| 参数 | 说明 |
| --- | --- |
| job | 表示一个数据同步任务，包含同步任务的配置信息 |
| channel | 表示数据同步的通道数，可不修改 |
| percentage | 表示错误限制的百分比，可不修改 |

#### Reader 参数说明

`reader.name` 值为 `oraclereader`，表示读取插件名称，请勿修改。

| 参数 | 说明 |
| --- | --- |
| username | 源端 Oracle 数据库用户名 |
| password | 源端 Oracle 数据库密码 |
| column | 表示读取或写入的列名 |
| table | 需要迁移数据的表名 |
| jdbcUrl | JDBC 连接串，注意最后需要填写端口和服务名 |

#### Writer 参数说明

`writer.name` 值为 `oceanbasev10writer`，表示写入插件名称，请勿修改。

| 参数 | 说明 |
| --- | --- |
| username | 连接 OceanBase 数据库时使用的用户名，格式为 `用户@租户#集群`。OceanBase 使用 2883 端口，必须带上 `#集群`，否则迁移会连接不上 |
| password | 连接 OceanBase 数据库时使用的密码 |
| column | 表示读取或写入的列名 |
| writeMode | 表示写入数据的方式，值为 `insert` 表示每次写入均为插入新数据 |
| batchSize | 表示写入数据的批次大小，即每次写入的数据条数 |
| memstoreThreshold | 表示写入数据时使用的 Memstore 阈值 |
| preSql | 表示在写入数据之前需要执行的 SQL 语句 |
| table | 需要迁移数据的表名，格式为 `用户.表名` |
| jdbcUrl | JDBC 连接串，注意最后需要填写用户名 |

### 四、执行 Job

配置文件准备完成后，执行以下命令启动 DataX 同步任务：

```bash
cd datax/bin
python datax.py ../job/oraclejob4.json

```

### 五、执行结果

#### 查看任务报告

DataX 任务执行结束后会输出任务报告，包含任务平均流量、记录写入速度和读写失败总数等信息。

#### 在目标端验证数据

在目标端 OceanBase Oracle 模式租户中查询该表，确认数据是否迁移成功：

```sql
obclient> SELECT * FROM departments;
+---------+-----------+---------------+--------------+
| DEPT_ID | DEPT_NAME | DEPT_LOCATION | DEPT_MANAGER |
+---------+-----------+---------------+--------------+
|       1 | 人事部    | 北京市        | 王经理       |
|       2 | 财务部    | 上海市        | 张经理       |
|       3 | 市场部    | 广州市        | 李经理       |
|       4 | 研发部    | 深圳市        | 赵经理       |
|       5 | 销售部    | 成都市        | 刘经理       |
|       6 | 运营部    | 武汉市        | 周经理       |
|       7 | 客服部    | 南京市        | 黄经理       |
+---------+-----------+---------------+--------------+
7 rows in set (0.03 sec)

```

## 适用版本

- OceanBase V4.0 之前的所有版本
 - DataX 工具最新版本（下载地址：https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202303/datax.tar.gz）

## 注意事项

1. DataX 不支持迁移表结构，只支持迁移数据，目标端表必须事先创建。源表和目标表均可以是无主键表。
 2. DataX 迁移数据以任务形式执行，每个任务只处理一张表，每个任务对应一个 JSON 格式的配置文件。
 3. 建议使用最新版本的 DataX 软件。旧版本 writer 可能存在同步报错 `datax java.lang.NumberFormatException: multiple points` 的问题。
 4. 如果 OceanBase 通过 OBProxy 连接，用户名必须带上 `#集群`，否则迁移时会连接不上。可能出现的报错信息为：`com.alipay.oceanbase.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user 'root@mysql'@'xx.xx.xx.xx' (using password: YES)`

上一篇

[如何使用 DataX 工具迁移 MySQL 数据到 OceanBase](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000006894152)

下一篇

[mysqldump 还原导入错误，错误代码 1300](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000084) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
