---
title: "从自建 Oracle 迁移至 OceanBase Oracle | OceanBase 文档中心"
description: 从自建 Oracle 迁移至 OceanBase Oracle OMS 可以将自建 Oracle 数据库迁移到 OceanBase Oracle 数据库，支持结构迁移、全量迁移和增量数据同步。完成全量数据迁移且目标端与源端的增量数据基本追平后，OMS 可以发起一轮针对源端数据库和目标端数据库里被迁移的数据表的全量数据…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*L03BS6f-o40AAAAAAAAAAAAADiGDAQ/original) 迁移服务 OMSV 1.4.2 企业版

# 从自建 Oracle 迁移至 OceanBase Oracle

更新时间：2023-06-25 10:09:49

OMS 可以将自建 Oracle 数据库迁移到 OceanBase Oracle 数据库，支持结构迁移、全量迁移和增量数据同步。完成全量数据迁移且目标端与源端的增量数据基本追平后，OMS 可以发起一轮针对源端数据库和目标端数据库里被迁移的数据表的全量数据校验任务。

在 OMS 控制台中创建从自建 Oracle 数据库迁移至 OceanBase Oracle 的数据迁移任务，使用结构迁移、全量迁移和增量数据同步，可以将数据库中的存量业务数据和增量数据无缝迁移至目标端，应用几乎无感知。

## 前提条件

- 已在目标端 OceanBase Oracle 数据库中创建了对应的 Schema。OMS 支持表结构的迁移，不支持自动创建目标Schema，您需要提前在目标端创建对应的 Schema。
 - 已创建了源端和目标端的数据源。
 - 已为源端和目标端 OceanBase Oracle 数据库创建了专用于数据迁移任务的数据库用户，并为其赋予了相关权限。

  权限列表请查看 [用户权限设置](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-10000000000374367)。
 - 如果需要增量同步，启动源端 DRC Store之前必须有归档日志。您可以执行以下命令开启归档日志：`alter system switch logfile`。

## 注意事项

数据迁移只会将源库的数据（结构）复制一份到目标数据库，并不会对源库的数据（结构）造成影响。启动迁移任务之前，OceanBase 数据迁移功能会自动对源端数据库和目标端数据库执行数据迁移的预检查，为保证预检查顺利执行，请先确认以下信息：

- 自建 Oracle 数据库版本必须是 11gR2 版本、12c 或 18c 的非 CDB 版本。
 - 需要保证源端和目标端数据库的时钟同步。
 - 源端为 Oracle 数据库，字符集必须是 UTF16、UTF8 、GBK 或 GB18030。
 - 支持字符编码不同场景下，配置字段定义处理策略包括自动扩大以及 BYTE 转 CHAR 等。详情请查看 [字符集配置](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-10000000000374365)。
 - 无主键表和有主键表可以在同一个迁移任务里基于无主键的方式(目标端加ROWID相关伪列)做全增量数据迁移和数据校验，这个任务全部表的迁移策略采用 ROWID 方案，不再区分是否有主键
 - 为了在全增量迁移场景下数据的并发写入，源端有外键等场景下，OMS 结构迁移会自动过滤掉外键约束，在数据同步过程中不创建外键和 novalidate 的约束。这些被 OMS 结构迁移过滤的约束需要在割接期间实施人员补充，具体补充的 SQL 语句在 OMS 镜像内的 /home/admin/logs/post_ddl_{task_id}.sql，task_id 为迁移项目 id，可在 OMS 管控台找到。

## 迁移类型和迁移对象

| **迁移类型** | **迁移对象** |
| --- | --- |
| 结构迁移 | 在结构迁移中，OMS 将源库中的数据对象定义（如表、索引、约束、注释等）迁移到 OceanBase 目标库中。 支持迁移无主键表。 |
| 全量迁移 | 在全量数据迁移过程中，当源库不断有业务写入时，在全量数据迁移完成之前 OMS 会启动增量拉取模块以拉取源实例中的增量更新数据，对之进行解析和封装并存储在 OMS 中。 |
| 增量同步 | 全量迁移过程开始后，将源库中发生变化的数据（新增、修改或删除）同步到 OceanBase 中对应的表里。在增量数据同步追平后，OMS 会维护源库到目标库的实时数据同步链路。 增量数据迁移支持同步的 SQL 操作： * DML：INSERT、UPDATE、DELETE、REPLACE * DDL：CREATE TABLE、ALTER TABLE 、DROP TABLE 、TRUNCATE TABLE INDEX、CREATE INDEX **注意** ：如果需要增量同步 DLL，请先创建迁移任务，并在任务中编辑上下文，将 support_ddl_change 参数的值修改为 true。 |

