14 アプリケーション・コンテナおよびシードの作成と削除

いくつかの異なる方法でアプリケーション・コンテナおよびアプリケーション・シードを作成できます。アプリケーション・コンテナをCDBから削除したり、アプリケーション・コンテナからアプリケーション・シードを削除することもできます。

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

アプリケーション・コンテナはオプションのユーザー作成CDBコンポーネントで、1つ以上のアプリケーション・バックエンドのデータおよびメタデータが格納されます。CDBにはゼロ以上のアプリケーション・コンテナが含まれます。

アプリケーション・コンテナ内で、アプリケーションはアプリケーション・ルートに格納される共通データおよびメタデータの名前付けおよびバージョニングされたセットです。このアプリケーション・コンテナのコンテキストでは、「アプリケーション」という用語は「マスター・アプリケーション定義」を意味します。たとえば、表、ビュー、パッケージなどの定義をアプリケーションに含めることができます。

たとえば、1つのアプリケーション・コンテナ内で複数の販売関連PDBを作成し、これらのPDBが一連の共通表および表定義で構成されるアプリケーションを共有することができます。複数のHR関連PDBを、その独自の共通表および表定義とともに別のアプリケーション・コンテナ内で格納できます。

AS APPLICATION CONTAINER句を使用したCREATE PLUGGABLE DATABASE文によってアプリケーション・コンテナのアプリケーション・ルートが作成され、これによって暗黙的にアプリケーション・コンテナ自体が作成されます。アプリケーション・コンテナを最初に作成した時点では、PDBは含まれていません。アプリケーションPDBを作成するには、アプリケーション・ルートに接続してCREATE PLUGGABLE DATABASE文を実行する必要があります。

CREATE PLUGGABLE DATABASE文で、例としてsaas_sales_acなどのコンテナ名(アプリケーション・ルート名と同じ)を指定する必要があります。アプリケーション・コンテナ名は、CDB内と、そのインスタンスが特定のリスナーを介してアクセスされるすべてのCDBのスコープ内で一意にする必要があります。すべてのアプリケーション・コンテナに、アプリケーション・コンテナと同じ名前のデフォルト・サービスがあります。

14.1.1 アプリケーション・コンテナの目的

アプリケーション・コンテナはある意味で、CDB内のアプリケーション固有CDBとして機能します。アプリケーション・コンテナにはCDB自身のように複数のPDBが含まれ、これらのPDBはメタデータおよびデータを共有できます。

アプリケーション・ルートによってアプリケーションPDBが、アプリケーション(このコンテキストでは共通メタデータおよびデータの名前付けおよびバージョニングされたセット)を共有できます。一般的なアプリケーションではアプリケーション共通ユーザー、メタデータリンク共通オブジェクト、およびデータリンク共通オブジェクトがインストールされます。

14.1.1.1 アプリケーション・コンテナの主な利点

アプリケーション・コンテナにより、個々のアプリケーションを別々のPDBに格納することの利点が提供されます。

  • アプリケーション・ルートは、すべてのアプリケーションPDBが共有できるメタデータおよびデータを格納します。

    たとえば、すべてのアプリケーションPDBは中央にある1つの表(デフォルトのアプリケーション・ロールをリストする表など)のデータを共有できます。また、すべてのPDBはPDB固有行の追加先である表定義を共有できます。

  • マスター・アプリケーション定義は、各PDBで個別のコピーを保持するのではなく、アプリケーション・ルートで保持されます。

    アプリケーション・ルートでアプリケーションをアップグレードすると、その変更はすべてのアプリケーションPDBに自動的に伝播されます。アプリケーション・バックエンドには、データリンク共通オブジェクトapp_rolesが含まれている可能性があります。これは、adminmanagersales_repなどのデフォルト・ロールをリストする表です。アプリケーションPDBに接続したユーザーは、この表を問い合せることができます。

  • アプリケーション・コンテナには、アプリケーション・シード、アプリケーションPDBおよびプロキシPDB (他のCDB内のPDBを参照する)を含めることができます。

  • 新規のアプリケーションPDBをアプリケーション・シードから迅速に作成できます。

  • アプリケーション・コンテナですべてのPDBについてレポートするビューを問合せできます。

  • アプリケーション・ルートへの接続中に、CONTAINERS関数を使用して、複数のPDB内のオブジェクトに対してDMLを実行できます。

    たとえば、あらゆるアプリケーションPDBにproducts表が存在する場合、アプリケーション・ルートに接続して、単一のSELECT文を使用してすべてのアプリケーションPDB内の製品を問合せできます。

  • PDBをアプリケーション・ルートから切断してから、新しいOracle Databaseリリースのアプリケーション・ルートにそのPDBを接続できます。したがって、PDBはOracle Databaseのアップグレードに役立ちます。

