パーティションまたはサブパーティションの名前を変更します。これはメタデータのみの操作ですが、古い名前を参照するスクリプトを無効にする可能性があります。このコマンドを実行する前に、新しい名前が一意であることを確認し、依存するコードをチェックしてください。
概要
ALTER TABLE table_name RENAME PARTITION old_name TO new_name;
ALTER TABLE table_name RENAME SUBPARTITION old_name TO new_name;パラメーター
パラメーター | 必須 | 説明 | 例 |
| はい | ターゲットのパーティションテーブルの名前。 |
|
| はい | 名前を変更するパーティションまたはサブパーティションの現在の名前。 |
|
| はい | パーティションまたはサブパーティションの新しい名前。 |
|
注意事項
テーブルのオーナーであるか、テーブルに対する
ALTER権限を持っている必要があります。RENAME PARTITIONは、ターゲットパーティションに対してテーブルレベルの排他ロックAccessExclusiveLockを取得します。このロックは、テーブルに対するすべてのデータ操作言語 (DML) およびほとんどのデータ定義言語 (DDL) 操作をブロックします。この文はオフピーク時に実行し、テーブルに対する他の重大な操作をブロックしないように、完了するのに十分な時間を確保してください。新しいパーティションまたはサブパーティションの名前は、テーブル内で一意である必要があります。
DDL 操作として、このコマンドは自動的にコミットされ、ロールバックすることはできません。変更を元に戻すには、別の
RENAMEコマンドを実行して元の名前に復元します。古いパーティション名がアプリケーションコード、ストアドプロシージャ、またはビューにハードコーディングされている場合、これらのオブジェクトは名前の変更後に失敗します。パーティションの名前を変更する前に、徹底的な影響分析を行い、すべての依存コードを更新してください。
例
この例では、複合パーティションテーブル customer_data のサブパーティション sp_asia の名前を、年とリージョンに基づく命名規則に合わせて sp_2023_asia に変更する方法を示します。
環境の準備
事前チェックの実行
コマンドの実行
結果の確認
よくある質問
Q1: なぜエラー ORA-14078: partition name is already in use が発生するのですか?
このエラーは、指定された new_name が同じテーブル内の別のパーティションまたはサブパーティションですでに使用されていることを示します。一意の名前を選択してください。
Q2: なぜエラー ORA-14076: partition name must be specified が発生するのですか?
このエラーは、指定された old_name が存在しないことを示します。事前チェックのステップに従って名前を確認してください。
Q3: パーティションの名前を変更した後、それを参照するアプリケーションやスクリプトが動作しなくなるのはなぜですか?
これは、アプリケーションやスクリプトが古いパーティション名をハードコーディングしている場合に発生します。そのような参照をすべて更新して、新しい名前を使用する必要があります。
関連する SQL 文
ALTER TABLE ADD PARTITION: パーティションテーブルに新しいパーティションを追加します。
ALTER TABLE MERGE PARTITION: 2 つの隣接したパーティションを 1 つのパーティションにマージします。
ALTER TABLE SPLIT PARTITION: 1 つのパーティションを 2 つのパーティションに分割します。
ALTER TABLE DROP PARTITION: パーティションテーブルから指定されたパーティションを削除します。