10 切断されたPDBの接続

切断されたPDBをCDBに接続することで、PDBを作成できます。

PDBのプラグイン操作について

PDBを接続するには、CREATE PLUGGABLE DATABASEUSING句を指定します。この句では、XMLメタデータ・ファイルまたは圧縮済アーカイブ・ファイル(.pdbファイル)を指定します。

XMLファイルとアーカイブ・ファイルについて

XMLメタデータ・ファイルには、切断されたPDBおよびPDBに関連付けられているファイル(データファイルやウォレット・ファイルなど)について記述します。アーカイブ・ファイルには、XMLメタデータ・ファイルとPDBのファイルの両方が含まれます。

XMLメタデータ・ファイルが指定されている場合、XMLファイルにはPDBのファイルのフル・パスが含まれます。.pdbアーカイブ・ファイルが指定されている場合、XMLメタデータ・ファイルには、相対ファイル名のみが含まれます。

次の図は、切断されたPDBの接続方法を示しています。

図10-1 切断されたPDBのCDBルートへの接続

図10-1の説明が続きます
「図10-1 切断されたPDBのCDBルートへの接続」の説明

次に図は、この手法で新しいアプリケーションPDBをアプリケーション・コンテナに作成する方法を示しています。

図10-2 切断されたPDBのアプリケーション・ルートへの接続

図10-2の説明が続きます
「図10-2 切断されたPDBのアプリケーション・ルートへの接続」の説明

ノート:

PDBの自動ダウングレードはサポートされていません。したがって、ソースCDBがターゲットCDBより上位のOracle Databaseリリースである場合は、PDBを接続できません。

切断されたPDBに接続する場合は、表6-3の切断されたPDBの接続に適用される質問に対処する必要があります。この表では、様々な要因に基づいて指定する必要があるCREATE PLUGGABLE DATABASEの句について説明しています。

切断されたPDBをプラグインする場合のソース・ファイルの場所

CREATE PLUGGABLE DATABASE ... USING文を使用して、切断されたPDBをCDBに接続します。

PDBの接続時に.pdbアーカイブ・ファイルを使用する場合、Oracle DatabaseはPDBの接続時にこのファイルを抽出し、PDBのファイルを.pdbアーカイブ・ファイルと同じディレクトリに配置します。したがって、ソース・ファイルの場所を指定する句は、.pdbアーカイブ・ファイルを使用するときには必要ありません。

PDBの接続時にXMLメタデータ・ファイルを指定する場合、このファイルは切断されたPDBソース・ファイルの名前と場所を記述します。切断されているファイルをあるストレージ・システムから異なるストレージ・システムにトランスポートした場合は、これらのファイルの場所がXMLファイルに正確に記述されていない可能性があります。これらのファイルは新しい場所にありますが、XMLファイル内のファイル・パスは依然として古い場所を示しています。

XMLメタデータ・ファイル(.pdbアーカイブ・ファイルではない)を使用して、切断されたPDBを接続する場合は、SOURCE_FILE_NAME_CONVERT句またはSOURCE_FILE_DIRECTORY句のいずれかを使用します。これらの句は相互に排他的です。

SOURCE_FILE_NAME_CONVERT句

SOURCE_FILE_NAME_CONVERT句は、PDBファイルがXMLファイルの指定とは異なる場所に存在する場合にPDBファイルを検索する方法を指定します。

この句を使用して、次のいずれかのオプションを指定できます。

  • 1つ以上のファイル名パターンおよび置換ファイル名パターンを次の形式で指定します。

    'string1' , 'string2' , 'string3' , 'string4' , ...
    

    string1ファイル名パターンがstring2ファイル名パターンによって置き換えられ、string3ファイル名パターンがstring4ファイル名パターンによって置き換えられます。ファイル名パターン文字列と置換ファイル名パターン文字列のペアを必要な数だけ使用できます。

    この句を使用する場合は、PDBに使用するファイルが、置換ファイル名パターンに存在することを確認してください。必要な場合は、ファイルをこれらの場所にコピーまたは移動します。

  • PDBのXMLファイルでファイル名が正確に記述されているためにファイル名を検索する必要がない場合はNONESOURCE_FILE_NAME_CONVERT句の省略は、NONEの指定と同じです。

