---
title: "新建 Oracle 至 DataHub 的数据同步项目 | OceanBase 文档中心"
description: 新建 Oracle 至 DataHub 的数据同步项目 阿里云流数据处理平台 DataHub 是流式数据（Streaming Data）的处理平台，提供对流式数据的发布、订阅和分发功能，让您可以轻松构建基于流式数据的分析和应用。 前提条件 已创建 Oracle 数据源，并确认连通性，需要确定 Oracle 账号权限满…
---
切换语言

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

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

# 新建 Oracle 至 DataHub 的数据同步项目

更新时间：2023-06-25 10:18:37

阿里云流数据处理平台 DataHub 是流式数据（Streaming Data）的处理平台，提供对流式数据的发布、订阅和分发功能，让您可以轻松构建基于流式数据的分析和应用。

## 前提条件

- 已创建 Oracle 数据源，并确认连通性，需要确定 Oracle 账号权限满足用户权限说明。详情请参见 [添加 Oracle 数据源](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-10000000000373941)。
 - 已创建 DataHub 数据源，并确认连通性。详情请参见 [添加 DataHub 数据源](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-10000000000373940)。
 - OMS 支持自动创建 Topic。如果您需要自行创建，请提前在 DataHub 控制台准备。详情请参见 [创建 Topic](https://help.aliyun.com/document_detail/158792.html)。

## 使用限制

- 如果 Oracle 使用生成列，OMS 当前不会解析生成列的实际数值。因此，同步至 DataHub 时，对应的值为 NULL。
 - 如果 Oracle 使用了 CLOB、BLOB、RAW 和 LONG RAW 等数据类型，涉及这些字段的 INSERT 操作会在 DataHub 接收到 INSERT 和 UPDATE 消息。
 - 当一条链路意外中断进行断点续传时，可能会存在部分重复数据（最近一分钟内），需要下游具备排重能力。

## Oracle 至 DataHub 同步支持范围

同步 Oracle 的数据至 DataHub，支持增量 DML（INSERT、UPDATE 和 DELETE）。

下表为 Oracle DataType 的支持情况。

| 数据类型 | 映射 DataHub 类型 |
| --- | --- |
| CHAR | STRING |
| NCHAR | STRING |
| VARCHAR2 | STRING |
| NVARCHAR2 | STRING |
| CLOB | STRING |
| NCLOB | STRING |
| BLOB | STRING |
| NUMBER | DECIMAL |
| BINARY_FLOAT | FLOAT64 |
| BINARY_DOUBLE | FLOAT64 |
| DATE | STRING |
| TIMESTAMP | STRING |
| TIMESTAMP WITH TIME ZONE | STRING |
| TIMESTAMP WITH LOCAL TIME ZONE | STRING |
| INTERVAL YEAR TO MONTH | STRING |
| INTERVAL DAY TO SECOND | STRING |
| BFILE | STRING |
| LONG | STRING |
| RAW | STRING |
| LONG RAW | STRING |
| ROWID | STRING |
| UROWID | STRING |

## 检查和修改 Oracle 源端的配置

1. 检查 Oracle 源端字符集的配置

   源端为 Oracle 时，OMS 支持字符集配置为 AL32UTF8、AL16UTF16、ZHS16GBK 或 GB18030 的数据同步。
 2. 检查和修改 Oracle 实例的系统配置

      1. 在 Oracle 源端开启 archivelog 和补偿日志。
      2. 在 Oracle 中，以 sys 用户执行以下查询。
      3. 确认 log_mode 配置为 archivelog，supplemental_log 相关的配置均为 yes 或 implicit。如果不符合，请根据如下方法修改 Oracle 源数据库系统。

        ```sql
        ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
        ALTER DATABASE ADD SUPPLEMENTAL LOG DATA(PRIMARY KEY) COLUMNS;
        ALTER DATABASE ADD SUPPLEMENTAL LOG DATA(UNIQUE) COLUMNS;

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

        ```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%';

        ALTER SYSTEM SET "_LOG_PARALLELISM_MAX" =1 SCOPE=SPFILE;

        ```
      5. 完成上述操作后，重启实例。

## 补充 Properties

如果自行创建 Topic，启动同步任务前，请在 DataHub 的 Schema 中补充下述 Properties。如果由 OMS 自动创建 Topic 和结构同步，OMS 会自动补充下述 Properties。

| 名称 | 类型 | 含义 |
| --- | --- | --- |
| oms_timestamp | STRING | 发生变更的时间。 |
| oms_table_name | STRING | 源端为表时，变更表名。 |
| oms_database_name | STRING | 源端为数据库时，变更库名。 |
| oms_sequence | STRING | 变更序列号。承诺相同机器上，同一个主键不断递增。 |
| oms_record_type | STRING | 变更类型，包括 UPDATE、INSERT 和 DELETE。 |
| oms_is_before | STRING | 如果是 UPDATE 类型，Y 表示该条数据为变更前的数据。 |
| oms_is_after | STRING | 如果是 UPDATE 类型，Y 表示该条数据为变更后的数据。 |

## 操作步骤

1. 新建同步项目。

      1. 登录 OMS 控制台。
      2. 在左侧导航栏，单击 **数据同步** 。
      3. 在 **数据同步** 页面，单击 **新建同步项目** > **新建数据库到大数据同步项目** 。
 2. 选择源和目标。

      1. 在 **选择源和目标** 页面，选择 **同步类型** 为 **Oracle→DataHub**。
      2. 设置 **同步链路名称**。

        **说明**

        同步链路名称支持中文、数字和英文字母的组合，且不得超过 500 个字符。
      3. 从 **源端** 下拉列表中选择 Oracle 数据源。
      4. **表类型** 默认为 **单表**，选择需要同步的 **数据表**。在左侧选中需要同步的数据表，单击 **>**，将其添加至右侧列表中。
      5. 设置 **目标端**。

        | 参数 | 描述 |
        | --- | --- |
        | 数据源 | 从下拉列表中选择已创建的 DataHub 数据源。 您可以单击 **查看数据源** ，进入 **数据源列表** 页面查看所有已创建的数据源。 |
        | Topic | 输入一个已存在的 Topic。如果您未创建 Topic，可以直接输入 Topic 名称，OMS 会在目标端自动创建该 Topic。 |
      6. 单击 **下一步**。
 3. 设置同步选项。

      1. 设置源端同步选项。

        | 参数 | 描述 |
        | --- | --- |
        | 源端选项 | 当前版本支持增量同步，您可以同步以下数据变更 DML： *Insert* Delete * Update |
        | 同步起始位点 | 指定同步某个时间节点之后的数据。 您可以选择时间节点，也可以直接输入时间戳。 该位点与当前归档日志的保留时间密切相关。如果无特殊要求，可以从当前位点开始启动。 |
      2. 单击 **下一步** 。
 4. 预检查并启动数据同步任务。

   系统会自动完成数据同步的预检查。在 **预检查** 环节，OMS 会检测和目标端的连接情况。如果预检查报错，请排查并处理问题后，重新执行预检查，直至预检查成功。

   预检查成功后，请单击 **保存** 并 **启动任务** ，OMS 会直接创建数据同步任务。您也可以在左侧导航栏，单击 **数据同步** ，在 **数据同步** 页面手动启动该数据同步任务。

如果中途接入数据的过程出错（通常由于网络不通或进程启动过慢导致），您可以进入任务的详情页面，单击右上角的 **恢复** （此处为了延时，使用暂停再恢复）。

您还可以在该页面查看 **延时时间** 和 **查看组件监控** 。

![查看组件](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8745324161/p240966.png)

## 验证数据

在数据库 INSERT/UPDATE 后，验证数据如下。

```sql
INSERTINTO bt.oms_source_test(oms_number,oms_varchar2, oms_char, oms_nvarchar2, oms_long_raw, oms_clob, oms_nclob,oms_raw, oms_float, oms_binary_double, oms_binary_float, oms_date, oms_blob,oms_timestamp, oms_tp_with_time_zone, oms_tp_with_local_timezone,oms_interval_year_to_month, oms_interval_day_to_second, oms_bfile)values(4, '1', '1', '1', '123', '1234', '12345', '123456', 1.3, 1.234, 1.23, sysdate, '12345', sysdate, sysdate, sysdate, numtoyminterval(5, 'year'), to_dsinterval('10 02:03:02.3312'), bfilename('/tmp/', 'test.dmp'));

UPDATE bt.OMS_SOURCE_TESTSET OMS_VARCHAR2 ='update'WHERE OMS_NUMBER =4 DELETEFROM bt.OMS_SOURCE_TESTWHERE OMS_NUMBER=4

```

![验证数据](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8877424161/p240975.png)

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