---
title: "迁移 Oracle 数据库的数据至 OceanBase 数据库 MySQL 兼容模式 | OceanBase 文档中心"
description: 迁移 Oracle 数据库的数据至 OceanBase 数据库 MySQL 兼容模式 本文为您介绍如何使用 OceanBase 迁移服务（OceanBase Migration Service，OMS）迁移 Oracle 数据库的数据至 OceanBase 数据库 MySQL 兼容模式（包括物理数据源、公有云数据源和…
---
切换语言

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

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

# 迁移 Oracle 数据库的数据至 OceanBase 数据库 MySQL 兼容模式

更新时间：2026-06-25 15:30:38

本文为您介绍如何使用 OceanBase 迁移服务（OceanBase Migration Service，OMS）迁移 Oracle 数据库的数据至 OceanBase 数据库 MySQL 兼容模式（包括物理数据源、公有云数据源和单机数据源）。

## 背景信息

在 OMS 控制台创建从 Oracle 数据库迁移数据至 OceanBase 数据库 MySQL 兼容模式的数据迁移任务，您可以通过结构迁移、全量迁移和增量数据同步，无缝迁移源端数据库中的存量业务数据和增量数据至 OceanBase 数据库 MySQL 兼容模式。

Oracle 数据库支持单主库、单备库和主备库等模式。迁移 Oracle 数据库的数据至 OceanBase 数据库 MySQL 兼容模式的数据库时，不同类型的数据源支持的操作也不同。

| 类型 | 支持的操作 |
| --- | --- |
| 单主库 | 结构迁移 + 全量迁移 + 增量同步 + 反向增量 |
| 单备库 | 结构迁移 + 全量迁移 + 增量同步 |
| 主备库 | 主库：支持反向增量 备库：支持结构迁移 + 全量迁移 + 增量同步 |

## 前提条件

- 已在目标端 OceanBase 数据库 MySQL 兼容模式创建对应的 Schema。
 - Oracle 源实例必须开启 Archive Log，并且在 OMS 增量复制前已经切换过 LogFile。
 - Oracle 源实例必须已经安装并可正常使用 LogMiner 工具。

  您可以通过 LogMiner 工具获取 Oracle 归档日志文件中的具体内容。
 - 已为源端 Oracle 数据库和目标端 OceanBase 数据库 MySQL 兼容模式创建专用于数据迁移任务的数据库用户，并为其赋予了相关权限。详情请参见 [创建数据库用户](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023065)。
 - 确认 Oracle 实例已开启数据库级别或者表级别的补充日志，详情请参见 [Oracle 数据库补充日志说明](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023077)。
 - Oracle 机器和 OMS 机器之间需要进行时钟同步（例如配置 NTP 服务），否则会存在数据风险。如果是 Oracle RAC，则多个 Oracle 实例之间也需要进行时钟同步。

## 使用限制