SOURCE_FILE_NAME_CONVERT句は、XMLメタデータ・ファイルを指定するUSING句とともにCREATE PLUGGABLE DATABASE文でのみ使用できます。したがって、この句は、切断されているPDBをXMLメタデータ・ファイルで接続する場合にのみ使用できます。PDBを.pdbアーカイブ・ファイルで接続する場合は、この句を使用できません。

例10-1 SOURCE_FILE_NAME_CONVERT句

次のSOURCE_FILE_NAME_CONVERT句では、/disk1/oracle/pdb7ディレクトリではなく、/disk2/oracle/pdb7ディレクトリのファイルを使用します。この場合、PDBを記述しているXMLファイルでは、/disk1/oracle/pdb7ディレクトリを指定していますが、PDBでは/disk2/oracle/pdb7ディレクトリのファイルを使用する必要があります。

SOURCE_FILE_NAME_CONVERT = ('/disk1/oracle/pdb7/', '/disk2/oracle/pdb7/')

関連項目:

SOURCE_FILE_DIRECTORY句

SOURCE_FILE_DIRECTORY句は、新しいPDBの作成に使用されるファイルのソース・ディレクトリを指定します。

句では、XMLファイルにリストされているすべてのファイルを含むディレクトリを指定します。この句は、多数のデータファイルがあり、各ファイルのSOURCE_FILE_NAME_CONVERTパターンの指定が現実的でない場合に使用すると便利です。

PDBを接続する際に、ソース・ファイルがすべて単一ディレクトリに存在する場合は、この句でディレクトリ名を指定できます。切断されたPDBのXMLファイルに基づいて適切なファイルを検索するためにディレクトリがスキャンされます。

この句を使用して、次のいずれかのオプションを指定できます。

  • ソース・ファイル・ディレクトリの絶対パス。

  • PDBの作成時にいずれのファイルもコピーまたは移動しない場合はNONEを指定します。SOURCE_FILE_DIRECTORY句の省略は、NONEの指定と同じです。

SOURCE_FILE_DIRECTORY句は、XMLメタデータ・ファイルを指定するUSING句とともにCREATE PLUGGABLE DATABASE文でのみ使用できます。したがって、この句は、切断されているPDBをXMLメタデータ・ファイルで接続する場合にのみ使用できます。PDBを.pdbアーカイブ・ファイルで接続する場合は、この句を使用できません。

この句は、Oracle Managed Filesを使用する構成とOracle Managed Filesを使用しない構成に対して指定できます。

例10-2 SOURCE_FILE_DIRECTORY句

このSOURCE_FILE_DIRECTORY句は、/oracle/pdb5/ディレクトリ内のソース・ファイルを使用して新しいPDBのファイル名を生成します。

SOURCE_FILE_DIRECTORY = '/oracle/pdb5/'

切断されたPDBの接続

CREATE PLUGGABLE DATABASE ... USING文を使用してPDBを接続します。

一般的な前提条件

