アプリケーション・コンテナの作成

アプリケーション・コンテナは、PDBシードの使用、既存のPDBのクローニング、CREATE PLUGGABLE DATABASE文を使用した切断されたPDBの接続など、複数の方法で作成できます。

アプリケーション・コンテナの作成について

CREATE PLUGGABLE DATABASE ... AS APPLICATION CONTAINER文は、新しいアプリケーション・コンテナを作成します。

アプリケーション・コンテナは、アプリケーション・ルートおよび1つ以上のアプリケーションのデータを格納するアプリケーションPDBのコレクションから構成されます。アプリケーションPDBはアプリケーション・ルートに接続され、オプションで新規アプリケーションPDBを素早く簡単に作成するためにアプリケーション・シードを作成できます。アプリケーションPDBとアプリケーション・ルートはアプリケーション共通オブジェクトを共有できます。

アプリケーション共通オブジェクトには3つのタイプがあります。

  • メタデータリンク・アプリケーション共通オブジェクトは、表などの特定のオブジェクトのメタデータを格納するため、アプリケーション共通オブジェクトを共有するコンテナは同じ構造を持ちますが、データは異なります。

  • データリンク・アプリケーション共通オブジェクトはアプリケーション・ルートで一度定義され、ホストされるアプリケーションPDBのコンテキストで読取り専用オブジェクトとして共有されます。

  • 拡張データリンク・アプリケーション共通オブジェクトは、共有データをアプリケーション・ルートに格納しますが、アプリケーションPDBがそのオブジェクトに追加してデータを格納することも許可します。追加されるデータは、各アプリケーションPDBに固有のローカル・データです。

アプリケーション・コンテナは、CREATE PLUGGABLE DATABASE文にAS APPLICATION CONTAINER句を含めることで作成します。アプリケーション・コンテナを作成する次の手法を使用できます。

  • PDBシードの使用

  • 既存のPDBのクローニング

  • PDBの再配置

  • 切断されたPDBの接続

アプリケーション・コンテナを作成するには、現在のコンテナがCDBルートであることが必要です。また、CREATE PLUGGABLE DATABASE文でAS APPLICATION CONTAINERを指定する必要があります。Oracle Managed Filesを使用してアプリケーション・コンテナを作成する必要があります。

ノート:

いずれかのアプリケーションPDBがアプリケーション・コンテナに属する場合、そのアプリケーション・コンテナはアップグレードまたは削除できません。

アプリケーション・コンテナへの既存のアプリケーションの移行

既存のPDBを使用してアプリケーション・ルートを作成して、アプリケーションをアプリケーション・ルートに移行できます。既存のアプリケーションをアプリケーション・コンテナに移行している場合、追加タスクを実行する必要があります。接続するPDBには、データを含むアプリケーション・オブジェクトが含まれている必要があり、DBMS_PDBパッケージのプロシージャを実行して、共有するオブジェクトを指定する必要があります。また、アプリケーションの共通ユーザー、ロールまたはプロファイルがアプリケーション・ルートに存在する場合は、DBMS_PDBパッケージのプロシージャを実行して、それらが共通であることを指定する必要があります。

アプリケーションをアプリケーション・コンテナに移行した後は、アプリケーション・ルートにアプリケーションPDBを作成したり、既存のPDBを使用して、アプリケーションPDBを作成できます。

アプリケーション・コンテナの準備

アプリケーション・コンテナを作成する前に、前提条件を満たす必要があります。

  • CDBが存在していることが必要です。

  • CDBは、読取り/書込みモードである必要があります。

  • 現在のユーザーは、現在のコンテナがCDBルートである共通ユーザーである必要があります。

  • 現行ユーザーにはCREATE PLUGGABLE DATABASEシステム権限が必要です。

  • 各アプリケーション・コンテナに対して一意のアプリケーション・コンテナ名を決定する必要があります。各アプリケーション・コンテナ名は、単一CDB内のすべてのコンテナに関して一意であり、さらに、各アプリケーション・コンテナ名は、特定のリスナーを介してアクセスされたデータベース・インスタンスのすべてのCDBのスコープ内で一意である必要があります。

    アプリケーション・コンテナ名は、アプリケーション・コンテナをCDB内の他のコンテナから区別するために使用されます。アプリケーション・コンテナ名のルールは、大文字と小文字が区別されないなど、サービス名のルールと同じです。

  • Oracle Managed Filesを使用してコンテナを作成する必要があります。

  • 物理スタンバイ・データベースがあるOracle Data Guard構成でアプリケーション・コンテナを作成している場合は、アプリケーション・コンテナを作成する前に追加タスクを完了する必要があります。

  • インストール・スクリプトを使用して、既存のアプリケーションをアプリケーション・コンテナに移行している場合、そのスクリプトは実行可能である必要があります。

  • PDBを使用して既存のアプリケーションをアプリケーション・コンテナに移行している場合は、PDBをアプリケーション・ルートにクローニングするか、PDBをアプリケーション・ルートに接続することを可能にする必要があります。

アプリケーション・コンテナの作成

AS APPLICATION CONTAINER句を指定したCREATE PLUGGABLE DATABASE文を使用して、アプリケーション・コンテナを作成できます。