- **源端数据库的操作限制**

  **请勿在结构迁移和全量迁移阶段执行库或表结构变更的 DDL 操作，否则可能造成数据迁移任务中断。**
 - 目前支持 Oracle 数据库 10G/11G/12C/18C/19C 版本，12C 及之后版本包含数据库容器（Container Database，CDB）和可插拔数据库（Pluggable Database，PDB）。
 - 迁移 Oracle 数据库的数据至 OceanBase 数据库 MySQL 兼容模式时，不支持同步 DDL。
 - OMS 不支持目标端存在触发器（Trigger）。如果存在触发器，可能导致数据迁移失败。
 - 数据源标识和用户账号等，在 OMS 系统内是全局唯一的。
 - OMS 仅支持迁移库名、表名和列名为 ASCII 码且不包含特殊字符（包括换行、空格，以及 .|"'`()=;/&\）的对象。
 - Oracle 数据库至 OceanBase 数据库 MySQL 兼容模式的反向增量中，OMS 不支持源端存在小写的库名或表名。否则无法通过反向增量限制项预检查。
 - Oracle 数据库的增量日志解析最大支持 5T/天。
 - Oracle 数据库 11G 及之前版本不支持创建超过 30 个字节的数据库对象。在反向增量步骤中，请注意不能在 OceanBase 数据库 MySQL 兼容模式中创建大于本限制的数据库对象。
 - OMS 不支持迁移 Oracle 数据库 12C 及之后版本中超过 30 个字节的数据库对象（包括 Schema、表和列等）。如果您需要迁移超过 30 个字节的数据库对象，请参见 [如何迁移超过 30 个字节的 Oracle 数据库对象](https://www.oceanbase.com/knowledge-base/oms-ee-1000000000234455)。
 - OMS 不支持 Oracle 物化视图和物理表对象重名的迁移场景。如果存在上述对象，OMS 将默认过滤对应对象。
 - OMS 不支持源端 Oracle 数据库执行部分 `UPDATE` 命令。以下示例为一个不支持的 `UPDATE` 命令。

  ```sql
  UPDATE TABLE_NAME SET KEY=KEY+1;

  ```

  上述示例中，`TABLE_NAME` 是表名，`KEY` 是定义为主键的 NUMERIC 类型的列。

## 注意事项

- **当录入的 Oracle 数据库为单备库或主备库模式时，如果 Oracle 主库和备库的运行实例数不同，可能导致少拉取某些实例的增量日志。您需要手动设置 Store 组件的参数，以指定增量从备库拉取时需要拉取的实例的增量日志。操作方式如下：**

     1. Store 组件启动后马上将其停止。
     2. 在 Store 组件的 **更新配置** 页面，新增参数 `deliver2store.logminer.instance_threads` 来设置需要拉取哪些实例的日志。

       多个 thread 之间使用 | 分隔。例如，1|2|3。更新组件的详情请参见 [使用 OMS 从 Oracle 备库增量同步时丢失 Archive 日志](https://www.oceanbase.com/knowledge-base/oms-ee-1000000000266018?back=kb)。
     3. 设置参数后，重启 Store 组件。
     4. 5 分钟后，执行 `grep 'log entries from' connector/connector.log`，即可查看拉取了哪些实例的日志（thread 字段表示拉取到的是哪个实例的日志）。
 - **当需要进行 Oracle 数据库的增量同步时，Oracle 数据库单个归档文件的大小建议小于 2GB。单个归档文件过大，会存在如下风险：**

     - 单个归档文件越大，拉取的耗时比线性增长更大。
     - 录入的 Oracle 数据库为单备库或主备库模式时，增量是从备库拉取，此时只能拉取归档文件。当归档文件生成后才能拉取，归档文件越大，也就意味着在处理该归档文件之前已经延迟较久，并且处理该大的归档文件耗时也越久。
     - 单个归档文件越大，在开启相同并发度的拉取时，Store 组件需要的内存也越大。
 - **Oracle 数据库的归档文件保存 2 天以上，否则由于某个时间段归档量陡增或者 Oracle Store 处理异常，准备恢复时没有了归档文件，将无法恢复。**
 - 如果源端 Oracle 数据库存在右空格差异，则 VARCHAR 或 CHAR 类型在目标端 OceanBase 数据库 MySQL 兼容模式会强制右 trim，导致数据不一致。
 - 如果源端 Oracle 数据库存在交换主键的 DML 语句，将导致 OMS 解析日志异常，迁移至目标端时存在数据丢失的问题。交换主键的 DML 语句示例如下：

  ```sql
  UPDATE test SET c1=(CASE WHEN c1=1 THEN 2 WHEN c1=2 THEN 1 END) WHERE c1 IN (1,2);

  ```
 - Oracle 实例的的字符集配置可以为 AL32UTF8、AL16UTF16、ZHS16GBK 和 GB18030。如果源端字符集为 UTF-8，建议目标端使用兼容源端的字符集（例如，UTF-8、UTF-16 等），避免因字符集不兼容导致目标端出现乱码等问题。
 - OMS 从 Oracle 备库拉取增量数据时，如果您选择的迁移类型中包含增量同步和反向增量，而增量数据拉取出现异常，您可以尝试在主库执行 `ALTER SYSTEM SWITCH LOGFILE`，以便推动 OMS 正常工作。
 - 节点之间的时钟不同步，或者电脑终端和服务器之间的时钟不同步，均可能导致延迟时间（增量同步/反向增量）不准确。

  例如，如果时钟早于标准时间，可能导致延迟时间为负数。如果时钟晚于标准时间，可能导致延迟。
 - 迁移 Oracle 数据库的数据至 OceanBase 数据库 MySQL 兼容模式时，禁止所有表进行导入、导出、Alter Table、FlashBack Table、分区分裂或合并等会导致 ROWID 变更的操作。
 - Oracle 数据库至 OceanBase 数据库 MySQL 兼容模式的反向增量中，当 OceanBase 数据库 MySQL 兼容模式为 V3.2.x 之前的版本，且具有全局唯一索引的多分区表时，如果您更新了表的分区键的值，可能导致数据迁移过程中丢失数据。
 - 如果 PK/UK（作为校验字段的情况下）中包含 INTERVAL 类型，您需要将该表的校验模式 `filter.verify.inmod.tables` 变更为 `in` 模式，否则校验结果不准确。

  您可以新增或更新 Full-Verification 组件 `filter.verify.inmod.tables` 参数的值为 `.*;.*;.*`，具体操作请参见 [更新 Full-Verification 组件](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023303)。
 - 如果 OceanBase 数据库 MySQL 兼容模式的时间类型字段中，存在类似 update current_timestamp 的函数，会导致源端和目标端的数据不一致。
 - 请确认 OMS 对 FLOAT 或 DOUBLE 等列类型的迁移精度是否符合预期。如果目标端字段类型的精度小于源端字段类型的精度，则可能发生截断现象，导致源端和目标端的数据不一致。
 - 如果您变更目标端的唯一索引，需要重启增量同步组件，否则可能存在数据不一致的问题。
 - 如果数据迁移任务未启用正向切换，请删除目标端数据库对应的唯一索引和伪列。如果不删除唯一索引和伪列，会导致无法写入数据，以及往下游导入数据时，会重新生成伪列，导致与源端数据库的伪列发生冲突。

  如果数据迁移任务已启用正向切换，OMS 会根据数据迁移任务的类型，自动删除隐藏列和唯一索引。详情请参见 [数据迁移服务隐藏列机制说明](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023213)。
 - 默认按照目标端参数 `lower_case_table_names = 1` 设置，并以小写方式创建目标端数据库对象。
 - 库表汇聚场景下：

     - 建议您使用匹配规则的方式映射源端和目标端的关系。
     - 建议您自行在目标端创建表结构。如果使用 OMS 创建，请在结构迁移步骤跳过部分失败对象。
 - 如果源端和目标端的表结构不完全一致，可能会出现数据不一致的情况。目前已知场景如下：

     - 用户手动创建表结构时，因超出 OMS 的支持范围，可能会产生隐式的转换问题，导致源端和目标端列的类型不一致。
     - 目标端的数据长度小于源端的数据长度时，可能出现数据截断的情况，导致源端和目标端的数据不一致。
 - 如果创建数据迁移任务时，您仅配置了 **增量同步**，OMS 要求源端数据库的归档日志保存 48 小时以上。

  ​如果创建数据迁移任务时，您配置了 **全量迁移** + **增量同步**，OMS 要求源端数据库的归档日志至少保留 7 天以上。否则数据迁移可能因为无法获取增量日志导致数据迁移任务失败，甚至导致源端和目标端数据不一致。
 - 如果源端或目标端存在仅大小写不同的表对象，可能会因为源端或目标端大小写不敏感导致数据迁移的结果不符合预期。
 - 源端为 Oracle 数据库的增量同步任务（通过 Kafka 获取增量数据除外），如果单个事务跨归档，LogMiner 在跨归档的事务中无法正确返回完整的数据信息，便可能存在丢失数据的问题。建议您配置全量数据校验和数据订正，以确保数据一致性。
 - 如果以 OceanBase 数据库为源端做增量同步，或为目标端做反向增量，数据库表对象中包含 UDT 列，增量同步任务可能因不支持 UDT 列而异常。

## 检查和修改 Oracle 实例的系统配置

您需要进行下述操作：

1. 在源端 Oracle 数据库开启归档模式
 2. 在源端 Oracle 数据库开启补充日志
 3. （可选）设置 Oracle 数据库的系统参数

### 在源端 Oracle 数据库开启归档模式

```sql
SELECT log_mode FROM v$database;

```

`log_mode` 字段需要是 `archivelog`。否则，您需要根据下述方法进行修改。

1. 执行下述命令，开启归档模式。

   ```sql
   SHUTDOWN IMMEDIATE;
   STARTUP MOUNT;
   ALTER DATABASE ARCHIVELOG;
   ALTER DATABASE OPEN;

   ```
 2. 执行下述命令，查看归档日志的路径和配额。

   检查 `reover file` 的路径和配额，建议 `db_recovery_file_dest_size` 的配置值尽量大一些。另外，开启归档后，需要用 RMAN 等方法定期清理归档日志。

   ```sql
   SHOW PARAMETER db_recovery_file_dest;

   ```
 3. 根据业务需求，更改归档日志的配额。

   ```sql
   ALTER SYSTEM SET db_recovery_file_dest_size =50G SCOPE = BOTH;

   ```

### 在源端 Oracle 数据库开启补充日志

Oracle 数据库补充日志的说明及操作详情请参见 [Oracle 数据库补充日志说明](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023077)。

### 设置 Oracle 数据库的系统参数（可选）

建议您设置 Oracle 数据库的系统参数 `_log_parallelism_max` 为 1，通常该系统参数默认为 2。

1. 查询 `_log_parallelism_max` 的值。您可以通过以下两种方式进行查询：

      - 方式一

       ```sql
       SELECT NAM.KSPPINM,VAL.KSPPSTVL,NAM.KSPPDESC FROM SYS.X$KSPPI NAM,SYS.X$KSPPSV VAL WHERE NAM.INDX= VAL.INDX AND NAM.KSPPINM LIKE '_%' AND UPPER(NAM.KSPPINM) LIKE '%LOG_PARALLEL%';

       ```
      - 方式二

       ```sql
       SELECT VALUE FROM v$parameter WHERE name = '_log_parallelism_max';

       ```
 2. 修改 `_log_parallelism_max` 的值。进行修改时，分为以下两种情况：

      - Oracle RAC 修改

       ```sql
       ALTER SYSTEM SET "_log_parallelism_max" = 1 SID = '*' SCOPE = spfile;

       ```
      - 非 Oracle RAC 修改

       ```sql
       ALTER SYSTEM SET "_log_parallelism_max" = 1 SCOPE = spfile;

       ```

   Oracle 数据库 10G 版本修改 `_log_parallelism_max` 参数时，如果报错 `write to SPFILE requested but no SPFILE specified at startup`，请执行下述操作：

   ```sql
   CREATE SPFILE FROM PFILE;
   SHUTDOWN IMMEDIATE;
   STARTUP;
   SHOW PARAMETER SPFILE;

   ```
 3. 修改系统参数 `_log_parallelism_max` 后，请重启实例，切换 2 次归档日志，并且启动任务前需要等待 5 分钟以上。

## 数据类型映射

| Oracle 数据库 | OceanBase 数据库 MySQL 兼容模式 |
| --- | --- |
| CHAR(n) | CHAR(n) |
| CHAR(n CHAR) | VARCHAR(n) |
| CHAR(n BYTE) | CHAR(n) |
| NCHAR(n) | VARCHAR(n) |
| VARCHAR2 | VARCHAR |
| NVARCHAR2 | VARCHAR |
| NUMBER (p, s) | DECIMAL(p, s)/NUMERIC(p, s)    NUMBER 未指定 (p,s) 的情况下，默认转换为 (65,30) |
| LONG | LONGTEXT |
| RAW | VARBINARY |
| CLOB | LONGTEXT |
| NCLOB | LONGTEXT |
| BLOB | LONGBLOB |
| FLOAT | DOUBLE |
| BINARY_FLOAT | DOUBLE |
| BINARY_DOUBLE | DOUBLE/DOUBLE PRECISION |
| DATE | DATETIME |
| TIMESTAMP(n) | DATETIME(n) |
| TIMESTAMP WITH TIME ZONE | VARCHAR(50) |
| TIMESTAMP WITH LOCAL TIME ZONE | TIMESTAMP |
| INTERVAL YEAR(p) TO MONTH | VARCHAR(50) |
| INTERVAL DAY(p) TO SECOND | VARCHAR(50) |
| BFILE | BLOB |
| LONG RAW | LONGBLOB |

## 操作步骤

1. 新建数据迁移任务。

   ![oms40-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/oms40-zh.png)

      1. 登录 OMS 控制台。
      2. 在左侧导航栏，单击 **数据迁移**。
      3. 在 **数据迁移** 页面，单击右上角的 **新建迁移任务**。
 2. 在 **新建迁移任务** 页面，自定义迁移任务的名称。

   建议使用中文、数字和字母的组合。名称中不能包含空格，长度不能超过 64 个字符。

   #### 注意

   任务名称是 OMS 系统内的唯一标记，请自定义合适的任务名称。
 3. 在 **选择源和目标** 步骤，配置各项参数。

   ![migration-40-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/migration-40-zh.png)

   | 参数 | 描述 |
   | --- | --- |
   | 源端 | 如果您已创建 Oracle 数据源，请从下拉列表中进行选择。如果未创建，请单击下拉列表中的 **新建数据源**，在右侧对话框进行新建。参数详情请参见 [新建 Oracle 数据源](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023184)。 |
   | 目标端 | 如果您已创建 OceanBase 数据库 MySQL 兼容模式数据源（包括物理数据源、公有云数据源和单机数据源），请从下拉列表中进行选择。如果未创建，请单击下拉列表中的 **新建数据源**，在右侧对话框进行新建。参数详情请参见 [新建 OceanBase 物理数据源](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023333)、[新建 OceanBase 公有云数据源](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023332) 或 [新建 OceanBase 单机数据源](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023329)。 |
   | 标签（可选） | 单击文本框，在下拉列表中选择目标标签。您也可以单击 **管理标签**，进行新建、修改和删除。详情请参见 [通过标签管理数据迁移任务](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023134)。 |
 4. 单击 **下一步**。在 **选择迁移类型** 步骤，选择当前数据迁移任务的迁移类型。

   ![oms120-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/oms120-zh.png)

   **迁移类型** 包括 **结构迁移**、**全量迁移**、**增量同步** 和 **反向增量**。

   | 迁移类型 | 描述 |
   | --- | --- |
   | 结构迁移 | 结构迁移任务开始后，OMS 会迁移源库中的数据对象定义（表、索引、约束、注释和视图等）至目标端数据库中，并自动过滤临时表。结构迁移的使用限制如下：    - OceanBase 数据库 MySQL 兼容模式的 NUMERIC 类型不能作为分区键。分区无主键表结构迁移时，如果 Oracle 数据库的分区列为 NUMBER 或 INT 类型，结构迁移时会转为 NUMERIC 类型，导致报错。   - 结构迁移时，Oracle 数据库的 Timestamp 类型（精度为 9）将转换为 OceanBase 数据库 MySQL 兼容模式的的 Datetime 类型（精度为 6），请注意精度丢失问题。   - 结构迁移时，Oracle 数据库的 Binary_float 类型将转换为 OceanBase 数据库 MySQL 兼容模式的 Double 类型，请注意反向增量可能存在精度丢失问题。 |
   | 全量迁移 | 全量迁移任务开始后，OMS 会迁移源库表的存量数据至目标端数据库对应的表中。如果选择 **全量迁移**，建议您在迁移数据前，使用 `GATHER_SCHEMA_STATS` 或 `GATHER_TABLE_STATS` 语句收集 Oracle 数据库的统计信息。 |
   | 增量同步 | 增量同步任务开始后，OMS 会同步源库发生变化的数据（新增、修改或删除）至目标端数据库对应的表中。   **增量同步** 支持的 **DML 同步** 包括 `Insert`、`Delete` 和 `Update`，您可以根据需求进行自定义配置。详情请参见 [自定义配置 DDL/DML](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023212)。   #### 注意    如果 Oracle 数据库待迁移表中的全部列均为 LOB 类型（BLOB/CLOB/NCLOB），或者 Oracle 数据源配置了 **通过 Kafka 获取增量数据**，则不支持 **增量同步**。 |
   | 反向增量 | 反向增量任务开始后，可以实时回流业务切换后在目标端数据库产生的变更数据至源端数据库。   通常反向增量会复用增量同步的配置，您也可以根据实际需求进行自定义配置。以下情况均不支持选择 **反向增量**：    - 存在多表汇聚的情况。   - 存在 Schema 多到一映射的情况。 |
 5. 单击 **下一步**。在 **选择迁移对象** 步骤，选择当前数据迁移任务需要迁移的对象。

   您可以通过 **指定对象** 和 **匹配规则** 两个入口选择迁移对象。本文为您介绍通过 **指定对象** 方式选择迁移对象的具体操作，配置匹配规则的详情请参见 [配置匹配规则](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023205)。

   #### 注意

      - 当数据库的库名或表名存在 "$$" 字符时，会影响数据迁移任务的创建。
      - OMS 会自动过滤不支持的对象，查询对象的 SQL 语句请参见 [查询数据库对象](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023072)。  

   ![migration-39-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/migration-39-zh.png)

      1. 在 **选择迁移对象** 步骤，选中 **指定对象**。
      2. 在 **源端对象** 列表选中需要迁移的对象。您可以选择一个或多个库的表、视图作为迁移对象。
      3. 单击 **>**，将其添加至 **目标端对象** 列表中。

   OMS 支持通过文本导入对象，并支持对目标端对象进行重命名、设置行过滤、选择列，以及移除单个或全部迁移对象等操作。

   #### 说明

   通过 **匹配规则** 方式选择迁移对象时，重命名能力由匹配规则语法覆盖，操作处仅支持设置过滤条件。详情请参见 [配置匹配规则](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023205)。

   | 操作 | 步骤 |
   | --- | --- |
   | 导入对象 | 1. 在 **目标端对象** 列表中，单击右上角的 **导入对象**。   2. 在对话框中，单击 **确定**。        **注意：** 导入会覆盖之前的操作选择，请谨慎操作。   3. 在 **导入迁移对象** 对话框中，导入需要迁移的对象。         您可以通过导入 CSV 文件的方式进行库表重命名、设置行过滤条件等操作。详情请参见 [下载和导入迁移对象配置](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023133)。   4. 单击 **检验合法性**。   5. 通过合法性的检验后，单击 **确定**。 |
   | 重命名 | OMS 支持重命名迁移对象的名称，详情请参见 [数据库库表重命名](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023211)。 |
   | 设置 | OMS 支持配置行过滤和选择需要迁移的列。    1. 在选择区域的右侧列表中，鼠标悬停至目标对象。   2. 单击显示的 **设置**。   3. 在 **设置** 对话框，您可以进行以下操作。        在 **行过滤条件** 区域的文本框中，输入标准的 SQL 语句中的 WHERE 子句，来配置行过滤。详情请参见 [SQL 条件过滤数据](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023209)。     - 在 **选择列** 区域，选择需要迁移的列。详情请参见 [列过滤](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023208)。 |
   | 移除/全部移除 | OMS 支持在数据映射时，对暂时选中到目标端的单个或多个对象进行移除操作。    - 移除单个迁移对象        在 **目标端对象** 列表中，鼠标悬停至目标对象，单击显示的 **移除**，即可移除该迁移对象。   - 移除全部迁移对象        在 **目标端对象** 列表中，单击右上角的 **全部移除**。在对话框中，单击 **确定**，即可移除全部迁移对象。 |

   当 Oracle 数据库作为源端进行行过滤时，如果针对的是非 PK 或 UK，请开启对应列的补充日志，或开启 ALL 级别的补充日志。

   开启对应列的补充日志的方式如下：

   ```sql
   ALTER TABLE table_name ADD SUPPLEMENTAL LOG GROUP log_group_name (column1, column2, column3) ALWAYS;

   ```

   开启 ALL 级别的补充日志的方式如下：

   ```sql
   --方式一：开启 DataBase 级别
   ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
   --方式二：开启 Table 级别
   ALTER TABLE table_name ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

   ```
 6. 单击 **下一步**。在 **迁移选项** 步骤，配置各项参数。

      - 结构迁移

       在 **选择迁移类型** 步骤，选中 **结构迁移**，才会显示下述参数。

       ![oms116-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/oms116-zh.png)

       | 参数 | 描述 |
       | --- | --- |
       | 完成后自动进入下一阶段 | 当您选择了结构迁移和其他任意迁移类型时，可以设置结构迁移完成后是否自动进入下一个阶段。默认值为 **是**，您也可以在数据迁移任务详情页面的 **结构迁移** 页签进行查看和修改。 |
       | 普通索引迁移方式 | 指表对象迁移后相关联的非唯一键索引的迁移方式，包括 **不迁移**、**随结构迁移** 和 **全量后迁移**（选中全量迁移才会显示）。 |
      - 全量迁移

       在 **选择迁移类型** 步骤，选中 **全量迁移**，才会显示下述参数。

       ![oms65-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/oms65-zh.png)

       | 参数 | 描述 |
       | --- | --- |
       | 全量迁移速率限制 | 您可以根据实际需求决定是否开启全量迁移速率限制。如果开启，请设置 RPS（全量迁移阶段每秒最多可以迁移至目标端的数据行数的最大值限制）和 BPS（全量迁移阶段每秒最多可以迁移至目标端的数据量的最大值限制）。   #### 说明    此处设置的 RPS 和 BPS 仅作为限速限流能力，全量迁移实际可以达到的性能受限于源端、目标端、实例规格配置等因素的影响。 |
       | 全量迁移资源配置 | 您可以选择 **小**、**中**、**大** 的默认读取并发、写入并发和内存，也可以自定义全量迁移的资源配置。通过全量导入组件 Full-Import 的资源配置，可以限制任务全量迁移阶段的资源消耗。   #### 注意    自定义配置时，最小值为 1，且仅支持配置为整数。 |
       | 目标端表对象存在记录时处理策略 | 处理策略包括 **忽略** 和 **停止迁移**：      - 选择 **忽略**，当目标端表对象存在数据时，如果原数据与写入数据冲突，OMS 采用将冲突数据记录日志，保留原数据不变的策略进行数据写入。     - 选择 **停止迁移**，当目标端表对象存在数据时，全量迁移会报错不允许迁移，请处理好目标端数据后再继续迁移。         #### 注意          如果出错后单击恢复，OMS 将忽略该配置选项，继续迁移表数据，请谨慎操作。 |
      - 增量同步

       在 **选择迁移类型** 步骤，选中 **增量同步**，才会显示下述参数。

       ![oms18-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/oms18-zh.png)

       | 参数 | 描述 |
       | --- | --- |
       | 增量同步速率限制 | 您可以根据实际需求决定是否开启增量同步速率限制。如果开启，请设置 RPS（增量同步阶段每秒最多可以同步至目标端的数据行数的最大值限制）和 BPS（增量同步阶段每秒最多可以同步至目标端的数据量的最大值限制）。   #### 说明    此处设置的 RPS 和 BPS 仅作为限速限流能力，增量同步实际可以达到的性能受限于源端、目标端、实例规格配置等因素的影响。 |
       | 增量日志拉取资源配置 | 您可以选择 **小**、**中**、**大** 的默认内存，也可以自定义增量日志拉取的资源配置。通过增量拉取组件 Store 的资源配置，可以限制任务增量同步阶段日志拉取的资源消耗。   #### 注意       - 自定义配置时，最小值为 1，且仅支持配置为整数。     - 如果 Oracle 数据源配置了 **通过 Kafka 获取增量数据**，则不显示该参数。 |
       | 增量数据写入资源配置 | 您可以选择 **小**、**中**、**大** 的默认写入并发和内存，也可以自定义增量数据写入的资源配置。通过增量同步组件 Incr-Sync 的资源配置，可以限制任务增量同步阶段数据写入的资源消耗。   #### 注意       - 自定义配置时，最小值为 1，且仅支持配置为整数。     - 如果 Oracle 数据源配置了 **通过 Kafka 获取增量数据**，读取并发配置的是增量同步读取 Kafka 的并发数，默认值为 4，最小值为 1，最大值为 512，最大值建议配置为 Kafka 对应 Topic 的分区数。 |
       | 增量记录保存时间 | OMS 中增量解析文件缓存的时长。配置的保存时间越长，Store 组件需要消耗的磁盘空间越大。   #### 注意    如果 Oracle 数据源配置了 **通过 Kafka 获取增量数据**，则不支持该参数。 |
       | 增量同步起始位点 | - 如果选择迁移类型时已选择 **全量迁移**，该参数不显示。     - 如果选择迁移类型时未选择 **全量迁移**，但选择了 **增量同步**，请在此处指定迁移某个时间节点之后的数据，默认为当前系统时间。详情请参见 [设置增量同步位点](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023203)。 |
      - 反向增量

       在 **选择迁移类型** 步骤，选中 **反向增量**，才会显示该区域的参数。反向增量的配置参数和增量同步一致，您可以勾选右上角的 **复用增量同步配置**。

       ![oms19-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/oms19-zh.png)
      - 高级选项

       ![oms66-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/oms66-zh.png)

       | 参数 | 描述 |
       | --- | --- |
       | 无非空唯一键表增加隐藏列 | 迁移 Oracle 数据库的数据至 OceanBase 数据库 MySQL 兼容模式时，您需要配置是否为无非空唯一键表增加隐藏列。详情请参见 [数据迁移服务隐藏列机制说明](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023213)。   如果您选择 **否**，对于既无主键也无非空唯一键的表，任务重启或其他异常情况可能导致出现数据重复的问题，建议为所有表配置非空唯一键。 |
       | 目标端表对象存储类型 | 当目标端 OceanBase 数据库 MySQL 兼容模式为 V4.3.0 及之后版本，并且在 **选择迁移类型** 步骤，选中 **结构迁移**，才会显示该区域的参数。   目标端表对象存储类型包括 **默认**、**行存**、**列存** 和 **行列混存**，该配置用于确定结构迁移或增量同步时目标端表对象的存储类型，详情请参见 [default_table_store_format](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000642104)。   #### 说明    **默认** 选项是根据目标端参数配置自适应其他选项，是结构迁移的表对象或增量 DDL 的新增表对象根据设置的存储类型写对应的结构。 |

   如果页面的配置参数无法满足需求，您可以单击页面下方的 **参数配置**，进行更加具体的配置。如果您有已配置的任务模板或组件模板，还可以在此处进行引用。

   ![oms131-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/oms131-zh.png)
 7. 单击 **预检查**，系统对数据迁移任务进行预检查。

   在 **预检查** 环节，OMS 会检查数据库用户的读写权限、数据库的网络连接等是否符合要求。全部检查任务均通过后才能启动数据迁移任务。

      - 您可以排查并处理问题后，重新执行预检查，直至预检查成功。
      - 您也可以单击失败预检查项操作列中的 **跳过**，会弹出对话框提示您跳过本操作的具体影响，确认可以跳过后，请单击对话框中的 **确定**。
 8. 单击 **启动任务**。如果您暂时无需启动任务，请单击 **保存**，跳转至数据迁移任务的详情页面，您可以根据需要进行手动启动。

   您可以单击数据迁移详情页面右上角的 **配置校验任务**，对比源端数据库和目标端数据库之间的数据差异。详情请参见 [新建数据校验任务](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023087)。

   OMS 支持在数据迁移任务运行过程中修改迁移对象，详情请参见 [查看和修改迁移对象](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023142)。数据迁移任务启动后，会根据选择的迁移类型依次执行，详情请参见 [查看数据迁移任务的详情](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023137) 中《查看迁移详情》模块的内容。

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