切断されたPDBを接続するには、次の要件が満たされている必要があります。

  • 「PDB作成の一般的な前提条件」で説明している前提条件を満たします。

  • PDBを記述しているXMLファイルまたは.pdbアーカイブ・ファイルは、CDBにアクセスできる場所に存在する必要があります。

    USING句でXMLファイルまたは.pdbアーカイブ・ファイルを指定する必要があります。PDBのXMLファイルが使用できないか見つからない場合は、DBMS_PDB.RECOVERプロシージャを使用して、PDBのデータファイルでXMLファイルを生成できます。

  • USING句にXMLファイル(.pdbファイルではなく)を指定する場合は、PDBに関連付けられたファイル(データファイルやウォレット・ファイルなど)が、CDBにアクセスできる場所に存在している必要があります。

  • 接続操作のターゲット・データベースがOracle Data Guard構成内のプライマリ・データベースの場合は、接続されるPDBのファイルの場所をスタンバイ・データベースで特定できることを確認します。

    スタンバイ・データベースで、STANDBY_PDB_SOURCE_FILE_DIRECTORY初期化パラメータを、PDBをインスタンス化するためのソース・データファイルが含まれている場所に設定します。ファイルが見つからない場合、スタンバイ・データベースはOMFの場所でファイルを探します。OMFの場所で見つからない場合は、データファイルをスタンバイ・データベースのOMFの場所にコピーし、スタンバイ・データベースに対するREDO適用を再起動する必要があります。

  • ソースCDBとターゲットCDBのプラットフォームは、次の要件を満たしている必要があります。

    • endiannessが同じである必要があります。

    • ソース・プラットフォームにインストールされているデータベース・オプションは、ターゲット・プラットフォームにインストールされているデータベース・オプションと同じか、サブセットである必要があります。

  • アプリケーションPDBを作成している場合、切断されたPDBのアプリケーション名およびバージョンは、アプリケーションPDBを接続するアプリケーション・コンテナのアプリケーション名およびバージョンと一致する必要があります。

ノート:

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

文字セットの前提条件

文字セットを一致させるために、次の前提条件を満たす必要があります。

  • PDBが接続されるCDBの文字セットがAL32UTF8でない場合、切断されたPDBを含んでいたCDBとターゲットCDBには互換性のある文字セットおよび各国語文字セットが必要です。互換性を確保するには、文字セットと各国語文字セットが、『Oracle Databaseグローバリゼーション・サポート・ガイド』で指定されている要件を満たしている必要があります。

    PDBが接続されるCDBの文字セットがAL32UTF8である場合、この要件は適用されません。

    ノート:

    Oracle Multitenantでは、あるコンテナのLOBに対する異なる文字セットのコンテナによるデータ・リンク、拡張データ・リンクまたはCONTAINERS()句を使用したアクセスはサポートされません。たとえば、CDBルートとsalespdbの文字セットが異なる場合、CDBルートで実行されるCONTAINERS()問合せはsalespdbのLOBにアクセスできません。

  • アプリケーションPDBを作成している場合、アプリケーションPDBはアプリケーション・コンテナと同じ文字セットおよび各国語文字セットである必要があります。

    CDBのデータベース文字セットがAL32UTF8の場合、アプリケーション・コンテナの文字セットおよび各国語文字セットはCDBと異なっていても構いません。ただし、アプリケーション・コンテナ内のすべてのアプリケーションPDBには、アプリケーション・コンテナと同じ文字セットおよび各国語文字セットが必要です。

前提条件が満たされているかどうかを判断するには、DBMS_PDB.CHECK_PLUG_COMPATIBILITY関数を使用します。次の手順のステップ2では、このファンクションの使用方法を示しています。

