OceanBase 数据库 Oracle 租户至 Oracle 数据库的同步 DDL

同步 DDL 支持的范围

  • 创建表CREATE TABLE

    重要

    包括分区表,不包括CREATE TABLE AS SELECT

  • 删除表DROP TABLE

  • 清空表TRUNCATE TABLE

  • 添加分区ADD PARTITION

    支持添加一级分区和二级分区。其中一级和二级分区均支持添加 Range/List 分区,不支持添加 Hash 分区。

  • 删除分区DROP PARTITION

    支持删除单个或多个分区,以及删除二级分区。

  • 清空分区TRUNCATE PARTITION

    支持清空单个或多个分区,以及清空二级分区。

  • 表重命名RENAME TABLEALTER TABLE RENAME

  • 添加列ALTER TABLE ADD COLUMN

  • 修改列ALTER TABLE MODIFY COLUMN

    重要

    仅支持修改列至更大的长度,不支持修改列的类型。

  • 创建索引CREATE INDEX

  • 删除索引DROP INDEX

  • 添加和删除表或列的注释

同步 DDL 的使用限制

  • 除支持的同步 DDL 类型外,其它类型均不支持。如果需要同步的表涉及不支持的同步 DDL 类型,数据迁移项目可能会中断并造成数据不一致的问题,且无法恢复。

  • 不能频繁对一张表进行 DDL 操作,否则可能导致项目异常或造成数据问题,且无法恢复。

  • RENAME TABLE前后的表名,必须全在需要同步的表中。

  • 删除用户未命名的 PK,对应删除的是 Oracle 系统命名的约束(SYS_C开头的命名方式)。如果是 Oracle 数据库至 OceanBase 数据库等库到库的数据迁移或数据同步,OceanBase 数据库上的 PK 名称和 Oracle 数据库的不同,因此无法在 OceanBase 数据库中删除。

  • 迁移 OceanBase 数据库 Oracle 租户的数据至 Oracle 数据库时,不支持导致表从有主键表变为无主键表的 DDL 操作。

    • 如果 OceanBase 数据库 Oracle 租户中存在PK,则支持所有的 DDL 操作。

    • 如果 OceanBase 数据库 Oracle 租户中仅存在NOT NULL UK,则不支持导致 OceanBase 数据库失去NOT NULL UK的 DDL 操作。

  • 存在CASE WHEN INDEX的建表 DDL 不支持同步。