14.1.1.2 アプリケーション・コンテナのユースケース: SaaS

SaaSデプロイメントでは、個々が別の顧客用で、メタデータおよびデータを共有する複数のアプリケーションPDBを使用できます。

純粋なSaaS環境では、マスター・アプリケーション定義はアプリケーション・ルート内に存在しますが、顧客固有のデータはその固有のアプリケーションPDB内に存在します。たとえば、sales_appはアプリケーション・ルート内のアプリケーション・モデルです。cust1_pdbというアプリケーションPDBには顧客1用の販売データのみが含まれる一方、cust2_pdbというアプリケーションPDBには顧客2用の販売データのみが含まれます。接続、切断、クローニングおよびその他のPDBレベルの操作を、個々の顧客PDBで使用できます。

図14-1 SaaSのユースケース

図14-1の説明が続きます
「図14-1 SaaSのユースケース」の説明

純粋なSaas構成には次のメリットがあります。

  • パフォーマンス

  • セキュリティ

  • 複数の顧客のサポート

    各顧客のデータは、その固有のコンテナ内に存在しますが、多くの顧客をまとめて管理できるように統合されます。このモデルにより、多くの要素を1つにまとめて管理する規模の経済性が、DBAのみでなくアプリケーション管理者にも適用されます。

14.1.1.3 アプリケーション・コンテナのユースケース: 論理データ・ウェアハウス

顧客は複数のアプリケーションPDBを使用してデータの主権の問題に対応できます。

サンプル・ユースケースでは、ある会社が各会計四半期に固有のデータを別個のPDBに配置しています。たとえば、sales_acというアプリケーション・コンテナにq1_2016_pdbq2_2016_pdbq3_2016_pdbおよびq4_2016_pdbが含まれています。個々のトランザクションは、関連する四半期に対応するPDB内で定義します。1年間の業績を集計するレポートを生成するには、CONTAINERS()句を使用して4つのPDB間で集計します。

この論理ウェアハウス設計の利点は次のとおりです。

  • 1つのPDBに固有のデータに対するETLが他のPDBに影響しません。

  • 実行計画が、実際のデータ分布に基づいているため、より効率的です。

14.1.2 アプリケーション・ルート

アプリケーション・コンテナには、コンテナ内のアプリケーションPDBの親であるアプリケーション・ルートが1つだけあります。

アプリケーション・ルートになるためのプロパティは作成時に確立され、変更することはできません。アプリケーション・ルートが属すコンテナはCDBルートのみです。アプリケーション・ルートはある面ではCDBルートに類似し、別の面ではPDBに類似しています。

  • CDBルートと同様に、アプリケーション・ルートは接続されているPDBの親コンテナとして機能します。アプリケーション・ルートへの接続中に、共通ユーザーおよび権限の管理、アプリケーションPDBの作成、コンテナの切替え、およびアプリケーション・コンテナのすべてのPDBに適用されるDDLの発行などができます。

  • PDBと同様に、CREATE PLUGGABLE DATABASE文でアプリケーション・ルートを作成し、それをALTER PLUGGABLE DATABASEで変更し、その可用性をSTARTUPおよびSHUTDOWNで変更することができます。アプリケーション・ルートの接続、切断および削除にはDDLを使用できます。アプリケーション・ルートには固有のサービス名があり、ユーザーはPDBに接続するのと同じ方法でアプリケーション・ルートに接続できます。

アプリケーション・ルートは、アプリケーション共通オブジェクトと呼ばれるユーザー作成共通オブジェクトを格納できるため、CDBルートおよび標準PDBの両方と異なります。アプリケーション共通オブジェクトはアプリケーション・ルートに接続されたアプリケーションPDBにとってアクセス可能です。アプリケーション共通オブジェクトはCDBルート、他のアプリケーション・ルート、またはアプリケーション・ルートに属さないPDBには表示されません。

例14-1 アプリケーション・ルートの作成

この例では、管理共通ユーザーc##systemとしてCDBルートにログインします。saas_sales_acというアプリケーション・コンテナを作成し、コンテナと同じ名前を持つアプリケーション・ルートをオープンします。

