DROP TABLESPACE

目的

DROP TABLESPACE文を使用すると、データベースから表領域を削除できます。

削除した表領域は、ごみ箱内には移動しません。このため、削除した表領域を消去またはリカバリすることはできません。

関連項目:

表領域の作成および変更の詳細は、「CREATE TABLESPACE」および「ALTER TABLESPACE」を参照してください。

前提条件

DROP TABLESPACEシステム権限が必要です。アクティブ・トランザクションを保持するロールバック・セグメントを含む場合は、表領域を削除できません。

構文

drop_tablespace::=

IF NOT EXISTS

既存の表領域を削除するには、IF EXISTSを指定します。

ALTERとともにIF NOT EXISTSを指定すると、ALTER/DROP文のIF EXISTS句が正しくないというエラーが発生します。

セマンティクス

tablespace

削除する表領域(消失書込み保護更新が格納されているシャドウ表領域を含む)の名前を指定します。

表領域の状態がオンラインまたはオフラインのどちらであっても、その表領域を削除できます。実行中のトランザクション内のSQL文で、表領域内のいずれかのオブジェクトにアクセスすることがないように、表領域はオフラインにしてから削除することをお薦めします。

SYSTEM表領域は削除できません。SYSAUX表領域は、SYSDBAシステム権限を持ち、UPGRADEモードでデータベースを起動した場合にのみ削除できます。

削除する表領域がデフォルト表領域または一時表領域として割り当てられていたユーザーにアラートを出す必要がある場合があります。表領域が削除された後では、このようなユーザーはオブジェクトに領域を割り当てたり、表領域内で領域をソートすることはできません。ALTER USER文を使用すると、ユーザーに新しいデフォルト表領域および一時表領域を割り当てることができます。

以前に表領域から削除し、ごみ箱に移動したオブジェクトがごみ箱から消去されます。表領域に関連するすべてのメタデータ、および表領域に含まれるすべてのデータファイルと一時ファイルが、データ・ディクショナリから削除されます。また、表領域にあるOracle Managed Filesのデータファイルおよび一時ファイルが、オペレーティング・システムから自動的に削除されます。その他のデータファイルおよび一時ファイルは、INCLUDING CONTENTS AND DATAFILESを指定しないかぎり、オペレーティング・システムから削除されません。

この文を使用して表領域グループを削除することはできません。ただし、tablespaceが表領域グループ内で唯一の表領域である場合、その表領域グループもデータ・ディクショナリから削除されます。

表領域の削除の制限事項

表領域の削除には、次の制限事項があります。

  • ドメイン索引またはドメイン索引によって作成されたオブジェクトを格納している表領域は削除できません。

  • いずれかのインスタンスによって使用されている場合、またはコミットされていないトランザクションのロールバックに必要なUNDOデータを含む場合は、UNDO表領域を削除できません。

  • データベースのデフォルト表領域に指定されている表領域は削除できません。この表領域を削除するには、まず他の表領域をデフォルト表領域として再割当てする必要があります。

  • データベースのデフォルトの一時表領域グループに属する一時表領域は削除できません。この表領域を削除するには、まずその表領域をデータベースのデフォルトの一時表領域グループから削除する必要があります。

  • 既存のセッションで使用されているセグメントが含まれる場合、一時表領域を削除できません。この場合は、エラーは発生しません。データベースは、既存のセッションで使用されているセグメントがなくなるまで待機し、表領域を削除します。

  • ある表領域を削除すると他の表領域の主キー制約または一意制約が無効になる場合、INCLUDING CONTENTSおよびCASCADE CONSTRAINTS句を指定してもその表領域を削除できません。たとえば、削除する表領域に主キー列索引が含まれており、主キー列自体が別の表領域に存在する場合、その別の表領域内の主キー制約を手動で無効にしないかぎり、表領域を削除できません。

関連項目:

ドメイン索引の詳細は、『Oracle Databaseデータ・カートリッジ開発者ガイド』および『Oracle Database概要』を参照してください。

{ DROP | KEEP } QUOTA

DROP QUOTAを指定すると、表領域のすべてのユーザー割当てを削除できます。KEEP QUOTAを指定すると、表領域のすべてのユーザー割当てを保持できます。デフォルトはKEEP QUOTAです。

