13 PDBの削除

接続されたPDBは、切断、削除または再配置することでCDBから削除できます。

関連項目:

「PDBの再配置」

CDBからのPDBの切断

PDBをCDBに接続できるのと同様に、PDBをCDBから切断できます。

PDBの切断について

PDBを切断すると、CDBへのPDBの関連付けが解除されます。PDBは、CDBに接続している場合にのみ使用できます。

次のいずれかを実行する場合は、PDBを切断します。

  • PDBを異なるCDBに移動します

  • 後で使用できるようにPDBをアーカイブします

  • PDBを使用できないようにします

PDBを切断するには、CDBルートまたはアプリケーション・ルートに接続し、ALTER PLUGGABLE DATABASE文を使用して、次のいずれかを指定します。

  • XMLファイル

    XMLファイル(.xml拡張子)には、切断された後にPDBに関するメタデータが格納されます。このメタデータは、PDBに接続するために、ターゲットCDBでCREATE PLUGGABLE DATABASE文を有効にするために必要な情報が含まれています。

  • .pdbファイル

    .pdbファイルには、PDBについて記述したXMLファイルおよびPDBで使用されるファイル(データファイルやウォレット・ファイルなど)の圧縮アーカイブが格納されます。.pdbファイルにより、単一の圧縮されたファイル(複数ファイルではない)を新しい場所にコピーしてPDBをCDBに接続できます。

次の図では、この手法を使用してアプリケーション・コンテナからアプリケーションPDBを切断する方法を示しています。

PDBは切断する前にクローズする必要があります。PDBを切断すると、切断されたPDBはマウント・モードになります。この切断操作によって、PDBのデータファイルに対して、PDBが正常に切断されたなどの、記録対象となるなんらかの変更が加えられます。依然としてCDBの一部であるため、切断されたPDBはCDB全体のRMANバックアップに含まれています。このような方法によるバックアップは、切断されたPDBが将来必要になった場合に備えてアーカイブするのに便利です。

PDBをCDBから完全に除去するには、PDBを削除します。切断されたPDBに対してサポートされている唯一の操作は、PDBの削除です。PDBを再度同じCDBに接続できるようにするには、CDBから削除しておく必要があります。

ノート:

アプリケーション・コンテナは、それに属するアプリケーションPDBがない場合にのみ切断できます。

関連項目:

PDBの切断

ALTER PLUGGABLE DATABASE ... UNPLUG INTO文を使用してPDBを切断します。

前提条件

次の前提条件を満たしている必要があります。

  • 現在のユーザーにはSYSDBAまたはSYSOPER管理権限が必要であり、その権限は共通で付与されているか、またはPDBでローカルに付与されている必要があります。ユーザーは、接続時にAS SYSDBAまたはAS SYSOPERを使用して権限を行使する必要があります。

  • PDBは、少なくとも1回はオープンしている必要があります。

ノート:

透過的データ暗号化で暗号化されたデータを含むPDBを切断する場合は、統一モードについてはOracle Database Advanced Securityガイド、分離モードについてはOracle Database Advanced Securityガイドの指示に従います。

PDBを切断するには:

  1. SQL*Plusで、現在のコンテナがPDBのルートであることを確認します。

    PDBがCDBルートに接続される場合、現在のコンテナはCDBルートである必要があります。PDBがアプリケーション・ルートに接続される場合、現在のコンテナはアプリケーション・ルートである必要があります。

    アプリケーション・コンテナを切断している場合、現在のコンテナはCDBルートである必要があり、アプリケーション・コンテナにはそれに接続されているアプリケーションPDBがないようにしてください。

  2. PDBをクローズします。

    Oracle Real Application Clusters (Oracle RAC)環境では、PDBがすべてのインスタンスでクローズされている必要があります。

  3. UNPLUG INTO句を使用してALTER PLUGGABLE DATABASE文を実行し、切断するPDB、およびPDBのXMLメタデータ・ファイルまたは.pdbの名前と場所を指定します。

例13-1 XMLメタデータ・ファイルへのPDB salespdbの切断

次のALTER PLUGGABLE DATABASE文により、PDB salespdbが切断され、/oracle/data/ディレクトリにsalespdb.xmlメタデータ・ファイルが作成されます。

ALTER PLUGGABLE DATABASE salespdb UNPLUG INTO '/oracle/data/salespdb.xml';

例13-2 アーカイブ・ファイルへのPDB salespdbの切断

次のALTER PLUGGABLE DATABASE文により、PDB salespdbが切断され、/oracle/data/ディレクトリにsales.pdbアーカイブ・ファイルが作成されます。sales.pdbアーカイブ・ファイルは、XMLメタデータ・ファイルとPDBのファイル(データファイルやウォレット・ファイルなど)を含む圧縮ファイルです。

ALTER PLUGGABLE DATABASE salespdb UNPLUG INTO '/oracle/data/sales.pdb';

PDBの削除

PDBを新しいCDBに移動する場合、またはPDBが必要でなくなった場合は、PDBを削除します。

PDBを削除すると、削除されたPDBへのすべての参照を削除するようにCDBの制御ファイルが変更されます。PDBに関連付けられているアーカイブREDOログ・ファイルおよびバックアップは削除されませんが、Oracle Recovery Manager (RMAN)を使用して削除できます。

PDBを削除する場合は、DROP PLUGGABLE DATABASE文の次のいずれかの句を使用して、PDBのデータファイルを保持または削除できます。

  • KEEP DATAFILESはデフォルトであり、データファイルを保持します。

    KEEP DATAFILESが指定されていても、PDBの一時ファイルは不要であるため削除されます。

    KEEP DATAFILESが指定されている場合は、PDBを切断する必要があります。

  • INCLUDING DATAFILESでは、ディスクからデータファイルを削除します。

    PDBがSNAPSHOT COPY句を使用して作成された場合、PDBを削除する際にINCLUDING DATAFILESを指定する必要があります。

前提条件

次の前提条件を満たしている必要があります。

  • PDBは、マウント・モードであるか、または切断されている必要があります。

    「PDBのオープン・モードの変更」を参照してください。

    「CDBからのPDBの切断」を参照してください。

  • 現在のユーザーにはSYSDBAまたはSYSOPER管理権限が必要であり、その権限は共通で付与されているか、またはPDBでローカルに付与されている必要があります。ユーザーは、接続時にAS SYSDBAまたはAS SYSOPERを使用して権限を行使する必要があります。

ノート:

これは、破壊的な操作です。

PDBを削除するには:

  1. SQL*Plusで、現在のコンテナがCDBルートであるか、アプリケーションPDBの場合はアプリケーションPDBを含むアプリケーション・ルートであることを確認します。

    PDBがCDBルートに接続される場合、現在のコンテナはCDBルートである必要があります。PDBがアプリケーション・ルートに接続される場合、現在のコンテナはアプリケーション・ルートまたはCDBルートである必要があります。

    アプリケーション・コンテナを削除している場合、現在のコンテナはCDBルートである必要があり、アプリケーション・コンテナにはそれに接続されているアプリケーションPDBがないようにしてください。

  2. DROP PLUGGABLE DATABASE文を実行し、削除するPDBを指定します。

例13-3 データファイルは保持したままPDB salespdbを削除する方法

DROP PLUGGABLE DATABASE salespdb
  KEEP DATAFILES;

例13-4 PDB salespdbおよびそのデータファイルを削除する方法

DROP PLUGGABLE DATABASE salespdb
  INCLUDING DATAFILES;