プライマリ・コンテンツに移動
Oracle® Database VLDBおよびパーティショニング・ガイド
12c リリース1 (12.1)
B71291-10
目次へ移動
目次
索引へ移動
索引

前
次

複数のパーティションのマージ

2つ以上のパーティションまたはサブパーティションのコンテンツを新しい1つのパーティションまたはサブパーティションにマージし、ALTER TABLE SQL文のMERGE PARTITIONSおよびMERGE SUBPARTITIONS句を使用して元のパーティションまたはサブパーティションを削除できます。MERGE PARTITIONSおよびMERGE SUBPARTITIONS句は、MERGE PARTITIONおよびMERGE SUBPARTITION句と同義です。

たとえば、次のSQL文は、4つのパーティションを1つのパーティションにマージし、マージされた4つのパーティションを削除します。

ALTER TABLE t1 MERGE PARTITIONS p01, p02, p03, p04 INTO p0;

複数のレンジ・パーティションをマージする場合、パーティションは隣接し、パーティション・バウンド値の昇順で指定する必要があります。新しいパーティションは、元のパーティションの最高位のパーティション上限を継承します。

TO構文を使用して複数のレンジ・パーティションをマージする場合、マージする最下位および最高位のパーティションを指定できます。指定されたパーティション間のすべてのパーティション(指定されたパーティションを含む)は、ターゲット・パーティションにマージされます。この構文は、リストおよびシステム・パーティションに使用できません。

たとえば、次のSQL文は、パーティションp01からp04をパーティションp0にマージします。

ALTER TABLE t1 MERGE PARTITIONS p01 TO p04 INTO p0;

パーティションの順序が想定されていないため、マージするリスト・パーティションおよびシステム・パーティションは隣接する必要がありません。複数のリスト・パーティションをマージする場合、結果のパーティションの値リストは、マージするすべてのパーティションのパーティション値リストをまとめたものです。他のリスト・パーティションとマージするDEFAULTリスト・パーティションは、DEFAULTパーティションになります。

コンポジット・パーティション表の複数のパーティションをマージする場合、結果の新しいパーティションは、存在する場合にサブパーティション・テンプレートからサブパーティションの説明を継承します。サブパーティション・テンプレートが存在しない場合、新しいパーティションのレンジ・サブパーティションから1つのMAXVALUEサブパーティションまたはリスト・パーティションから1つのDEFAULTサブパーティションが作成されます。コンポジット・パーティション表の複数のサブパーティションをマージする場合、マージするサブパーティションは同じパーティションに属する必要があります。

複数のパーティションをマージする場合、ローカルおよびグローバル索引操作および指定されていない物理属性を継承するセマンティックは、2つのパーティションのマージで同じです。

次のSQL文では、レンジ・パーティション表salesの4つのパーティションがマージされます。最も古い年の4四半期に対応するこれらの4つのパーティションは、その年の売上データ全体を含む単一のパーティションにマージされます。

ALTER TABLE sales
  MERGE PARTITIONS sales_q1_2009, sales_q2_2009, sales_q3_2009, sales_q4_2009
  INTO PARTITION sales_2009;

前述のSQL文を次のSQL文にリライトしても、同じ結果を取得できます。

ALTER TABLE sales
  MERGE PARTITIONS sales_q1_2009 TO sales_q4_2009
  INTO PARTITION sales_2009;