パーティションテーブルを作成した後、パーティションテーブルまたはコンポジット・パーティションテーブルのパーティションの名前を変更できます。
注意事項
パーティションのリネームは、主表のパーティション名のみを変更し、主表に属するローカルインデックスのパーティション名は変更しません。ただし、パーティションのリネーム後に、そのパーティションテーブルに対して列の削除などの操作でローカルインデックスが再構築されると、ローカルインデックスのパーティション名も主表のパーティション名と一致します。
パーティションをリネームする際、新しいパーティション名はテーブル内に既存するパーティション名(パーティションまたはサブパーティション)と同じにすることはできません。
OceanBaseデータベースでは、パーティション名は大文字と小文字を区別しないため、元のパーティション名と大文字と小文字が異なるパーティション名へのリネームはサポートされていません。
パーティション名のリネーム
RENAME PARTITION 句を使用してパーティションの名前を変更できます。ステートメントは以下のとおりです:
ALTER TABLE table_name RENAME PARTITION partition_name TO new_partition_name;
パーティション名のリネーム操作を実行した後、パーティションテーブルの場合は USER_TAB_PARTITIONS ビューを使用してパーティション名が正常に変更されたかどうかを確認できます。サブパーティションテーブルの場合は、USER_TAB_SUBPARTITIONS ビューを使用してパーティション名が正常に変更されたかどうかを確認できます。
例:
テンプレート化されていないサブパーティションテーブル
t2_f_rrを作成します。obclient> CREATE TABLE t2_f_rr(col1 INT,col2 INT) PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2) (PARTITION p0 VALUES LESS THAN(100) (SUBPARTITION sp0 VALUES LESS THAN(2020), SUBPARTITION sp1 VALUES LESS THAN(2021) ), PARTITION p1 VALUES LESS THAN(200) (SUBPARTITION sp2 VALUES LESS THAN(2020), SUBPARTITION sp3 VALUES LESS THAN(2021), SUBPARTITION sp4 VALUES LESS THAN(2022) ) );作成が成功したら、パーティションテーブルのパーティション名を確認します。
obclient> SELECT table_name,partition_name,subpartition_name FROM USER_TAB_SUBPARTITIONS WHERE table_name = 'T2_F_RR';クエリ結果は次のとおりです:
+------------+----------------+-------------------+ | TABLE_NAME | PARTITION_NAME | SUBPARTITION_NAME | +------------+----------------+-------------------+ | T2_F_RR | P0 | SP0 | | T2_F_RR | P0 | SP1 | | T2_F_RR | P1 | SP2 | | T2_F_RR | P1 | SP3 | | T2_F_RR | P1 | SP4 | +------------+----------------+-------------------+ 5 rows in setパーティション
P0の名前をNEW_P0に変更します。ALTER TABLE T2_F_RR RENAME PARTITION P0 TO NEW_P0;再度パーティション名を確認すると、パーティション名が正常に変更されたことがわかります。
obclient> SELECT table_name,partition_name,subpartition_name FROM SYS.USER_TAB_SUBPARTITIONS WHERE table_name = 'T2_F_RR';クエリ結果は次のとおりです:
+------------+----------------+-------------------+ | TABLE_NAME | PARTITION_NAME | SUBPARTITION_NAME | +------------+----------------+-------------------+ | T2_F_RR | NEW_P0 | SP0 | | T2_F_RR | NEW_P0 | SP1 | | T2_F_RR | P1 | SP2 | | T2_F_RR | P1 | SP3 | | T2_F_RR | P1 | SP4 | +------------+----------------+-------------------+ 5 rows in set
サブパーティション名のリネーム
サブパーティション名をリネームするステートメントは以下のとおりです:
ALTER TABLE table_name RENAME SUBPARTITION partition_name TO new_partition_name;
サブパーティション名のリネーム操作を実行した後、ビュー USER_TAB_SUBPARTITIONS を照会することで、パーティション名が正常に変更されたかどうかを確認できます。
例:
テンプレート化されていないサブパーティションテーブル
t3_f_rrを作成します。obclient> CREATE TABLE t3_f_rr(col1 INT,col2 INT) PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2) (PARTITION p0 VALUES LESS THAN(100) (SUBPARTITION sp0 VALUES LESS THAN(2020), SUBPARTITION sp1 VALUES LESS THAN(2021) ), PARTITION p1 VALUES LESS THAN(200) (SUBPARTITION sp2 VALUES LESS THAN(2020), SUBPARTITION sp3 VALUES LESS THAN(2021), SUBPARTITION sp4 VALUES LESS THAN(2022) ) );作成が成功したら、パーティションテーブルのパーティション名を確認します。
obclient> SELECT table_name,partition_name,subpartition_name FROM USER_TAB_SUBPARTITIONS WHERE table_name = 'T3_F_RR';クエリ結果は次のとおりです:
+------------+----------------+-------------------+ | TABLE_NAME | PARTITION_NAME | SUBPARTITION_NAME | +------------+----------------+-------------------+ | T3_F_RR | P0 | SP0 | | T3_F_RR | P0 | SP1 | | T3_F_RR | P1 | SP2 | | T3_F_RR | P1 | SP3 | | T3_F_RR | P1 | SP4 | +------------+----------------+-------------------+ 5 rows in setサブパーティション
SP1をNEW_SP1にリネームします。ALTER TABLE T3_F_RR RENAME SUBPARTITION SP1 TO NEW_SP1;再度パーティション名を確認すると、パーティション名が正常に変更されたことがわかります。
obclient> SELECT table_name,partition_name,subpartition_name FROM SYS.USER_TAB_SUBPARTITIONS WHERE table_name = 'T3_F_RR';クエリ結果は次のとおりです:
+------------+----------------+-------------------+ | TABLE_NAME | PARTITION_NAME | SUBPARTITION_NAME | +------------+----------------+-------------------+ | T3_F_RR | P0 | SP0 | | T3_F_RR | P0 | NEW_SP1 | | T3_F_RR | P1 | SP2 | | T3_F_RR | P1 | SP3 | | T3_F_RR | P1 | SP4 | +------------+----------------+-------------------+ 5 rows in set