-- Create the application container called saas_sales_ac
CREATE PLUGGABLE DATABASE saas_sales_ac AS APPLICATION CONTAINER
  ADMIN USER saas_sales_ac_adm IDENTIFIED BY manager; 

-- Open the application root
ALTER PLUGGABLE DATABASE saas_sales_ac OPEN;

現在のコンテナをsaas_sales_acに設定し、このコンテナがアプリケーション・ルートであることを確認します。

-- Set the current container to saas_sales_ac
ALTER SESSION SET CONTAINER = saas_sales_ac;

COL NAME FORMAT a15
COL ROOT FORMAT a4
SELECT CON_ID, NAME, APPLICATION_ROOT AS ROOT, 
       APPLICATION_PDB AS PDB,
FROM   V$CONTAINERS;

    CON_ID NAME            ROOT PDB
---------- --------------- ---- ---
         3 SAAS_SALES_AC   YES	NO

14.1.3 アプリケーションPDB

アプリケーションPDBはアプリケーション・コンテナ内に存在するPDBです。CDB内のPDBはすべて、ゼロまたは1つのアプリケーション・コンテナに存在します。

たとえば、saas_sales_acアプリケーション・コンテナで複数の顧客がサポートされ、個々の顧客アプリケーションがそのデータを別々のPDBに格納する場合があります。cust1_sales_pdbおよびcust2_sales_pdbのアプリケーションPDBがsaas_sales_acに存在する場合、これらは他のアプリケーション・コンテナには属していません(ただし、PDBは必然的にCDBルートにも属します)。

アプリケーション・ルートへの接続中にCREATE PLUGGABLE DATABASEを実行して、アプリケーションPDBを作成します。シードからアプリケーションPDBを作成するか、PDBをクローニングするか、または切断されたPDBを接続することができます。CDBルートに接続しているPDBと同様に、アプリケーションPDBをクローニング、切断または削除できます。ただし、アプリケーションPDBは常にアプリケーション・ルートに属す必要があります。

14.1.4 アプリケーション・シード

アプリケーション・シードはアプリケーション・コンテナ内のオプションのユーザー作成PDBです。アプリケーション・コンテナにはゼロまたは1つのアプリケーション・シードが含まれます。

アプリケーション・シードを使用すると、アプリケーションPDBを簡単に作成できます。これはアプリケーション・コンテナ内で、PDB$SEEDがCDB内で果たす役割と同じ役割を果たします。

アプリケーション・シード名は常にapplication_container_name$SEEDとなり、application_container_nameはアプリケーション・コンテナの名前を表します。たとえば、CREATE PDB ... AS SEED文を使用して、saas_sales_acアプリケーション・コンテナにsaas_sales_ac$SEEDを作成します。

14.2 アプリケーション・コンテナの作成および削除

アプリケーション・コンテナは、PDBシードの使用、既存のPDBのクローニング、切断されたPDBの接続など、複数の方法で作成できます。アプリケーション・コンテナをCDBから削除することもできます。

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

CREATE PLUGGABLE DATABASE文を使用して、CDB内にアプリケーション・コンテナを作成できます。

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

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を作成できます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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;

注意:

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

14.2.2 CDBからのアプリケーション・コンテナの切断

アプリケーション・コンテナをCDBから切断できます。

14.2.2.1 アプリケーション・コンテナの切断について

アプリケーション・コンテナを切断すると、アプリケーション・コンテナがCDBから関連付け解除されます。

通常、アプリケーション・コンテナは、そのアプリケーション・コンテナを別のCDBに移動する場合に切断します。アプリケーション・コンテナは、不要になった場合も切断できます。

アプリケーション・コンテナの切断は、PDBの切断と似ています。アプリケーション・コンテナを切断するには、CDBルートに接続し、ALTER PLUGGABLE DATABASE文を使用して、XMLファイルまたは.pdbファイルを指定します。XMLファイル(拡張子.xml)を指定すると、そのファイルには、切断後にアプリケーション・コンテナに関するメタデータが含まれます。このSQL文によってXMLファイルが作成され、このXMLファイルには、ターゲットCDBでCREATE PLUGGABLE DATABASE文を使用してアプリケーション・コンテナを接続できるようにするのに必要な情報が含められます。.pdbファイルを指定すると、そのファイルにはアプリケーション・コンテナについて記述したXMLファイルおよびアプリケーション・コンテナで使用されるファイル(データファイルやウォレット・ファイルなど)の圧縮アーカイブが含まれます。.pdbファイルにより、単一の圧縮されたファイル(複数ファイルではない)を新しい場所にコピーしてアプリケーション・コンテナをCDBに接続できます。

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

