すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for OceanBase (Deprecated):ALTER TABLE の非互換性

最終更新日:Jan 19, 2025

このトピックでは、Oracle データベースで実行された ALTER TABLE DDL 操作がデータ転送サービスの DDL 同期コンポーネントによって変換できるものの、Oracle データベースから OceanBase Database の Oracle テナントへのデータ移行中に OceanBase Database の Oracle テナントでは実行できないシナリオについて説明します。

列の型の変更

  • Oracle データベースと OceanBase Database の Oracle テナントでは、制約付き列の型を変更する場合のターゲット列型に異なる制限があります。詳細については、「制約付き列の型を変更する」をご参照ください。

  • Oracle データベースと OceanBase Database の Oracle テナントでは、制約なし列の型を変更する場合のターゲット列型に異なる制限があります。詳細については、「制約なし列の型を変更する」をご参照ください。

列の長さの変更

  • Oracle データベースと OceanBase Database の Oracle テナントでは、制約付き列の型を変更する場合のターゲット列型に異なる制限があります。詳細については、「制約付き列の長さを変更する」をご参照ください。

  • Oracle データベースと OceanBase Database の Oracle テナントでは、制約なし列の型を変更する場合のターゲット列型に異なる制限があります。詳細については、「制約なし列の長さを変更する」をご参照ください。

新しいパーティションの下にサブパーティションを自動的に作成する

ALTER TABLE DDL 文を使用して作成された新しいパーティションの下に、元のスキーマにある既存のサブパーティションテンプレートに基づいてサブパーティションを自動的に作成することのサポートについて、以下の点に注意してください。

  • Oracle データベースでサポートされています。

  • OceanBase Database の 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'));

新しいパーティションの下にユーザー定義のサブパーティションを作成する

ALTER TABLE DDL 文を使用して作成された新しいパーティションの下に、元のスキーマにある既存のサブパーティションテンプレートを指定してユーザー定義のサブパーティションを作成することのサポートについて、以下の点に注意してください。

  • Oracle データベースでサポートされています。サブパーティションテンプレートは無視されます。ユーザー定義のサブパーティションのみが作成されます。

  • OceanBase Database の 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));