## 无主键表迁移说明

将自建 Oracle 数据库迁移到 OceanBase Oracle 数据库时，OMS 支持无主键表迁移。源端为 Oracle，以ROWID作为主键。

关于无主键表的迁移机制，请参考 [无主键表迁移机制](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-10000000000374344)。 **注意**

如果迁移 Oracle 无主键表，则当前迁移任务最多只能执行一次反向链路切换。 无主键表和有主键表不能同时迁移，如果有无主键表迁移需求，请分别为这两类表单独创建迁移项目，并在创建迁移无主键表任务的第一步中，开启迁移无主键表设置。

## 步骤一 指定源库与目标库

1. 登录 OMS 控制台。
 2. 在左侧导航栏中单击 **OMS（数据迁移）** > **数据传输项目列表。**
 3. 在页面左上角单击 **新建项目** 。

   ![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5805888061/p185468.png "image.png")

4. 输入项目的基本信息，并选择源端和目标端数据库。

   ![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5805888061/p185469.png "image.png")

   | 信息项 | 说明 |
   | --- | --- |
   | 项目名称 | 迁移任务的名称。 |
   | 描述 | 项目的备注信息，可以在此处简单描述迁移背景。 |
   | 源端数据库 | 单击 **选择** 按钮会弹出数据源列表，选择已添加的目标数据源作为源端数据库。 |
   | 源端业务账号 | 业务账号是业务应用连接数据库使用的用户名。默认使用创建数据源时设置的用户。 |
   | 目标端数据库 | 单击 **选择** 按钮会弹出数据源列表，选择已添加的目标数据源作为目标端数据库。 |
   | 目标端业务账号 | 业务账号是业务应用连接数据库使用的用户名。默认使用创建数据源时设置的用户。 |
   | 迁移无主键表 | 是否迁移无主键表。 **注意** ：无主键表和有主键表不能同时迁移，如果有无主键表迁移需求，请分别为这两类表单独创建迁移项目。 |
   | 结构同步 | 选择是否开启 **结构同步** ，将源库表结构定义自动同步到目标库。 |
   | 增量同步 | 选择是否开启增量同步。开启后，在数据迁移中，当源库的全量数据被同步到目标库后，开启全量数据同步位点后的增量数据是否也将被实时的同步到目标库。 |
   | 需要切换 | 选择是否需要 OMS 创建从目标端到源端的增量实时同步链路。开启后可以在业务流量切换到目标库之前，将源库与目标库的数据实现同步追平。 |
   | 需要全量校验 | 选择是否要在迁移任务里发起源库和目标库的全字段数据校验。开启后 OMS 会提供数据校验的结果，校验不一致的数据会以源库为基准并在目标库订正。 |

5. 设置完成后，单击 **下一步** 。

## 步骤二 指定迁移类型和表列表

页面左侧为源端数据库的表列表，其中展示每张表的名称、所在库名称、是否有主键。右侧为目标端的对应信息，默认为空。目标端中区分白名单和黑名单，您需要将源端数据库中需要迁移和不需要迁移的表分别添加到白名单和黑名单中，其中：

- 白名单：需要被迁移至目标端的表。
 - 黑名单：不需要被迁移至目标端的表。

**迁移无主键表**

1. 在左侧源端数据库中勾选需要迁移的无主键表。

   如果需要迁移全部的无主键表，可以直接单击 **全选无主键表** 。

2. 将其添加至右侧目标端数据源的白名单中。

   ![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5805888061/p185470.png "image.png")

3. 将不需要被迁移的表添加至黑名单中。
 4. 确认黑白名单的列表是否正确。
 5. 单击 **下一步** 。

**迁移有主键表**

1. 在左侧源端数据库中单击 **全选无主键表** ，并将其添加到右侧的黑名单中。

   ![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5805888061/p185471.png "image.png")

2. 在左侧选择需要迁移的有主键表，并将其添加到右侧的白名单中。

   ![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5805888061/p185472.png "image.png")

3. 确认黑白名单的列表是否正确。
 4. 单击 **下一步** 。

## 步骤三 迁移项目预检查

OMS 自动对迁移项目中的字符集等源库设置进行预检查，如果预检查中所有项目通过，页面会显示 **检测成功。** 此时单击 **创建项目** 按钮即可成功创建迁移项目。

![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5805888061/p185473.png "image")

 上一篇 下一篇 ![有帮助](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) 咨询热线