アプリケーション・コンテナを作成する前に、「アプリケーション・コンテナの準備」で説明した前提条件を満たします。
  1. SQL*Plusで、現在のコンテナがCDBルートであることを確認します。
  2. CREATE PLUGGABLE DATABASE文を実行し、AS APPLICATION CONTAINER句を含めます。要求された場合には、他の句を指定します。
    アプリケーション・コンテナを作成した後、それはマウント・モードになり、そのステータスはNEWになります。アプリケーション・コンテナのオープン・モードは、V$PDBSビューのOPEN_MODE列を問い合せることで表示できます。CDB_PDBSまたはDBA_PDBSビューのSTATUS列を問い合せて、アプリケーション・コンテナのステータスを表示できます。
    新規デフォルト・サービスがアプリケーション・コンテナに対して作成されます。サービスにはアプリケーション・コンテナと同じ名前があり、アプリケーション・コンテナへのアクセスに使用できます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。
  3. 新規アプリケーション・コンテナを読取り/書込みモードでオープンします。
    Oracle Databaseの新規アプリケーション・コンテナを読取り/書込みモードでオープンして、新規アプリケーション・コンテナのCDBへの統合を完了する必要があります。アプリケーション・コンテナを読取り専用モードでオープンしようとすると、エラーが返されます。アプリケーション・コンテナを読取り/書込みモードでオープンした後、そのステータスはNORMALになります。
  4. アプリケーション・コンテナをバックアップします。
    アプリケーション・コンテナは、バックアップしていないとリカバリできません。

    ノート:

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

  5. 既存のアプリケーションをアプリケーション・コンテナに移行している場合、「アプリケーション・コンテナへの既存のアプリケーションの移行」の手順に従います。
アプリケーション・コンテナはアプリケーション・ルートで作成されます。アプリケーションPDBをアプリケーション・コンテナに作成できます。

例14-2 PDBシードを使用したアプリケーション・コンテナの作成

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

  • ストレージ制限は、アプリケーション・コンテナには不要です。したがって、STORAGE句は必要ありません。

  • アプリケーション・コンテナにはデフォルトの表領域は必要ありません。

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

  • FILE_NAME_CONVERT句およびCREATE_FILE_DEST句は必要ありません。

    CDBに対してOracle Managed Filesが有効であるか、またはPDB_FILE_NAME_CONVERT初期化パラメータが設定されています。PDBシードに関連付けられているファイルは、Oracle Managed Files構成または初期化パラメータ設定に基づいて新しい場所にコピーされます。

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

  • Oracleの事前定義されたロールをPDB_DBAロールに付与する必要はありません。

次の文では、PDBシードからアプリケーション・コンテナを作成します。

CREATE PLUGGABLE DATABASE salesact AS APPLICATION CONTAINER 
  ADMIN USER salesadm IDENTIFIED BY password;

例14-3 ローカルPDBのクローニングによるアプリケーション・コンテナの作成

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

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

  • コピーしたファイルのターゲットの場所を指定するには、FILE_NAME_CONVERT句が必要です。この例では、ファイルが/disk1/oracle/pdb1/から/disk2/oracle/hract/にコピーされます。

    CREATE_FILE_DEST句は使用されず、Oracle Managed FilesもPDB_FILE_NAME_CONVERT初期化パラメータも、コピーしたファイルのターゲットの場所の指定に使用されません。

    PDBのデータファイルの場所を表示するには、「例15-34」の問合せを実行します。

  • アプリケーション・ルートに対してストレージ制限を適用する必要があります。したがって、STORAGE句が必要です。特に、アプリケーション・ルートに属するすべての表領域が2GBを超えていない必要があります。このストレージ制限は、アプリケーション・ルートに接続されているアプリケーションPDBには適用されません。

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

前述の要因に基づき、次の文によって、pdb1からhractがアプリケーション・コンテナとしてクローニングされます。

CREATE PLUGGABLE DATABASE hract AS APPLICATION CONTAINER FROM pdb1 
  FILE_NAME_CONVERT = ('/disk1/oracle/pdb1/', '/disk2/oracle/hract/')
  STORAGE (MAXSIZE 2G);

ノート:

既存のアプリケーションを新しいアプリケーション・コンテナに移行している場合、「アプリケーション・コンテナへの既存のアプリケーションの移行」の手順に従います。

例14-4 切断されたPDBの接続によるアプリケーション・コンテナの作成

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

  • 新しいアプリケーション・コンテナは、CDB内に既存のPDBまたはアプリケーション・コンテナを作成するために使用された同じ切断されたPDBには基づいていません。したがって、AS CLONE句は必要ありません。

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

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

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

  • アプリケーション・コンテナに対してストレージ制限を適用する必要があります。したがって、STORAGE句が必要です。特に、アプリケーション・コンテナに属するすべての表領域が2GBを超えていない必要があります。

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

次の文は、PDBを接続します。

CREATE PLUGGABLE DATABASE payrollact AS APPLICATION CONTAINER 
  USING '/disk1/usr/payrollpdb.xml' 
  SOURCE_FILE_NAME_CONVERT = ('/disk1/oracle/payroll/', 
                              '/disk2/oracle/payroll/')
  NOCOPY
  STORAGE (MAXSIZE 2G)
  TEMPFILE REUSE;

ノート:

既存のアプリケーションを新しいアプリケーション・コンテナに移行している場合、「アプリケーション・コンテナへの既存のアプリケーションの移行」の手順に従います。