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;