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

PolarDB:ALTER TABLE...MERGE SUBPARTITION

最終更新日:May 28, 2024

ALTER TABLE...MERGE SUBPARTITIONコマンドを実行して、2つのサブパーティションを、元の2つのサブパーティションのすべてのコンテンツを含む新しいサブパーティションにマージできます。

説明
  • ステートメントを実行するには、テーブルの所有者であるか、テーブルに対する管理権限が必要です。
  • このSQLコマンドは、LISTパーティションテーブルとRANGEパーティションテーブルでのみ使用できます。 HASH区分テーブルでは使用できません。
  • テーブルにインデックスが存在する場合、インデックスは新しいパーティションに作成されます。

構文

ALTER TABLE table_name MERGE SUBPARTITIONS
        partition_name , partition_name 
        INTO SUBPARTITION new_part [TABLESPACE tablespace_name] ; 

パラメーター

パラメーター説明
table_nameパーティション分割テーブルの名前。 スキーマを指定できます。
partition_nameマージする2つのサブパーティションの名前。 名前はコンマ (,) で区切ります。
new_part新しいサブパーティションの名前。

パーティション名は、すべてのパーティションとサブパーティション間で一意である必要があります。

tablespace_name新しいサブパーティションが存在するテーブルスペースを指定します。

テーブルスペースを指定しない場合、サブパーティションはデフォルトのテーブルスペースに存在します。

salesという名前のパーティションテーブルを作成し、テストデータをテーブルに挿入します。 例:

テーブルの販売を作成する
(
  dept_no number,   
  part_no varchar2,
  country varchar2(20),
  date date,
  金額番号
)
リストによるパーティー (国)
  範囲によるサブパーティー (日付)
(
  PARTITION europe VALUES('FRANCE', 'ITALY')
    (
      SUBPARTITION europe_2011 
        VALUES LESS THAN('2012-Jan-01'),
      SUBPARTITION europe_2012 
        VALUES LESS THAN('2013-Jan-01')
    ),
  PARTITION asia VALUES('INDIA', 'PAKISTAN')
    (
      SUBPARTITION asia_2011 
        VALUES LESS THAN('2012-Jan-01'),
      SUBPARTITION asia_2012 
        VALUES LESS THAN('2013-Jan-01')
    ),
  PARTITION americas VALUES('US', 'CANADA')
    (
      SUBPARTITION americas_2011 
        VALUES LESS THAN('2012-Jan-01'),
      SUBPARTITION americas_2012 
        VALUES LESS THAN('2013-Jan-01')
    )
);
SELECT partition_name、subpartition_name、high_value FROM ALL_TAB_SUBPARTITIONSここでtable_name = 'SALES';
販売価値に挿入する
  (10, '4519b', 'FRANCE', '17-Jan-2012', '45000'),
  (20, '3788a', 'INDIA', '01-Mar-2012', '75000'),
  (40, '9519b', 'US', '12-Apr-2012', '145000'),
  (20, '3788a', 'PAKISTAN', '04-Jun-2012', '37500'),
  (40, '4577b', 'US', '11-Nov-2012', '25000'),
  (30, '7588b', 'CANADA', '14-Dec-2012', '50000'),
  (30, '9519b', 'CANADA', '01-Feb-2012', '75000'),
  (30, '4519b', 'CANADA', '08-Apr-2012', '120000'),
  (40, '3788a', 'US', '12-May-2012', '4950'),
  (10, '9519b', 'ITALY', '07-Jul-2012', '15000'),
  (10, '9519a', 'FRANCE', '18-Aug-2012', '650000'),
  (10, '9519b', 'FRANCE', '18-Aug-2012', '650000'),
  (20, '3788b', 'INDIA', '21-Sept-2012', '5090'),
  (40, '4788a', 'US', '23-Sept-2012', '4950'),
  (40, '4788b', 'US', '09-Oct-2012', '15000'),
  (20, '4519a', 'INDIA', '18-Oct-2012', '650000'),
  (20、'4519b' 、'INDIA' 、'2-Dec-2012 '、'5090');
SELECT tableoid::regclass、* 販売から; 

americas_2012サブパーティションをamericas_p1_2012americas_p2_2012の2つのサブパーティションに分割します。 例:

ALTERテーブルの販売 
  分割SUBPARTITION americas_2012 
  AT('2012-Jun-01 ')
  INTO
  (
    SUBPARTITION americas_p1_2012、 
    SUBPARTITION americas_p2_2012
  );

americas_p1_2012americas_p2_2012サブパーティションを新しいサブパーティションnew_americas_2012にマージします。 例:

ALTERテーブルの販売 
  MERGE SUBPARTITIONS americas_p1_2012、americas_p2_2012
  SUBPARTITIONへnew_americas_2012;