DBA_TS_QUOTASデータ・ディクショナリ・ビューを問い合せると、表領域のすべてのユーザー割当てを表示できます。

INCLUDING CONTENTS

表領域(消失書込み保護更新が格納されている表領域を含む)の内容をすべて削除するには、INCLUDING CONTENTSを指定します。データベース・オブジェクトを格納している表領域を削除する場合は、必ずこの句を指定します。表領域が空でない場合にこの句を省略した場合、エラーが戻され、表領域は削除されません。

1つの表のパーティションまたはサブパーティションが表領域に(すべてではなく)一部含まれていると、INCLUDING CONTENTSを指定してもDROP TABLESPACEコマンドが正常に実行されません。パーティション表のすべてのパーティションまたはサブパーティションがtablespaceに存在する場合、DROP TABLESPACE ... INCLUDING CONTENTSは、tablespaceを削除し、関連付けられた索引セグメント、LOBデータ・セグメントと索引セグメント、ネストした表のデータ・セグメント、および他の表領域にある表の索引セグメントも削除します。

パーティション化された索引構成表の場合、すべての主キー索引セグメントがこの表領域に存在していれば、他の表領域にあるオーバーフロー・セグメントや関連するマッピング表もすべて削除されます。主キー索引セグメントのいくつかが存在しない場合、文は正常に実行されません。その場合、その表領域を削除する前に、ALTER TABLE ... MOVE PARTITIONを使用して、それらの主キー索引セグメントをこの表領域に移動し、この表領域にオーバーフロー・データ・セグメントが存在しないパーティションを削除します。また、パーティション化された索引構成表も削除します。

表領域がマテリアライズド・ビューのマスター表を含む場合、マテリアライズド・ビューは無効になります。

表領域がマテリアライズド・ビュー・ログを含む場合、このログおよびその表に関連付けられているダイレクト・パス・インサートのその他のリフレッシュ情報は削除されます。

AND DATAFILES

INCLUDING CONTENTSを指定するときにAND DATAFILES句を指定すると、関連するオペレーティング・システム・ファイルも削除できます。Oracle Databaseによって、アラート・ログに、削除された各オペレーティング・システム・ファイルに関するメッセージが書き込まれます。この句は、Oracle Managed Filesに対しては不要です。Oracle Managed Filesは、AND DATAFILESを指定しなくてもシステムから削除されます。

KEEP DATAFILES

INCLUDING CONTENTSを指定するときにKEEP DATAFILES句も指定すると、関連するオペレーティング・システム・ファイル(Oracle Managed Filesも含む)を処理せずにそのままにしておくことができます。この句を指定する必要があるのは、Oracle Managed Filesを使用しているときに、関連するオペレーティング・システム・ファイルをINCLUDING CONTENTS句で削除しない場合です。

CASCADE CONSTRAINTS

CASCADE CONSTRAINTSを指定すると、tablespaceに含まれる表の主キーまたは一意キーを参照する、tablespaceの外の表からすべての参照整合性制約を削除できます。このような参照整合性制約があるときにこの句を省略した場合、エラーが戻され、表領域は削除されません。

表領域の削除: 例

次の文は、tbs_01表領域を削除し、tbs_01に含まれる主キーおよび一意キーを参照するすべての参照整合性制約を削除します。

DROP TABLESPACE tbs_01 
    INCLUDING CONTENTS 
        CASCADE CONSTRAINTS; 

シャドウ表領域の削除: 例

次の文は、シャドウ表領域内の追跡対象データを別のシャドウ表領域に移動させます。これは、十分な空き領域のあるPDBにシャドウ表領域がある場合にのみ機能します。

DROP TABLESPACE <shadow_tablespace_name>

次の文は、シャドウ表領域とその内容をすべて削除します。追跡対象データはすべて失われます。

シャドウ表領域とその内容の削除: 例

DROP TABLESPACE <shadow_tablespace_name> 
    INCLUDING CONTENTS

オペレーティング・システム・ファイルの削除: 例

次の例は、tbs_02表領域およびそれに関連するすべてのオペレーティング・システムのデータファイルを削除します。

DROP TABLESPACE tbs_02
   INCLUDING CONTENTS AND DATAFILES;