アプリケーション・コンテナをCDBから完全に削除するには、それを削除できます。切断されたアプリケーション・コンテナに対してサポートされる操作は、アプリケーション・コンテナの削除のみです。アプリケーション・コンテナは、同じCDBに再接続する前に、CDBから削除する必要があります。アプリケーション・コンテナは、CDBに接続されているときにのみ使用可能です。

関連項目:

14.2.2.2 アプリケーション・コンテナの切断

ALTER PLUGGABLE DATABASE ... UNPLUG INTO文を使用してアプリケーション・コンテナを切断します。

前提条件

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

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

  • アプリケーション・コンテナは少なくとも1回オープンされている必要があります。

  • アプリケーション・コンテナにアプリケーションPDBが接続されていない必要があります。

  • アプリケーション・コンテナにアプリケーション・シードが接続されていない必要があります。

注意:

透過的データ暗号化で暗号化されているデータが含まれたアプリケーション・コンテナを切断する場合は、『Oracle Database Advanced Securityガイド』の指示に従います。

アプリケーション・コンテナを切断する手順:

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

  2. アプリケーション・コンテナをクローズします。

    Oracle Real Application Clusters (Oracle RAC)環境では、アプリケーション・コンテナがすべてのインスタンスでクローズされている必要があります。

  3. UNPLUG INTO句を指定してALTER PLUGGABLE DATABASE文を実行し、切断するアプリケーション・コンテナおよびアプリケーション・コンテナのXMLメタデータ・ファイルまたは.pdbファイルの名前と場所を指定します。

例14-5 アプリケーション・コンテナsalesactの切断

このALTER PLUGGABLE DATABASE文は、アプリケーション・コンテナsalesactを切断し、salesact.xmlメタデータ・ファイルを/oracle/data/ directoryに作成します。

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

14.2.3 アプリケーション・コンテナの削除

アプリケーション・コンテナは、アプリケーション・コンテナをあるCDBから別のCDBに移動する場合、またはアプリケーション・コンテナが不要になった場合に削除できます。

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

アプリケーション・コンテナを削除する場合、そのアプリケーション・コンテナのデータファイルは、DROP PLUGGABLE DATABASE文にある次のいずれかの句を使用して保持または削除できます。

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

    KEEP DATAFILESが指定されていても、アプリケーション・コンテナの一時ファイルは不要になったため削除されます。

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

    アプリケーション・コンテナがSNAPSHOT COPY句を指定して作成された場合は、アプリケーション・コンテナを削除する際にINCLUDING DATAFILESを指定する必要があります。

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

  • アプリケーション・コンテナはマウント・モードであるか、切断されている必要があります。

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

    「アプリケーション・コンテナの切断」を参照してください。

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

  • アプリケーション・コンテナにアプリケーションPDBが接続されていない必要があります。

  • アプリケーション・コンテナにアプリケーション・シードが接続されていない必要があります。

注意:

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

アプリケーション・コンテナを削除する手順:

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

    「現在のコンテナについて」および「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. DROP PLUGGABLE DATABASE文を実行し、削除するアプリケーション・コンテナを指定します。

例14-6 データファイルを保持した状態でのアプリケーション・コンテナsalesactの削除

DROP PLUGGABLE DATABASE salesact
  KEEP DATAFILES;

例14-7 アプリケーション・コンテナsalesactとデータファイルの削除

DROP PLUGGABLE DATABASE saleact
  INCLUDING DATAFILES;

14.3 アプリケーション・シードの作成および削除

アプリケーション・シードは、PDBシードの使用、既存のPDBのクローニング、切断されたPDBの接続など、複数の方法で作成できます。アプリケーション・シードをアプリケーション・コンテナから削除することもできます。

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

CREATE PLUGGABLE DATABASE文を使用して、アプリケーション・コンテナ内にアプリケーション・シードを作成できます。

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

アプリケーション・コンテナに新しいアプリケーション・シードを作成するには、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ロールを管理者にローカルに付与します。

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

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

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

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

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

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

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

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

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

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

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

アプリケーション・シードは、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にはインストールされているアプリケーションおよびアプリケーション共通オブジェクトも含まれています。

14.3.2 アプリケーション・コンテナからのアプリケーション・シードの切断

アプリケーション・コンテナからアプリケーション・シードを切断できます。

14.3.2.1 アプリケーション・シードの切断について