PDBをプラグインするには:

  1. SQL*Plusで、現在のコンテナがCDBルートまたはターゲットCDBのアプリケーション・ルートであることを確認します。

    現在のコンテナがCDBルートの場合、PDBはCDBに作成されます。現在のコンテナがアプリケーション・ルートの場合、アプリケーションPDBはアプリケーション・コンテナ内に作成されます。

  2. (オプション)DBMS_PDB.CHECK_PLUG_COMPATIBILITYファンクションを実行して、切断されたPDBがCDBと互換性があるかどうかを確認します。

    1. PDBがまだ切断されていない場合は、DBMS_PDB.DESCRIBEプロシージャを実行して、そのPDBを記述するXMLファイルを作成します。

      PDBがすでに切断されている場合は、ステップ2bに進みます。

      たとえば、salespdb.xmlという名前のXMLファイルを/disk1/oracleディレクトリに生成し、次のプロシージャを実行します。

      BEGIN
        DBMS_PDB.DESCRIBE(
          pdb_descr_file => '/disk1/oracle/salespdb.xml',
          pdb_name       => 'SALESPDB');
      END;
      /
      

      PDBがリモートCDBに存在している場合は、pdb_nameパラメータに@database_link_nameを含めることができます。database_link_nameは、リモートCDBまたはPDBへの有効なデータベース・リンクの名前です。たとえば、リモートCDBへのデータベース・リンクの名前がrcdbの場合、pdb_name値にSALESPDB@rcdbと設定します。

    2. DBMS_PDB.CHECK_PLUG_COMPATIBILITYファンクションを実行します。

      このファンクションを実行する場合は、次のパラメータを設定します。

      • pdb_descr_file - パラメータをXMLファイルへのフルパスに設定します。

      • pdb_name - 新しいPDBの名前を指定します。このパラメータを省略した場合は、XMLファイル内のPDB名が使用されます。

      たとえば、/disk1/usr/salespdb.xmlファイルで記述されているPDBが現在のCDBと互換性があるかどうかを確認するには、次のPL/SQLブロックを実行します。

      SET SERVEROUTPUT ON
      DECLARE
        compatible CONSTANT VARCHAR2(3) := 
          CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
                 pdb_descr_file => '/disk1/usr/salespdb.xml',
                 pdb_name       => 'SALESPDB')
          WHEN TRUE THEN 'YES'
          ELSE 'NO'
      END;
      BEGIN
        DBMS_OUTPUT.PUT_LINE(compatible);
      END;
      /
      

      出力がYESの場合はPDBに互換性があり、次のステップに進むことができます。出力がNOの場合はPDBに互換性がなく、PDB_PLUG_IN_VIOLATIONSビューをチェックして、互換性がない理由を確認します。

    ノート:

    .pdbアーカイブ・ファイルはpdb_descr_fileパラメータで指定できます。
  3. PDBが切断されていない場合は、切断します。

  4. CREATE PLUGGABLE DATABASE ... USING文を実行し、USING句でXMLファイルまたは.pdbアーカイブ・ファイルを指定します。他の句が必要な場合はそれらを指定します。

    作成したPDBはマウント・モードになり、そのステータスはNEWです。PDBのオープン・モードは、V$PDBSビューのOPEN_MODE列を問い合せることで確認できます。CDB_PDBSまたはDBA_PDBSビューのSTATUS列を問い合せて、PDBのステータスを表示できます。

    PDBの新しいデフォルト・サービスが作成されます。サービスの名前はPDBと同じになり、このサービスを使用してPDBにアクセスできます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。

  5. 新しいPDBを読取り/書込みモードでオープンします。

    Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスはNORMALになります。

    PDBのオープン時に、PDBとCDBルートの間でバージョンの不一致があった場合は、自動的にアップグレードされます。PDBオープン時のリプレイ・アップグレードの最適化(デフォルト)により、取得表に格納されている文を再実行することによって、手動のエラー修正を回避できます。このメカニズムは、アプリケーションの同期で使用されるものと同じです。PDBがオープンされると、データベースでリプレイ・アップグレードが自動的に実行されます。

  6. PDBをバックアップします。

    PDBは、バックアップしないとリカバリできません。

ノート:

PDBの作成時にエラーが返された場合は、作成されたPDBがUNUSABLE状態である可能性があります。CDB_PDBSまたはDBA_PDBSビューを問い合せてPDBの状態を確認したり、アラート・ログをチェックしてPDBの作成エラーについてさらに学習できます。使用不可のPDBは削除することのみができ、使用不可のPDBと同じ名前のPDBを作成できるようにするには、その前に削除する必要があります。

関連項目:

切断されたPDBの接続後

切断されたPDBの接続後に、ユーザーと表領域に関する特定のルールが適用されます。

