ALTER TABLE...ADD PARTITIONコマンドは、既存のパーティションテーブルにパーティションを追加します。
概要
ALTER TABLE table_name ADD PARTITION partition_definition;
{list_partition | range_partition}
です。PARTITION [partition_name]
VALUES (value[, value]...)
[ TABLESPACE [=] tablespace_name ]
[(サブパーティション, ...)]
PARTITION [partition_name]
VALUES LESS THAN (value[, value]...)
[ TABLESPACE [=] tablespace_name ]
[(サブパーティション, ...)]
{list_subpartition | range_subpartition}
です。SUBPARTITION [subpartition_name]
VALUES (value[, value]...)
[TABLESPACE tablespace_name]
SUBPARTITION [subpartition_name]
VALUES LESS THAN (value[, value]...)
[TABLESPACE tablespace_name]
説明
ALTER TABLE...ADD PARTITIONコマンドは、既存のパーティションテーブルにパーティションを追加します。 パーティションテーブルに定義されているパーティションの数に制限はありません。
新しいパーティションは、既存のパーティションと同じタイプ (LISTまたはRANGE) である必要があります。 新しいパーティションのパーティション分割ルールは、既存のパーティションを定義するパーティション分割ルールで指定された同じ列を参照する必要があります。
ALTER TABLE...ADD PARTITIONステートメントを使用して、MAXVALUEまたはDEFAULTルールを持つテーブルにパーティションを追加することはできません。 または、ALTER TABLEを使用することもできます... 既存のパーティションを分割するSPLIT PARTITIONステートメント。 これにより、テーブル内のパーティション数を効果的に増やすことができます。
RANGEパーティションは昇順で指定する必要があります。 RANGEパーティションテーブルの既存のパーティションの前に新しいパーティションを追加することはできません。
新しいパーティションが存在するテーブルスペースを指定するには、TABLESPACE句を含めます。 テーブルスペースを指定しない場合、パーティションはデフォルトのテーブルスペースに作成されます。
テーブルにインデックスが作成されている場合、インデックスは新しいパーティションに作成されます。 ALTER TABLE...ADD SUBPARTITIONコマンドを使用するには、テーブルの所有者であるか、スーパーユーザー (または管理者) 権限を持っている必要があります。
パラメーター
パラメーター | 説明 |
table_name | パーティションテーブルの名前 (オプションでスキーマ修飾) 。 |
partition_name | 作成するパーティションの名前。 パーティション名は、すべてのパーティションおよびサブパーティション間で一意である必要があり、オブジェクト識別子の命名規則に従う必要があります。 |
subpartition_name | 作成するサブパーティションの名前。 サブパーティション名は、すべてのパーティションおよびサブパーティション間で一意である必要があり、オブジェクト識別子の命名規則に従う必要があります。 |
(value[, value]...) | value を使用して、テーブルエントリをパーティションにグループ化する引用符で囲まれたリテラル値 (またはコンマで区切られたリテラル値のリスト) を指定します。 各パーティショニングルールは少なくとも1つの値を指定する必要がありますが、ルールで指定される値の数に制限はありません。 value は、null 、default (LIST パーティションを指定する場合) 、またはmaxvalue (RANGE パーティションを指定する場合) です。
|
tablespace_name | パーティションまたはサブパーティションが存在するテーブルスペースの名前。 |
例-LISTパーティション分割テーブルにパーティションを追加する
(
dept_no number,
part_no varchar2,
country varchar2(20),
date date,
金額番号
)
リストによるパーティー (国)
(
PARTITION europe VALUES('FRANCE', 'ITALY'),
PARTITION asia VALUES('INDIA', 'PAKISTAN'),
PARTITIONアメリカスバリュー (「米国」、「カナダ」)
);
acctg=# SELECT partition_name, high_value FROM ALL_TAB_PARTITIONS;
partition_name | high_value
---------------- + ---------------------
アメリカ | 「米国」、「カナダ」
アジア | 'INDIA' 、'PAKISTAN'
ヨーロッパ | 「フランス」、「イタリア」
(3行)
値 (「中国」、「韓国」);
acctg=# SELECT partition_name, high_value FROM ALL_TAB_PARTITIONS;
partition_name | high_value
---------------- + ---------------------
east_asia | 「中国」、「韓国」
アメリカ | 「米国」、「カナダ」
アジア | 'INDIA' 、'PAKISTAN'
ヨーロッパ | 「フランス」、「イタリア」
(4行)
例-RANGEパーティションテーブルにパーティションを追加する
次の例では、salesという名前の範囲パーティションテーブルにパーティションを追加します。
テーブルの販売を作成する
(
dept_no number,
part_no varchar2,
country varchar2(20),
date date,
金額番号
)
範囲によるパーティー (日付)
(
PARTITION q1_2012
VALUES LESS THAN('2012-Apr-01'),
PARTITION q2_2012
VALUES LESS THAN('2012-Jul-01'),
PARTITION q3_2012
VALUES LESS THAN('2012-Oct-01'),
PARTITION q4_2012
より少ない値 ('2013-Jan-01 ')
);
。
partition_name | high_value
---------------- ----------------
q4_2012 | '2013-Jan-01'
q3_2012 | '2012-Oct-01'
q2_2012 | '2012-Jul-01'
q1_2012 | '2012-Apr-01'
(4行)
ALTER table sales ADD partition q1_2013
より少ない値 ('01-APR-2013 ');
acctg=# SELECT partition_name, high_value FROM ALL_TAB_PARTITIONS;
partition_name | high_value
---------------- ----------------
q1_2012 | '2012-Apr-01'
q2_2012 | '2012-Jul-01'
q3_2012 | '2012-Oct-01'
q4_2012 | '2013-Jan-01'
q1_2013 | '01-APR-2013'
(5行)