PURGE

目的

PURGE文を使用すると、次の操作を実行できます。

  • ごみ箱から表または索引を削除し、そのオブジェクトに関連付けられているすべての領域を解放します。

  • 削除された表領域または表領域セットの一部または全部をごみ箱から削除します。

  • ごみ箱全体を削除します。

ノート:

PURGE文はロールバックできません。また、この文によって消去されたオブジェクトはリカバリできません。

ごみ箱の内容を参照するには、USER_RECYCLEBINデータ・ディクショナリ・ビューを問い合せます。かわりにRECYCLEBINシノニムを使用することもできます。次の2つの文は、同じ行を戻します。

SELECT * FROM RECYCLEBIN;
SELECT * FROM USER_RECYCLEBIN;

関連項目:

前提条件

表を消去するには、その表が自分のスキーマ内にあるか、自分にDROP ANY TABLEシステム権限が付与されている、あるいはSYSDBAシステム権限が付与されている必要があります。

索引を消去するには、その索引が自分のスキーマ内にあるか、自分にDROP ANY INDEXシステム権限が付与されている、あるいはSYSDBAシステム権限が付与されている必要があります。

表領域または表領域セットを消去するには、自分にDROP TABLESPACEシステム権限が付与されているか、SYSDBAシステム権限が付与されている必要があります。

表領域セットを消去するには、SDBユーザーとしてシャード・カタログ・データベースに接続されている必要もあります。

PURGE DBA_RECYCLEBIN操作を実行するには、SYSDBAまたはPURGE DBA_RECYCLEBINシステム権限が必要です。

構文

セマンティクス

TABLEまたはINDEX

ごみ箱内の消去する表または索引の名前を指定します。ユーザーが指定した元の名前か、オブジェクトの削除時にそのオブジェクトに割り当てられたシステム生成名を指定できます。

  • ユーザー指定の名前を指定した場合、その名前を持つオブジェクトがごみ箱内に複数存在していると、ごみ箱内に最も長く存在しているオブジェクトが消去されます。

  • ごみ箱内のオブジェクトのシステム生成名は一意です。そのため、システム生成名を指定すると、その名前を持つ特定のオブジェクトが消去されます。

表が消去されると、その表のすべての表パーティション、LOBとLOBパーティション、索引、およびその他の依存オブジェクトも消去されます。

TABLESPACEまたはTABLESPACE SET

この句を使用すると、ごみ箱から、指定した表領域または表領域セット内に存在するすべてのオブジェクトを消去できます。

USER user

この句を使用すると、指定したユーザーが、表領域または表領域セット内の領域を再利用できます。この操作は、特定のユーザーの、特定の表領域または表領域セットに対するディスク領域が割当て制限間近である場合に特に役立ちます。

RECYCLEBIN

この句を使用すると、現行のユーザーのごみ箱を空にできます。そのユーザーのごみ箱からすべてのオブジェクトが消去され、そのオブジェクトに関連付けられていたすべての領域が解放されます。

DBA_RECYCLEBIN

この句は、SYSDBAまたはPURGE DBA_RECYCLEBINシステム権限を持っている場合にのみ有効です。これを使用すると、システム全体のごみ箱からすべてのオブジェクトを削除できます。これは、各ユーザーのごみ箱を空にすることと同じです。この操作は、以前のリリースへの移行などの場合に役立ちます。

ごみ箱からのファイルの削除: 例

次の文は、ごみ箱から表testを削除します。複数のバージョンのtest表がごみ箱内に存在する場合、Oracle Databaseでは、ごみ箱内に最も長く存在しているものが削除されます。

PURGE TABLE test;

ごみ箱から削除する表のシステム生成名を判断するには、ごみ箱に対するSELECT文を発行します。そのオブジェクト名を使用して、次の文に類似した文を発行して表を削除できます。(システム生成名は、次の例に示すものとは異なります。)

PURGE TABLE RB$$33750$TABLE$0;

ごみ箱の内容の削除: 例

ごみ箱の内容全体を削除するには、次の文を発行します。

PURGE RECYCLEBIN;