切断されたPDBの接続後、次の内容が適用されます。

  • ソースPDBのデフォルト一時表領域を使用していたPDBのユーザー・アカウントは、ターゲットPDBのデフォルト一時表領域を使用します。ソースPDB内のデフォルト以外の一時表領域を使用していたユーザー・アカウントは、ターゲットPDB内の同じローカル一時表領域を引き続き使用します。

  • ソースCDBに存在するが、ターゲットには存在しない、手動で作成された共通ユーザー・アカウントには、権限は共通して付与されていません。ただし、ターゲットCDBに共通ユーザーが存在し、PDBの共通ユーザーと同じ名前である場合、後者は前者にリンクされ、ターゲットCDBの共通ユーザーに付与された権限を持ちます。

    クローニングまたは接続されたPDBにターゲットCDBに存在しない共通ユーザー・アカウントが存在し、このユーザーがPDB内のオブジェクトを所有していない場合、Oracle Databaseでは同期ステップ中にユーザーが削除されます。それ以外の場合、ユーザー・アカウントはターゲットPDBでロックされます。ロックされたアカウントに関して、次のオプションがあります。

    • PDBをクローニングし、ルートに接続し、同じ名前で共通ユーザー・アカウントを作成します。PDBを読取り/書込みモードでオープンすると、ユーザー・アカウントに共通して付与されているロールや権限の相違点が解決され、アカウントをロック解除できます。ユーザー・アカウントに対してローカルに付与されている権限やロールは、このプロセス中も変更されません。

    • PDBに新しいローカル・ユーザー・アカウントを作成し、データ・ポンプを使用して、ロックされたユーザーのデータを新しいローカル・ユーザーのスキーマにエクスポート/インポートします。

    • ユーザー・アカウントはロックされたままにします。

    • ユーザー・アカウントを削除します。

関連項目:

切断されたPDBの接続: 例

次の例では、様々な要因に基づき、/disk1/usr/salespdb.xmlファイルまたは/disk1/usr/sales.pdbファイルを使用して、salespdbという名前の切断されたPDBを接続します。

各例で、新しいPDBが属するルートはCREATE PLUGGABLE DATABASE文の実行時の現在のコンテナによって決まります。

  • 現在のコンテナがCDBルートの場合、新しいPDBはCDBに作成されます。

  • 現在のコンテナがアプリケーション・ルートの場合、新しいアプリケーションPDBはアプリケーション・ルートのアプリケーション・コンテナ内に作成されます。

例10-3 NOCOPY句を使用して切断されたPDBを接続する方法

この例では、次の要因を想定しています。

  • 新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、AS CLONE句は必要ありません。

  • PATH_PREFIX句は必要ありません。

  • XMLファイルにファイルの現在の場所が正確に記述されています。したがって、SOURCE_FILE_NAME_CONVERTまたはSOURCE_FILE_DIRECTORY句は不要です。

  • ファイルは、正しい場所に存在します。したがって、NOCOPYが含まれています。

  • PDBにはストレージ制限は必要ありません。したがって、STORAGE句は必要ありません。

  • ターゲットの場所に、XMLファイルで指定されている一時ファイルと同じ名前のファイルがあります。したがって、TEMPFILE REUSE句が必要です。

前述の要因に基づき、次の文によってPDBを接続します。

CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml' 
  NOCOPY 
  TEMPFILE REUSE;

例10-4 AS CLONE句およびNOCOPY句を使用して切断されたPDBを接続する方法

この例では、次の要因を想定しています。

  • 新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBに基づいています。したがって、AS CLONE句が必要です。AS CLONE句は、新しいPDBに一意の識別子があることを保証します。

  • PATH_PREFIX句は必要ありません。

  • XMLファイルにファイルの現在の場所が正確に記述されています。したがって、SOURCE_FILE_NAME_CONVERTまたはSOURCE_FILE_DIRECTORY句は不要です。

  • ファイルは、正しい場所に存在します。したがって、NOCOPYが含まれています。

  • PDBにはストレージ制限は必要ありません。したがって、STORAGE句は必要ありません。

  • ターゲットの場所に、XMLファイルで指定されている一時ファイルと同じ名前のファイルがあります。したがって、TEMPFILE REUSE句が必要です。

前述の要因に基づき、次の文によってPDBを接続します。

