本文為您介紹遷移 Oracle 資料庫的資料至 OceanBase 資料庫 Oracle 租戶時,Oracle 資料庫執行的 ALTER TABLE DDL 支援被資料轉送的 DDL 同步群組件轉換,但 OceanBase 資料庫 Oracle 租戶不支援執行的情境。
修改列的類型
Oracle 資料庫和 OceanBase 資料庫 Oracle 租戶的被修改列在有約束的情況下,對修改後的欄位類型的限制有所不同。詳情請參見 有約束的列修改類型。
Oracle 資料庫和 OceanBase 資料庫 Oracle 租戶的被修改列在沒有約束的情況下,對修改後的欄位類型的限制有所不同。詳情請參見 沒有約束的列修改類型。
修改列的長度
Oracle 資料庫和 OceanBase 資料庫 Oracle 租戶的被修改列在有約束的情況下,對修改後的欄位類型的限制有所不同。詳情請參見 有約束的列修改長度。
Oracle 資料庫和 OceanBase 資料庫 Oracle 租戶的被修改列在沒有約束的情況下,對修改後的欄位類型的限制有所不同。詳情請參見 沒有約束的列修改長度。
在新增的一級分區下自動建立二級分區
原表結構中存在二級分區模板,通過 ALTER TABLE DDL
新增一級分區時,在新增的一級分區下自動建立二級分區,Oracle 資料庫和 OceanBase 資料庫 Oracle 租戶存在如下區別:
Oracle 資料庫:支援。
OceanBase 資料庫 Oracle 租戶:不支援自動建立二級分區。
樣本如下:
CREATE TABLE SMNOTIFY2
( "REGION" NUMBER(4,0) NOT NULL ENABLE,
"INTIME" DATE DEFAULT sysdate NOT NULL ENABLE
)
PARTITION BY RANGE ("INTIME")
SUBPARTITION BY LIST ("REGION")
SUBPARTITION TEMPLATE (
SUBPARTITION "L_23" VALUES ( 23 ),
SUBPARTITION "L_24" VALUES ( 24 ))
(PARTITION "P_R_202208" VALUES LESS THAN (TO_DATE(' 2022-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION "P_R_202209" VALUES LESS THAN (TO_DATE('2022-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION "P_R_PMAX" VALUES LESS THAN (TO_DATE('2038-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')));
ALTER TABLE SMNOTIFY2 ADD PARTITION new_partition1 VALUES LESS THAN(TO_DATE('2043-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN'));
新增一級分區 DDL 中存在自訂二級分區
原表結構中存在二級分區模板,通過 ALTER TABLE DDL 新增一級分區和自訂的二級分區的操作,Oracle 資料庫和 OceanBase 資料庫 Oracle 租戶存在如下區別:
Oracle 資料庫:支援。二級模板會被忽略不建立,只建立自訂的二級分區。
OceanBase 資料庫 Oracle 租戶:不支援。
樣本如下:
CREATE TABLE SMNOTIFY3
( "REGION" NUMBER(4,0) NOT NULL ENABLE,
"INTIME" DATE DEFAULT sysdate NOT NULL ENABLE
)
PARTITION BY RANGE ("INTIME")
SUBPARTITION BY LIST ("REGION")
SUBPARTITION TEMPLATE (
SUBPARTITION "L_23" VALUES ( 23 ))
(PARTITION "P_R_202208" VALUES LESS THAN (TO_DATE(' 2022-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION "P_R_202209" VALUES LESS THAN (TO_DATE('2022-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION "P_R_PMAX" VALUES LESS THAN (TO_DATE('2038-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')));
ALTER TABLE SMNOTIFY3 ADD PARTITION new_partition2 VALUES LESS THAN(TO_DATE('2044-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))(SUBPARTITION sp6 VALUES (30));