数据治理中心 DATAARTS STUDIO-约束与限制:Oracle源端数据源约束

时间:2025-06-17 16:36:21

Oracle源端数据源约束

类别

说明

适用版本

10、11、12、19版本。

权限要求

Oracle 库需要开启归档日志,同时需表查询权限和日志解析权限,开通对应权限详情请参考Oracle数据源如何开通归档日志、查询权限和日志解析权限?

同步对象范围

  • 支持同步的DML:包括INSERT、UPDATE、DELETE。
  • 支持同步的DDL:新增列。
  • 仅支持同步主键表。
  • 不支持视图、外键、存储过程、触发器、函数、事件、虚拟列、唯一约束、唯一索引、外键索引、Check约束的同步。
  • 自动建表支持同步表结构、普通索引、约束(主键、空、非空)、注释。

数据库限制

源端数据库中的库名、表名、字段名不能包含:.-以及非ASCII字符,建议尽量使用常规字符避免任务失败。

使用限制

  • 驱动包安装:
  • 通用:
    • 实时同步过程中,不支持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为源端时,支持连接单实例的oracle备库,不支持RAC集群备库,备库读取时只支持读取archive log,不支持读取standby log。连接备库时建议oracle 设置定时归档,减少数据同步时延。
    • 网络带宽建议大于100M/s。
  • 全量同步阶段:

    任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。

  • 增量同步阶段:
    • 支持DML:包括INSERT、UPDATE、DELETE。
    • 支持的DDL:新增列。
    • 不支持混合分区表。混合分区表中的外部分区数据变更不产生DML日志,增量数据同步时无法获取变更信息,会存在数据不一致的风险。
    • 表名和列名长度限制为30个字符。Oracle日志读取采用Oracle logminer,logminer限制了表名和列名在30个字符以内,详情请参见LogMiner分析日志相关介绍
    • 增量启动时,选择时间位点启动,请确保oracle数据库时区和数据库所在主机时区一致,才能保证增量位点的准确性。
    • 增量同步不支持Oracle上的分布式事务(XA事务)和PARALLEL DML。
    • 增量阶段不支持Oracle字符集扩展的字符,标准字符集无法解析Oracle自定义扩展字符。
    • 增量同步不支持同步或迁移触发器,需要关闭目标Oracle的触发器。
    • 增量同步不支持同步或迁移存在外键约束的数据。
    • 增量同步不支持同步或迁移使用Oracle Data Pump向源库导入的数据。

其他限制

  • 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。
    • 目标数据库多的列若是非空且没有默认值,源数据库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。
    • 目标数据库多的列设置固定默认值,且有唯一约束。源数据库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。
  • 当使用PDB数据库同步时,由于Oracle LogMiner组件的限制,增量同步时必须打开全部PDB。
  • Oracle为源端时全量+增量或增量作业,如果需要同步PDB库中的表,Oracle连接中需要填写CDB库的用户名和密码,不能为PDB用户名和密码,因为Oracle日志统一在存储在CDB库中,同时Oracle logminer只能运行在CDB库中。
  • 全量和增量同步不支持隐藏列(UNUESD, INVISIBIE)。
  • DDL删除表时需执行“drop table test_table_name purage命令”。

    Oracle数据库默认删除表是一个高危操作,执行"drop table test_table_name"命令时, Oracle会将该命令转换为“rename table test_table_name as xxxxx”, 即将该表重新命名为Oracle临时表空间中的一张待处理表,原表实际并未删除,migration默认直接忽略该语法;Oracle删除表语句"drop table test_table_name purage"会彻底删除表,migration会自动识别删除表并下发给下游。

  • 不支持无主键表。
  • 不支持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模式。
support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_7762.html