CREATE PLUGGABLE DATABASE salespdb AS CLONE USING '/disk1/usr/salespdb.xml' 
  NOCOPY
  TEMPFILE REUSE;

例10-5 SOURCE_FILE_NAME_CONVERT、NOCOPYおよびSTORAGEの各句を使用して切断されたPDBを接続する方法

この例では、次の要因を想定しています。

  • 新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、AS CLONE句は必要ありません。

  • PATH_PREFIX句は必要ありません。

  • XMLファイルでは、ファイルの現在の場所が正確に記述されていません。したがって、SOURCE_FILE_NAME_CONVERT句またはSOURCE_FILE_DIRECTORY句が必要です。この例では、ファイルが/disk1/oracle/salesに存在することがXMLファイルで示されていますが、ファイルは/disk2/oracle/salesにあり、SOURCE_FILE_NAME_CONVERT句が使用されています。

  • ファイルは、正しい場所に存在します。したがって、NOCOPYが含まれています。

  • PDBにストレージ制限を強制する必要があります。したがって、STORAGE句が必要です。特に、PDBに属する表領域はいずれも2GBを超えることはできません。

  • ターゲットの場所に、XMLファイルで指定されている一時ファイルと同じ名前のファイルがあります。したがって、TEMPFILE REUSE句が必要です。

前述の要因に基づき、次の文によってPDBを接続します。

CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml' 
  SOURCE_FILE_NAME_CONVERT = ('/disk1/oracle/sales/', '/disk2/oracle/sales/')
  NOCOPY
  STORAGE (MAXSIZE 2G)
  TEMPFILE REUSE;

例10-6 COPY、PATH_PREFIXおよびFILE_NAME_CONVERTの各句を使用して切断されたPDBを接続する方法

この例では、次の要因を想定しています。

  • 新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、AS CLONE句は必要ありません。

  • パス接頭辞をPDBのディレクトリ・パスに追加する必要があります。したがって、PATH_PREFIX句が必要です。この例では、パス接頭辞/disk2/oracle/sales/をPDBのディレクトリ・オブジェクト・パスに追加しています。

  • XMLファイルにファイルの現在の場所が正確に記述されています。したがって、SOURCE_FILE_NAME_CONVERTまたはSOURCE_FILE_DIRECTORY句は不要です。

  • ファイルは、正しい場所に存在しません。したがって、COPYまたはMOVEが含まれている必要があります。この例では、ファイルはコピーされます。

    CREATE_FILE_DEST句が使用されておらず、Oracle Managed Filesが有効になっておらず、PDB_FILE_NAME_CONVERT初期化パラメータが設定されていません。したがって、FILE_NAME_CONVERT句が必要です。この例では、ファイルは/disk1/oracle/salesから/disk2/oracle/salesにコピーされます。

  • PDBにはストレージ制限は必要ありません。したがって、STORAGE句は必要ありません。

  • ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、TEMPFILE REUSE句は必要ありません。

前述の要因に基づき、次の文によってPDBを接続します。

CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml' 
  COPY
  PATH_PREFIX = '/disk2/oracle/sales/'
  FILE_NAME_CONVERT = ('/disk1/oracle/sales/', '/disk2/oracle/sales/');

例10-7 SOURCE_FILE_NAME_CONVERT、MOVE、FILE_NAME_CONVERTおよびSTORAGEの各句を使用して切断されたPDBを接続する方法

