Oracle Databaseでは、パーティション表に対するDROP TABLE文は、非パーティション表に対する文と同様に処理されます。例外はPURGEキーワードを使用する場合です。
リソースの制限が発生しないようにするには、パーティション表に対するDROP TABLE...PURGE文を使用して複数のトランザクションで表を削除します。この場合、各トランザクションが、パーティションまたはサブパーティションのサブセットを削除してコミットします。表が完全に削除されるのは、最後のトランザクションが終了したときです。この動作はDROP TABLE文では少し異なるため、注意する必要があります。
1つ目は、DROP TABLE...PURGE文が失敗した場合には修正処理を実行でき、必要な場合は文を再発行することです。文は失敗した場所から再開されます。
2つ目は、次に示すデータ・ディクショナリ・ビューでSTATUS列の値をUNUSABLEに設定すると、DROP TABLE...PURGE文の実行中に表がunusableとマークされることです。
USER_TABLES、ALL_TABLES、DBA_TABLES
USER_PART_TABLES、ALL_PART_TABLES、DBA_PART_TABLES
USER_OBJECT_TABLES、ALL_OBJECT_TABLES、DBA_OBJECT_TABLES
これらのビューのSTATUS列を問い合せることで、UNUSABLEとマークされたパーティション表をすべてリストできます。
DBA_TAB_PARTITIONSおよびDBA_TAB_SUBPARTITIONSなど、パーティション化に関連するその他のデータ・ディクショナリ・ビューに対する問合せでは、UNUSABLEとマークされた表に属する行は除外されます。これらのビューの完全なリストは、「パーティション表および索引の情報の表示」で参照できます。
表がUNUSABLEとマークされた後に、その表に対して発行できる唯一の文は別のDROP TABLE...PURGE文で、これは前のDROP TABLE...PURGE文が失敗した場合に限られます。UNUSABLEとマークされた表に対して発行したその他の文はエラーになります。削除操作が完了するまで、表はUNUSABLEの状態のままです。
|
関連項目:
|