同步 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 不支援同步。