同步 DDL 支持的范围
创建表
CREATE TABLE
重要包括分区表,不包括
CREATE TABLE AS SELECT
。删除表
DROP TABLE
清空表
TRUNCATE TABLE
添加分区
ADD PARTITION
支持添加一级分区和二级分区。其中一级和二级分区均支持添加 Range/List 分区,不支持添加 Hash 分区。
删除分区
DROP PARTITION
支持删除单个或多个分区,以及删除二级分区。
清空分区
TRUNCATE PARTITION
支持清空单个或多个分区,以及清空二级分区。
表重命名
RENAME TABLE
或ALTER 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 不支持同步。