アプリケーション・シードを切断すると、アプリケーション・シードがアプリケーション・コンテナから関連付け解除されます。アプリケーション・シードを使用しなくなった場合は、アプリケーション・シードを切断します。

アプリケーション・シードの切断は、PDBの切断と似ています。アプリケーション・シードを切断するには、アプリケーション・ルートに接続し、ALTER PLUGGABLE DATABASE文を使用して、XMLファイルまたは.pdbファイルを指定します。XMLファイル(拡張子.xml)を指定すると、そのファイルには切断後にアプリケーション・シードに関するメタデータが含まれます。このSQL文によってXMLファイルが作成され、このXMLファイルには、ターゲットCDBでCREATE PLUGGABLE DATABASE文を使用し、それをPDBまたはアプリケーションPDBとして接続できるようにするために必要な情報が含められます。.pdbファイルを指定すると、それにはアプリケーション・シードについて記述したXMLファイルおよびアプリケーション・シードで使用されるファイル(データファイルやウォレット・ファイルなど)の圧縮アーカイブが含まれます。.pdbファイルにより、単一の圧縮されたファイル(複数ファイルではない)を新しい場所にコピーし、PDBまたはアプリケーションPDBとして接続できます。

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

アプリケーション・シードをアプリケーション・コンテナから完全に削除するには、それを削除できます。切断されたアプリケーション・シードに対してサポートされる操作は、アプリケーション・シードの削除のみです。アプリケーション・シードは、同じアプリケーション・コンテナに再接続する前に、アプリケーション・コンテナから削除する必要があります。アプリケーション・シードは、アプリケーション・コンテナに接続されているときにのみ使用可能です。

関連項目:

14.3.2.2 アプリケーション・シードの切断

アプリケーション・シードを切断するには、ALTER PLUGGABLE DATABASE ... UNPLUG INTO文を実行します。

前提条件

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

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

  • アプリケーション・シードは少なくとも1回オープンされている必要があります。

注意:

透過的データ暗号化で暗号化されているデータが含まれたアプリケーション・シードを切断する場合は、『Oracle Database Advanced Securityガイド』の指示に従います。

アプリケーション・シードを切断する手順:

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

  2. アプリケーション・シードをクローズします。

    Oracle Real Application Clusters (Oracle RAC)環境では、アプリケーション・シードがすべてのインスタンスでクローズされている必要があります。

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

例14-11 アプリケーション・シードsalesact$SEEDの切断

このALTER PLUGGABLE DATABASE文は、アプリケーション・シードsalesact$SEEDを切断し、salesact$SEED.xmlメタデータ・ファイルを/oracle/data/ディレクトリに作成します。

ALTER PLUGGABLE DATABASE salesact$SEED 
  UNPLUG INTO '/oracle/data/saleact$SEED.xml';

14.3.3 アプリケーション・シードの削除

DROP PLUGGABLE DATABASE文を使用して、アプリケーション・シードを削除できます。アプリケーション・シードが必要ではなくなった場合は削除できます。

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

アプリケーション・シードを削除する場合、次のいずれかの句を使用して、アプリケーション・シードのデータファイルを保持または削除できます。

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

    KEEP DATAFILESが指定されていても、アプリケーション・シードの一時ファイルは不要になったため削除されます。

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

    アプリケーション・シードがSNAPSHOT COPY句を指定して作成された場合は、アプリケーション・シードを削除する際にINCLUDING DATAFILESを指定する必要があります。

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

  • アプリケーション・シードはマウント・モードであるか、切断されている必要があります。

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

注意:

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

アプリケーション・シードを削除する手順:

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

  2. DROP PLUGGABLE DATABASE文を実行し、アプリケーション・シードを指定します。

例14-12 データファイルを保持した状態でのアプリケーション・シードsalesact$SEEDの削除

DROP PLUGGABLE DATABASE salesact$SEED
  KEEP DATAFILES;

14.4 アプリケーションPDBの作成

アプリケーションPDBを作成するには、アプリケーション・ルートが現在のコンテナであるときに、CREATE PLUGGABLE DATABASE文を実行します。

アプリケーションPDBは、CDBルートにPDBを作成するために使用するSQL文と同じSQL文を使用して作成できます。CREATE PLUGGABLE DATABASE文をアプリケーション・ルートで実行した場合、新しく作成したPDBはアプリケーションPDBです。この文はアプリケーション・ルートで実行する必要があり、そのアプリケーション・ルートに定義されているアプリケーション・データベースに対して明確な依存関係があります。

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

    注意:

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

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