7 PDBを最初から作成

CREATE PLUGGABLE DATABASE文により、PDBシード(PDB$SEED)のファイルを使用してCDBにPDBを作成します。

この文を使用すると、アプリケーション・シードまたはPDBシードのファイルを使用して、アプリケーション・コンテナにアプリケーションPDBを作成することもできます。

関連項目:

CREATE PLUGGABLE DATABASE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください

PDBを最初から作成する方法について

CREATE PLUGGABLE DATABASE文により、PDBシードのファイルを使用して新しいPDBを作成したり、アプリケーション・シードまたはPDBシードのファイルからアプリケーションPDBを作成します。

この文では、これらのファイルを新しい場所にコピーし、新しいPDBに関連付けます。次の図は、この手法でCDBルートを現在のコンテナとして使用して、新しいPDBをCDBに作成する方法を示しています。

図7-1 PDB$SEEDファイルを使用したCDBルートでのPDBの作成

図7-1の説明が続きます
「図7-1 PDB$SEEDファイルを使用したCDBルートでのPDBの作成」の説明

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

図7-2 アプリケーション・シード・ファイルを使用したアプリケーション・ルートでのPDBの作成

図7-2の説明が続きます
「図7-2 アプリケーション・シード・ファイルを使用したアプリケーション・ルートでのPDBの作成」の説明

関連項目:

アプリケーション・コンテナにアプリケーション・シードが含まれ、シードからアプリケーションPDBを作成するためにCREATE PLUGGABLE DATABASE文がアプリケーション・ルートで実行されている場合、アプリケーションPDBはそのアプリケーション・シードを使用して作成されます。ただし、アプリケーション・コンテナにアプリケーション・シードが含まれず、シードからアプリケーションPDBを作成するためにCREATE PLUGGABLE DATABASE文がアプリケーション・ルートで実行されている場合、アプリケーションPDBはPDBシード(PDB$SEED)を使用して作成されます。

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

PDBシードまたはアプリケーション・シードを使用してPDBを作成する前に、表6-3のシードからのPDBの作成に適用される質問に対処します。この表では、様々な要因に基づいて指定する必要があるCREATE PLUGGABLE DATABASEの句について説明しています。

PDBの作成

CREATE PLUGGABLE DATABASE文を使用すると、PDBシードからPDBを作成したり、アプリケーション・シードまたはPDBシードからアプリケーションPDBを作成したりできます。

前提条件

PDBシード(PDB$SEED)からPDBを作成するか、アプリケーション・シードまたはPDBシードからアプリケーションPDBを作成する前に、「PDB作成の一般的な前提条件」で説明している前提条件を満たす必要があります。

PDBを作成するには:

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

    現在のコンテナがCDBルートの場合、PDBはPDBシードのファイルを使用してCDBに作成されます。

    現在のコンテナがアプリケーション・ルートの場合、アプリケーションPDBはアプリケーション・シードのファイルを使用してアプリケーション・コンテナに作成されます。アプリケーション・コンテナにアプリケーション・シードがない場合、アプリケーションPDBはPDBシードのファイルを使用してアプリケーション・コンテナに作成されます。

  2. CREATE PLUGGABLE DATABASE文を実行し、PDBのローカル管理者を指定します。他の句が必要な場合はそれらを指定します。

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

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

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

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

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

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

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

ノート:

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

PDBの作成: 例

次の例では、様々な要因に基づき、salespdbという名前の新しいPDBおよびsalesadmローカル管理者を作成します。

salespdb PDBの作成に加えて、この文では、PDB_DBAロールをPDB管理者であるsalesadmに付与し、指定したOracleの事前定義済ロールをPDB_DBAロールにPDBでローカルに付与します。

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

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

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

句を使用しないPDBの作成: 例

この例は、PDBを作成する最も簡単な方法を示しています。

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

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

  • PDBにはデフォルトの表領域は必要ありません。

  • 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 salespdb ADMIN USER salesadm IDENTIFIED BY pwd;

関連項目:

PDBの作成、およびPDB管理者へのOracleの事前定義されたロールの付与: 例

この例では、ROLESパラメータを使用して、事前定義済のロールを付与します。

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

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

  • PDBにはデフォルトの表領域は必要ありません。

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

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

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

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

  • PDB_DBAロールには、事前定義されたDBA Oracleロールがローカルで付与されている必要があります。

次の文は、PDBを作成します。

CREATE PLUGGABLE DATABASE salespdb 
  ADMIN USER salesadm IDENTIFIED BY password
    ROLES=(DBA);

関連項目:

複数の句を使用したPDBの作成: 例

この例では、STORAGEDEFAULT TABLESPACEPATH_PREFIXおよびFILE_NAME_CONVERTの各句を使用してPDBを作成します。

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

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

  • 非管理者ユーザーに対してそれぞれ異なる永続表領域を指定しない場合は、デフォルトの永続表領域が必要となります。特に、この例では次の特性を備えたsalesという名前のデフォルト永続表領域を作成します。

    • この表領域の単一データファイルはsales01.dbfであり、文では、このファイルが/disk1/oracle/dbs/salespdbディレクトリに作成されます。

    • SIZE句では、表領域の初期サイズが250MBであることを指定します。

    • AUTOEXTEND句により、ファイルを自動拡張できます。

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

  • CREATE_FILE_DEST句が使用されず、Oracle Managed Filesが有効になっておらず、PDB_FILE_NAME_CONVERT初期化パラメータが設定されていません。したがって、FILE_NAME_CONVERT句が必要です。システムにおけるPDBシードまたはアプリケーション・シードのデータファイルの場所を指定します。この例では、Oracle Databaseは/disk1/oracle/dbs/pdbseedのファイルを/disk1/oracle/dbs/salespdbにコピーします。

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

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

次の文は、PDBを作成します。

CREATE PLUGGABLE DATABASE salespdb 
  ADMIN USER salesadm IDENTIFIED BY password
  STORAGE (MAXSIZE 2G)
  DEFAULT TABLESPACE sales 
    DATAFILE '/disk1/oracle/dbs/salespdb/sales01.dbf' SIZE 250M 
    AUTOEXTEND ON
    PATH_PREFIX = '/disk1/oracle/dbs/salespdb/'
    FILE_NAME_CONVERT = ('/disk1/oracle/dbs/pdbseed/', 
                         '/disk1/oracle/dbs/salespdb/');

関連項目: