複合パーティションテーブル内の指定されたサブパーティションからすべてのデータを削除します。この操作はデータを完全に削除しますが、サブパーティションの構造は保持します。このコマンドを実行する前に、データが不要であるか、バックアップされていることを確認してください。
概要
ALTER TABLE table_name
TRUNCATE SUBPARTITION subpartition_name
[{DROP|REUSE} STORAGE]パラメーター
パラメーター | 必須 | 説明 | 例 |
| はい | ターゲットの複合パーティションテーブルの名前。 |
|
| はい | 切り捨てるサブパーティションの名前。 |
|
| いいえ | この句は Oracle 構文との互換性のために解析されますが、無視され、ストレージには影響しません。 |
|
注意
テーブルのオーナーであるか、テーブルに対する
ALTER権限を持っている必要があります。TRUNCATE SUBPARTITIONは、テーブルレベルの排他ロックAccessExclusiveLockを取得します。このロックは、テーブルに対するすべてのデータ操作言語 (DML) およびほとんどのデータ定義言語 (DDL) 操作をブロックします。この文はオフピーク時に実行し、テーブルに対する他の重大な操作をブロックしないように、完了するのに十分な時間を確保してください。DDL 操作として、
TRUNCATE SUBPARTITIONは現在のトランザクションを暗黙的にコミットします。コマンドが実行された後、削除されたデータはROLLBACKを使用して回復することはできません。この操作を実行する前にデータをバックアップしてください。TRUNCATE SUBPARTITIONは、ファイルの削除を含むメタデータ操作です。数億のレコードを持つテーブルであっても、数秒で完了できます。I/O、CPU、およびメモリのオーバーヘッドは非常に低いです。
例
この例では、2022 年のアジア地域のユーザーデータのサブパーティションからデータを削除する方法を示します。この例では、登録年 (RANGE) とユーザーリージョン (LIST) によって複合パーティション化された顧客テーブルを使用します。
よくある質問
Q1: TRUNCATE SUBPARTITION と DROP SUBPARTITION の違いは何ですか?
TRUNCATE SUBPARTITION はサブパーティションからデータを削除しますが、その定義は保持します。DROP SUBPARTITION はサブパーティションの定義とデータの両方を削除します。
Q2: TRUNCATE SUBPARTITION の実行後にデータを回復できますか?
いいえ。TRUNCATE はデータを完全に削除する DDL 操作です。デフォルトでは、トランザクションログに記録されません。データは、ロールバックやフラッシュバックなどの標準的なメソッドを使用して回復することはできません。
Q3: TRUNCATE SUBPARTITION と DELETE FROM ... SUBPARTITION の違いは何ですか?
TRUNCATE SUBPARTITION は、データブロックを解放することでデータを直接削除する効率的な DDL 操作であり、ロールバックできません。DELETE は、データを 1 行ずつ削除する DML 操作です。ログを記録し、ロールバックでき、削除トリガーを発行します。
Q4: なぜ エラー "ORA-02149: relation ... does not exist" が発生するのですか?
このエラーは、サブパーティション名が存在しないか、指定された名前の大文字と小文字が実際の名前と一致しないために発生します。名前は大文字と小文字を区別します。名前を確認するには、事前チェックを実行してください。
Q5: なぜ エラー "ORA-01031: insufficient privileges" が発生するのですか?
このエラーは、コマンドを実行するユーザーがターゲットテーブルに対する ALTER 権限を持っていないために発生します。必要な権限を付与するには、データベース管理者に連絡してください。
関連する SQL 文
ALTER TABLE DROP SUBPARTITION: サブパーティションの定義とそれに含まれるデータを削除します。
ALTER TABLE TRUNCATE PARTITION: プライマリパーティションとそのすべてのサブパーティションからデータを削除します。
ALTER TABLE ADD SUBPARTITION: 既存のプライマリパーティションに新しいサブパーティションを追加します。
ALTER TABLE SPLIT SUBPARTITION: 1 つのサブパーティションを 2 つのサブパーティションに分割します。