アプリケーション・シードの作成

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

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

アプリケーション・コンテナに新しいアプリケーション・シードを作成するには、CREATE PLUGGABLE DATABASE文でAS SEED句を使用します。

アプリケーション・シードを使用して、アプリケーションPDBにアプリケーション・ルートのアプリケーションがインストールされているアプリケーション・コンテナをプロビジョニングできます。通常は、アプリケーション・コンテナのアプリケーションは、アプリケーション・シードの作成前にアプリケーション・ルートにインストールされます。アプリケーション・シードの作成後、アプリケーションがアプリケーション・シードにインストールされるように、アプリケーション・シードがアプリケーション・ルートと同期されます。それが完了すると、アプリケーション・シードを使用して作成されたPDBにアプリケーションがインストールされます。アプリケーション・ルートのアプリケーションがアップグレードまたはパッチ適用される場合、アプリケーション・シードをアプリケーション・ルートと同期して、これらの変更を適用する必要があります。

アプリケーション・コンテナにはゼロまたは1つのアプリケーション・シードを含めることができます。CREATE PLUGGABLE DATABASEAS SEED句を使用してアプリケーション・シードを作成する場合、名前は指定しません。アプリケーション・シード名は常にapplication_container_name$SEEDで、application_container_nameはアプリケーション・シードのアプリケーション・コンテナの名前です。たとえば、salesactアプリケーション・コンテナのアプリケーション・シードの名前はsalesact$SEEDである必要があります。

新規アプリケーション・シードの作成時に、CREATE PLUGGABLE DATABASE文でアプリケーション・コンテナの管理者を指定する必要があります。この文では、管理者をアプリケーション・コンテナのローカル・ユーザーとして作成し、PDB_DBAロールを管理者にローカルに付与します。

アプリケーション・シードの準備

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

アプリケーション・シードを作成する前に、次の前提条件が満たされていることを確認してください。

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

    CDBの作成: 基本的なステップを参照してください。

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

  • アプリケーション・シードが属するアプリケーション・コンテナは読取り/書込みモードである必要があります。

  • 現在のユーザーは、アプリケーション・シードが属するアプリケーション・ルートを現在のコンテナとして持つ共通ユーザーである必要があります。

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

  • アプリケーション・シードにアプリケーション・コンテナのアプリケーションを含めるには、アプリケーションをアプリケーション・ルートにインストールする必要があります。

アプリケーション・シードの作成

アプリケーション・シードは、CREATE PLUGGABLE DATABASE文にAS SEED句を含めることで作成します。

アプリケーション・コンテナ内のアプリケーション・シードは、CDB内のシードと同様です。アプリケーション・シードにより、アプリケーション・コンテナの要件を素早く簡単に満たすアプリケーションPDBを作成できます。

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

    ノート:

    • アプリケーション・シードの作成中にエラーが返された場合、作成されているアプリケーション・シードはUNUSABLE状態になります。CDB_PDBSまたはDBA_PDBSビューを問い合せてアプリケーション・シードの状態を確認したり、アラート・ログをチェックしてアプリケーション・シードの作成エラーについてさらに学習できます。使用できないアプリケーション・シードは削除するしかありません。

    • アプリケーション・ルートのアプリケーションがアプリケーション・ルートでアップグレードまたはパッチ適用される場合、アプリケーション・シードをアプリケーション・ルートと同期して、変更を含める必要があります。

例14-8 PDBシードからのアプリケーション・シードの作成

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

  • アプリケーション・シードは、salesactというアプリケーション・コンテナに作成されています。

  • ストレージ制限は、アプリケーション・シードには不要です。したがって、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 AS SEED 
  ADMIN USER actseedadm IDENTIFIED BY password;
ALTER PLUGGABLE DATABASE salesact$SEED OPEN;
ALTER SESSION SET CONTAINER=salesact$SEED;
ALTER PLUGGABLE DATABASE APPLICATION ALL SYNC;
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE OPEN READ ONLY;