この例では、次の要因を想定しています。

  • 新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、AS CLONE句は必要ありません。

  • PATH_PREFIX句は必要ありません。

  • XMLファイルでは、ファイルの現在の場所が正確に記述されていません。したがって、SOURCE_FILE_NAME_CONVERT句またはSOURCE_FILE_DIRECTORY句が必要です。この例では、ファイルが/disk1/oracle/salesに存在することがXMLファイルで示されていますが、ファイルは/disk2/oracle/salesにあり、SOURCE_FILE_NAME_CONVERT句が使用されています。

  • ファイルは、PDBの正しい最終的な場所に存在しません。したがって、COPYまたはMOVEが含まれている必要があります。この例では、MOVEを指定してファイルを移動します。

    CREATE_FILE_DEST句が使用されておらず、Oracle Managed Filesが有効になっておらず、PDB_FILE_NAME_CONVERT初期化パラメータが設定されていません。したがって、FILE_NAME_CONVERT句が必要です。この例では、ファイルは/disk2/oracle/salesから/disk3/oracle/salesにコピーされます。

  • PDBにストレージ制限を強制する必要があります。したがって、STORAGE句が必要です。特に、PDBに属する表領域はいずれも2GBを超えることはできません。

  • ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、TEMPFILE REUSE句は必要ありません。

前述の要因に基づき、次の文によってPDBを接続します。

CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml' 
  SOURCE_FILE_NAME_CONVERT = ('/disk1/oracle/sales/', '/disk2/oracle/sales/')
  MOVE
  FILE_NAME_CONVERT = ('/disk2/oracle/sales/', '/disk3/oracle/sales/')
  STORAGE (MAXSIZE 2G);

例10-8 SOURCE_FILE_DIRECTORY、MOVE、FILE_NAME_CONVERTおよびSTORAGEの各句を使用して切断されたPDBを接続する方法

この例では、次の要因を想定しています。

  • 新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、AS CLONE句は必要ありません。

  • PATH_PREFIX句は必要ありません。

  • XMLファイルでは、ファイルの現在の場所が正確に記述されていません。したがって、SOURCE_FILE_NAME_CONVERT句またはSOURCE_FILE_DIRECTORY句が必要です。この例では、ファイルが/disk1/oracle/salesに存在することがXMLファイルで示されていますが、ファイルは/disk2/oracle/salesにあり、SOURCE_FILE_DIRECTORY句が使用されています。

  • ファイルは、PDBの正しい最終的な場所に存在しません。したがって、COPYまたはMOVEが含まれている必要があります。この例では、MOVEを指定してファイルを移動します。

    CREATE_FILE_DEST句が使用されておらず、Oracle Managed Filesが有効になっておらず、PDB_FILE_NAME_CONVERT初期化パラメータが設定されていません。したがって、FILE_NAME_CONVERT句が必要です。この例では、ファイルは/disk2/oracle/salesから/disk3/oracle/salesにコピーされます。

  • PDBにストレージ制限を強制する必要があります。したがって、STORAGE句が必要です。特に、PDBに属する表領域はいずれも2GBを超えることはできません。

  • ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、TEMPFILE REUSE句は必要ありません。

前述の要因に基づき、次の文によってPDBを接続します。

CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml' 
  SOURCE_FILE_DIRECTORY = '/disk2/oracle/sales/'  
  MOVE
  FILE_NAME_CONVERT = ('/disk2/oracle/sales/', '/disk3/oracle/sales/')
  STORAGE (MAXSIZE 2G);

例10-9 アーカイブ・ファイルを使用して切断されたPDBを接続する方法

この例では、次の要因を想定しています。

  • 切断されたPDBは、sales.pdbという名前の.pdbアーカイブ・ファイルにあります。アーカイブ・ファイルには、XMLメタデータ・ファイルおよびPDBのファイル(データファイルやウォレット・ファイルなど)が圧縮形式で含まれ、これらのファイルはCREATE PLUGGABLE DATABASE文の実行時に.pdbアーカイブ・ファイルの現在のディレクトリに抽出されます。

  • 新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、AS CLONE句は必要ありません。

  • PATH_PREFIX句は必要ありません。

  • PDBにストレージ制限を強制する必要があります。したがって、STORAGE句が必要です。特に、PDBに属する表領域はいずれも2GBを超えることはできません。

  • ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、TEMPFILE REUSE句は必要ありません。

前述の要因に基づき、次の文によってアーカイブ・ファイルを使用してPDBを接続します。

CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/sales.pdb' 
  STORAGE (MAXSIZE 2G);