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_2012
とamericas_p2_2012
の2つのサブパーティションに分割します。 例:
ALTERテーブルの販売
分割SUBPARTITION americas_2012
AT('2012-Jun-01 ')
INTO
(
SUBPARTITION americas_p1_2012、
SUBPARTITION americas_p2_2012
);
americas_p1_2012
とamericas_p2_2012
サブパーティションを新しいサブパーティションnew_americas_2012
にマージします。 例:
ALTERテーブルの販売
MERGE SUBPARTITIONS americas_p1_2012、americas_p2_2012
SUBPARTITIONへnew_americas_2012;