4.5 パーティション表の削除について

パーティション表の削除は、非パーティション表の削除と同様です。

Oracle Databaseでは、パーティション表に対するDROP TABLE文は、非パーティション表に対する文と同様に処理されます。例外はPURGEキーワードを使用する場合です。

リソースの制限が発生しないようにするには、パーティション表に対するDROP TABLE...PURGE文を使用して複数のトランザクションで表を削除します。この場合、各トランザクションが、パーティションまたはサブパーティションのサブセットを削除してコミットします。表が削除されるのは、最後のトランザクションが終了したときです。

この動作には、DROP TABLE文に対するいくつかの変更が伴います。1つ目は、DROP TABLE...PURGE文が失敗した場合には修正処理を実行でき、必要な場合は文を再発行することです。文は失敗した場所から再開されます。2つ目は、次に示すデータ・ディクショナリ・ビューでSTATUS列の値をUNUSABLEに設定すると、DROP TABLE...PURGE文の実行中に表がunusableとマークされることです。

  • USER_TABLESALL_TABLESDBA_TABLES

  • USER_PART_TABLESALL_PART_TABLESDBA_PART_TABLES

  • USER_OBJECT_TABLESALL_OBJECT_TABLESDBA_OBJECT_TABLES

これらのビューのSTATUS列を問い合せることで、UNUSABLEとマークされたパーティション表をすべてリストできます。

DBA_TAB_PARTITIONSおよびDBA_TAB_SUBPARTITIONSなど、パーティション化に関連するその他のデータ・ディクショナリ・ビューに対する問合せでは、UNUSABLEとマークされた表に属する行は除外されます。

表がUNUSABLEとマークされた後に、その表に対して発行できる唯一の文は別のDROP TABLE...PURGE文で、これは前のDROP TABLE...PURGE文が失敗した場合に限られます。UNUSABLEとマークされた表に対して発行したその他の文はエラーになります。削除操作が完了するまで、表はUNUSABLEの状態のままです。

関連項目: