
# Oracle同步到DMS Kafka作业配置
#### 支持的源端和目的端数据库版本
表1支持的数据库版本 
| 源端数据库                    | 目的端数据库             |
|:---|:---|
| Oracle数据库（10、11、12、19版本） | Kafka集群（2.7、3.x版本） |
   
#### 数据库账号权限要求
在使用Migration进行同步时，源端和目的端所使用的数据库账号需要满足以下权限要求，才能启动实时同步任务。不同类型的同步任务，需要的账号权限也不同，详细可参考下表进行赋权。
表2数据库账号权限 
| 类型名称      | 权限要求                                                                                                                                                          |
|:---|:---|
| 源数据库连接账号  | Oracle 库需要开启归档日志，同时需表查询权限和日志解析权限，开通对应权限详情请参考[Oracle数据源如何开通归档日志、查询权限和日志解析权限？](https://support.huaweicloud.com/dataartsstudio_faq/dataartsstudio_03_1635.html)。 |
| 目标数据库连接账号 | Kafka开启密文接入场景下，所配置用户需要有发布和订阅Topic的权限，其余场景无特殊权限要求。 说明：                                         |
   
#### 支持的同步对象范围
在使用Migration进行同步时，不同类型的链路，支持的同步对象范围不同，详细情况可参考下表。
表3同步对象范围 
| 类型名称   | 使用须知                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|
| 同步对象范围 | - 支持同步的DML：包括INSERT、UPDATE、DELETE。  - 支持同步的DDL：新增列， 其余DDL暂时不支持，如删除列，删除分区等。  - 仅支持同步有主键表。  - 不支持同步视图、外键、存储过程、触发器、函数、事件、虚拟列、唯一约束和唯一索引。  - 自动建表支持同步表结构、普通索引、约束（主键、空、非空）、注释。   |
   
#### 注意事项
除了数据源版本、连接账号权限及同步对象范围外，您还需要注意的事项请参见下表。
表4注意事项 
| 类型名称  | 使用和操作限制                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|
| 数据库限制 | - 源端数据库中的库名、表名、字段名不能包含：.-以及非ASCII字符，建议尽量使用常规字符避免任务失败。  - 仅支持使用默认证书的DMS Kafka开启SASL_SSL认证进行数据同步；其余类型Kafka不支持开启SASL_SSL认证进行同步。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 使用限制  | 通用： - 实时同步过程中，不支持IP、端口、账号、密码修改。  - Oracle归档日志建议保留3天以上。  - 禁止对Oracle源库做resetlogs操作，否则会导致数据无法同步且任务无法恢复。  - 不支持修改源数据库Oracle用户名（SCHEMA名），包括11.2.0.2之前版本通过修改USER$字典表方式及11.2.0.2之后通过ALTER USER username RENAME TO new_username修改SCHEMA名称的场景。  - Oracle为源端时，暂不支持迁移CLOB、NCLOB和BLOB类型。  - Oracle为源端时， 支持Oracle RAC集群， Oracle RAC集群作为源端时，建议使用ScanIP+ serviceName的方式创建Oracle连接。  - Oracle为源端时，支持连接单实例的oracle备库，不支持RAC集群备库，备库读取时只支持读取archive log，不支持读取standby log。连接备库时建议oracle 设置定时归档，减少数据同步时延。  - 网络带宽建议大于100M/s。   全量同步阶段： 任务启动和全量数据同步阶段，请不要在源数据库执行DDL操作，否则可能导致任务异常。 增量同步阶段： - 支持DML：包括INSERT、UPDATE、DELETE。  - 支持的DDL：新增列， 其余DDL暂时不支持，如删除列，删除分区等。  - 不支持混合分区表。混合分区表中的外部分区数据变更不产生DML日志，增量数据同步时无法获取变更信息，会存在数据不一致的风险。  - 表名和列名长度限制为30个字符。Oracle日志读取采用Oracle logminer，logminer限制了表名和列名在30个字符以内，详情请参见[LogMiner分析日志相关介绍](https://docs.oracle.com/en/database/oracle/oracle-database/21/sutil/oracle-logminer-utility.html#GUID-7594F0D7-0ACD-46E6-BD61-2751136ECDB4)。  - 增量启动时，选择时间位点启动，请确保oracle数据库时区和数据库所在主机时区一致，才能保证增量位点的准确性。  - 增量同步不支持Oracle上的分布式事务（XA事务）和PARALLEL DML。  - 增量阶段不支持Oracle字符集扩展的字符，标准字符集无法解析Oracle自定义扩展字符。  - 增量同步不支持同步或迁移触发器，需要关闭目标Oracle的触发器。  - 增量同步不支持同步或迁移存在外键约束的数据。  - 增量同步不支持同步或迁移使用Oracle Data Pump向源库导入的数据。   常见故障排查： 在任务创建、启动、全量同步、增量同步、结束等过程中，如有遇到问题，可先参考[常见问题](https://support.huaweicloud.com/dataartsstudio_faq/dataartsstudio_03_7594.html)章节进行排查。                                                                                |
| 其他限制  | - Migration自动建表时，源库中char、varchar、nvarchar、enum、set字符类型长度在目标库会按照字节长自动扩大（因为DWS目标库为字节长）。  - Oracle为源端时全量+增量或增量作业，如果需要同步PDB库中的表，Oracle连接中需要填写CDB库的用户名和密码，不能为PDB用户名和密码，因为Oracle日志统一存储在CDB库中，同时Oracle logminer只能运行在CDB库中。  - DDL删除表时需执行"drop table test_table_name purge命令"。 Oracle数据库默认删除表是一个高危操作，执行"drop table test_table_name"命令时, Oracle会将该命令转换为"rename table test_table_name as xxxxx", 即将该表重新命名为Oracle临时表空间中的一张待处理表，原表实际并未删除，migration默认直接忽略该语法；Oracle删除表语句"drop table test_table_name purge"会彻底删除表，migration会自动识别删除表并下发给下游。     - 全量和增量同步不支持隐藏列（UNUSED, INVISIBLE）。  - 当使用PDB数据库同步时，由于Oracle LogMiner组件的限制，增量同步时必须打开全部PDB。  - 不支持无主键表。  - 不支持DCL操作。  - 不支持同步或迁移连续的RENAME TABLE操作，否则可能会导致任务失败。  - 不支持同步或迁移全局临时表（任务正常运行）。  - 不支持同步或迁移含有默认值函数的表，否则会导致数据不一致。  - 不支持同步或迁移默认值中含有表达式的表。  - 不支持同步或迁移外部表。  - 不支持同步或迁移计算列、加密列。  - 不支持同步或迁移虚拟私有数据库（Virtual Private Database, VPD）。  - 不支持同步或迁移dbms_scheduler和dbms_job创建的job。  - 不支持同步或迁移Schema名称的变更操作。  - 不支持同步或迁移嵌套表，否则会导致任务报错。  - 不支持同步或迁移物化视图（Materialized View）。  - 不支持同步或迁移包含关键字或者特殊字符的属性名的DDL操作。  - 不支持ROWID变更操作（例如split partition、table move、table shrink、move partition key），否则可能会导致数据不一致或任务失败。  - 不支持Secure Sockets Layer（SSL）加密传输模式。  - 不支持Oracle Label Security模式。   |
   
#### 操作步骤
本小节以Oracle到DMS Kafka的实时同步为示例，介绍如何配置Migration实时集成作业。配置作业前请务必阅读[使用前自检概览](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_7621.html)， 确认已做好所有准备工作。
1. 参见[新建实时集成作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1603.html)创建一个实时集成作业并进入作业配置界面。
2. 选择数据连接类型：源端选Oracle，目的端选DMS Kafka。 
   图1选择数据连接类型   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002160233916.png "点击放大")
   
   
3. 选择集成作业类型：同步类型默认为实时，同步场景包含整库场景。 
   图2选择集成作业类型   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002209491913.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   同步场景相关介绍请参见[同步场景](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1601.html#dataartsstudio_01_1601__section1644461120563)。
   
   
4. 配置网络资源：选择已创建的Oracle、DMS Kafka数据连接和已配置好网络连接的migration资源组。 
   图3选择数据连接及migration资源组   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002134336073.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   无可选数据连接时，可单击"新建"跳转至管理中心数据连接界面，单击"创建数据连接"创建数据连接，详情请参见[配置DataArts Studio数据连接参数](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0009.html)进行配置。
   无可选migration资源组时，可单击"新建"跳转至购买migration资源组页面创建migration资源组配置，详情请参见[购买创建数据集成资源组增量包](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0145.html)进行配置。
   
   
5. 检测网络连通性：数据连接和migration资源组配置完成后需要测试整个迁移任务的网络连通性，可通过以下方式进行数据源和migration资源组之间的连通性测试。 
   - 单击展开"源端配置"触发连通性测试，会对整个迁移任务的连通性做校验。
   
   - 单击源端和目的端数据源和migration资源组中的"测试"按钮进行检测。
     ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
     网络连通性检测异常可先参考[数据源和资源组网络不通如何排查？](https://support.huaweicloud.com/dataartsstudio_faq/dataartsstudio_03_7595.html)章节进行排查。
     
   
   
   
   
6. 配置源端参数。 
   各同步场景下选择需要同步库表的方式请参考下表。
   表5选择需要同步的库表 
   | 同步场景 | 配置方式                                                                                                                                                          |
   |:---|:---|
   | 整库   | 选择需要迁移的Oracle库表。 图4选择库表 ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002152044826.png "点击放大") 库与表均支持自定义选择，即可选择一库一表，也可选择多库多表。 |
      
   
   
7. 配置目的端参数。 
   图5Kafka目的端配置项   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002134100165.png "点击放大")
   - 目标Topic名称规则。 配置源端Oracle库表与目的端Kafka Topic的映射规则。
     
   
   - 同步kafka partition策略 支持以下三种投递策略将源端的数据按规则同步到Kafka Topic的特定Partition：
     - 全部投递到Partition 0。
     
     - 按库名+表名的hash值投递到不同Partition。
     
     - 按表的主键值hash值投递到不同的Partition。
       ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
       源端无主键情况下，目的端默认投递到partition 0。
       
      
   
   - 新建Topic的Partition数量 设定目的端Kafka无对应Topic时，Migration自动建Topic的分区数量，默认为3。
     
   
   - Kafka目标端属性配置 支持设置Kafka的配置项，需要增加 properties. 前缀，作业将自动移除前缀并传入底层Kafka客户端，具体参数可参考[Kafka官方文档](https://kafka.apache.org/)中的配置说明。
     
   
   
   
   
8. 刷新源表和目标表映射，检查映射关系是否正确。 
   图6源表与目标表映射   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002195766629.png "点击放大")
   
   
9. 配置任务属性。 
   表6任务配置参数说明 
   | 参数          | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 默认值                 |
   |:---|:---|:---|
   | 执行内存        | 作业执行分配内存，跟随处理器核数变化而自动变化。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 8GB                 |
   | 处理器核数       | 范围：2-32。 每增加1处理核数，则自动增加4G执行内存和1并发数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 2                   |
   | 并发数         | 作业执行支持并发数。该参数无需配置，跟随处理器核数变化而自动变化。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 1                   |
   | 自动重试        | 作业失败时是否开启自动重试。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 否                   |
   | 最大重试次数      | "自动重试"为是时显示该参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 1                   |
   | 重试间隔时间      | "自动重试"为是时显示该参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 120秒                |
   | 是否写入脏数据     | 选择是否记录脏数据，默认不记录脏数据，当脏数据过多时，会影响同步任务的整体同步速度。 - 否：默认为否，不记录脏数据。 表示不允许脏数据存在。如果同步过程中产生脏数据，任务将失败退出。   - 是：允许脏数据，即任务产生脏数据时不影响任务执行。 允许脏数据并设置其阈值时： - 若产生的脏数据在阈值范围内，同步任务将忽略脏数据（即不会写入目标端），并正常执行。  - 若产生的脏数据超出阈值范围，同步任务将失败退出。 说明： 脏数据认定标准：脏数据是对业务没有意义，格式非法或者同步过程中出现问题的数据；单条数据写入目标数据源过程中发生了异常，则此条数据为脏数据。 因此只要是写入失败的数据均被归类于脏数据。 例如，源端是VARCHAR类型的数据写到INT类型的目标列中，则会因为转换不合理导致脏数据不会成功写入目的端。用户可以在同步任务配置时，配置同步过程中是否写入脏数据，配置脏数据条数（单个分片的最大错误记录数）保证任务运行，即当脏数据超过指定条数时，任务失败退出。       | 否                   |
   | 脏数据策略       | "是否写入脏数据"为是时显示该参数，当前支持以下策略： - 不归档：不对脏数据进行存储，仅记录到任务日志中。  - 归档到OBS：将脏数据存储到OBS中，并打印到任务日志中。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 不归档                 |
   | 脏数据写入连接     | "脏数据策略"选择归档到OBS时显示该参数。 脏数据要写入的连接，目前只支持写入到OBS连接。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | -                   |
   | 脏数据目录       | 脏数据写入的OBS目录。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | -                   |
   | 脏数据阈值       | 是否写入脏数据为是时显示该参数。 用户根据实际设置脏数据阈值。 说明： - 脏数据阈值仅针对每个并发生效。比如阈值为100，并发为3，则该作业可容忍的脏数据条数最多为300。  - 输入-1表示不限制脏数据条数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 100                 |
   | 是否开启心跳表功能   | 选择是否开启心跳表功能，默认不开启。 如果开启心跳表，实时集成作业将会在源端创建心跳表（如果不存在的话），作业运行阶段会定时往心跳表更新数据。 - 请确保数据源实例可写。  - 请确保账号有心跳表建表权限（如果心跳表不存在）、心跳表写入权限、心跳表抽取权限。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 否                   |
   | 模式或表空间      | 心跳表所在的模式或者表空间名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | test_database       |
   | 表名          | 心跳表表名。 如果表不存在，实时集成作业将会自动创建，请确保数据源连接所对应的账号有建表权限。 用户可以手动建表，建表格式参见[心跳表格式](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_7992.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | test_hearbeat_table |
   | 心跳生成间隔      | 实时集成作业将按照此时间间隔生成并写入心跳数据到心跳表，单位秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 10                  |
   | 心跳数据写入topic | 选择是否开启心跳数据写入topic，默认不开启。 开启此选项，心跳数据将会写入目的端topic中，当前选项只针对Kafka为目的端的链路生效。 心跳数据格式参考[心跳数据格式介绍](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_7826.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 否                   |
   | 添加自定义属性     | 支持通过自定义属性修改部分作业参数及开启部分高级功能，详情可参见[任务性能调优](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_7653.html)章节。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | -                   |
      
   
   
10. 提交并运行任务。 
    作业配置完毕后，单击作业开发页面左上角"提交"，完成作业提交。
    图7提交作业   
    ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002195794681.png "点击放大")
    提交成功后，单击作业开发页面"启动"按钮，在弹出的启动配置对话框按照实际情况配置同步位点参数，单击"确定"启动作业。
    图8启动配置   
    ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002151886786.png "点击放大")
    表7启动配置参数 
    | 参数   | 说明                                                                                                                                                                                                                                                                    |
    |:---|:---|
    | 同步模式 | - 增量同步：从指定时间位点开始同步增量数据。  - 全量+增量：先同步全量数据，随后实时同步增量数据。   |
    | 时间   | 增量同步需要设置该参数，指示增量同步起始的时间位点。 说明： 配置的位点时间早于Binlog日志最早时间点时，默认会以日志最新时间点开始消费。                                                                                                               |
       
    
    
11. 监控作业。 
    通过单击作业开发页面导航栏的"前往监控"按钮，可前往作业监控页面查看运行情况、监控日志等信息，并配置对应的告警规则，详情请参见[实时集成任务运维](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1622.html)。
    图9前往监控   
    ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002098536316.png "点击放大")
    
    
#### 性能调优
若链路同步速度过慢，可参见[任务性能调优](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_7653.html)章节中对应链路文档进行排查及处理。