アプリケーション・コンテナ名はsalesactであるため、アプリケーション・シード名はsalesact$SEEDです。

指定されたローカル管理者の名前を持つローカル・ユーザーが作成され、このユーザーにアプリケーション・シードでローカルにPDB_DBA共通ロールが付与されます。このユーザーがアプリケーション・シードの作成時に管理者権限を付与されていない場合は、SYSおよびSYSTEM共通ユーザーを使用してアプリケーション・シードを管理します。

アプリケーション・シードは、作成時にアプリケーション・ルートと同期されます。このため、アプリケーション・シードにはアプリケーション・ルートにインストールされているアプリケーション、およびそれらのアプリケーションの一部であるアプリケーション共通オブジェクトが含まれています。アプリケーション・シードを使用して新しいアプリケーションPDBを作成した場合、アプリケーションPDBにはインストールされているアプリケーションおよびアプリケーション共通オブジェクトも含まれています。

例14-9 アプリケーションPDBからのアプリケーション・シードの作成

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

  • アプリケーション・シードは、salesactというアプリケーション・コンテナに作成されています。

  • アプリケーション・シードは、salesapppdbというアプリケーション・コンテナのアプリケーションPDBに作成されています。

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

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

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

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

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

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

前述の要因により、次の文はアプリケーション・ルートからアプリケーション・シードを作成して、アプリケーション・シードを開き、アプリケーション・シードを閉じて、アプリケーション・シードを読取り専用オープン・モードで開きます。

CREATE PLUGGABLE DATABASE AS SEED FROM salesapppdb;
ALTER PLUGGABLE DATABASE salesact$SEED OPEN;
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE OPEN READ ONLY;

アプリケーション・コンテナ名はsalesactであるため、アプリケーション・シード名はsalesact$SEEDです。

アプリケーション・シードがアプリケーションPDBから作成されました。このため、アプリケーション・シードにはアプリケーション・ルートにインストールされているアプリケーション、およびそれらのアプリケーションの一部であるアプリケーション共通オブジェクトが含まれています。アプリケーション・シードを使用して新しいアプリケーションPDBを作成した場合、アプリケーションPDBにはインストールされているアプリケーションおよびアプリケーション共通オブジェクトも含まれています。

例14-10 アプリケーション・ルートからのアプリケーション・シードの作成

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

  • アプリケーション・シードは、salesactというアプリケーション・コンテナに作成されています。アプリケーション・シードは、アプリケーション・コンテナのルートからクローニングされます。

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

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

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

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

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

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

前述の要因により、次の文はアプリケーション・ルートからアプリケーション・シードを作成し、アプリケーション・シードを開き、コンテナをアプリケーション・シードに切り替え、pdb_to_apppdb.sqlスクリプトを実行してアプリケーション・ルートをアプリケーションPDBに変換し、アプリケーション・シードを閉じ、読取り専用オープン・モードでアプリケーション・シードを開きます。

CREATE PLUGGABLE DATABASE AS SEED FROM salesact;
ALTER PLUGGABLE DATABASE salesact$SEED OPEN;
ALTER SESSION SET CONTAINER=salesact$SEED;
@$ORACLE_HOME/rdbms/admin/pdb_to_apppdb.sql
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE OPEN READ ONLY;

アプリケーション・コンテナ名はsalesactであるため、アプリケーション・シード名はsalesact$SEEDです。

アプリケーション・シードはアプリケーション・ルートから作成されました。このため、アプリケーション・シードにはアプリケーション・ルートにインストールされているアプリケーション、およびそれらのアプリケーションの一部であるアプリケーション共通オブジェクトが含まれています。アプリケーション・シードを使用して新しいアプリケーションPDBを作成した場合、アプリケーションPDBにはインストールされているアプリケーションおよびアプリケーション共通オブジェクトも含まれています。