5 PDB作成の概要

CDBは、複数のPDB作成方法をサポートしています。

作成されたPDBでは、メタデータとシステム提供オブジェクトへの内部リンクをはじめとする完全なデータ・ディクショナリが、CDBルートに自動的に含まれます。すべてのPDBを単一のルート(CDBルートまたはアプリケーション・ルート)から定義する必要があります。

各PDBにはグローバル一意識別子(GUID)があります。PDB GUIDは、PDBのファイルを格納するディレクトリ(Oracle Managed Filesディレクトリおよび非Oracle Managed Filesディレクトリの両方を含む)の名前を生成するために主に使用されます。

この章のトピックは、次のとおりです:

PDBを作成する手法

様々な手法でPDBを作成できますが、すべてCREATE PLUGGABLE DATABASE文が必要です。

PDBの作成は、PDBをCDBまたはアプリケーション・コンテナに関連付けるプロセスです。

次の図に、PDB作成のオプションを示します。

図5-1 PDBを作成するためのオプション

図5-1の説明が続きます
「図5-1 PDBを作成するためのオプション」の説明

次の表は、作成方法を示しています。このマニュアルには説明されていないその他の手法として、Recovery ManagerのDUPLICATEコマンドを使用して、あるCDBから別のCDBにPDBをコピーする方法があります。

表5-1 PDBを作成する手法

手法 説明 詳細情報

PDBを最初から作成します

PDBシードまたはアプリケーション・シードのファイルを使用して、PDBをCDBに作成します。この手法では、シードに関連付けられているファイルを新しい場所にコピーし、コピーしたファイルを新しいPDBに関連付けます。これは、デフォルトの作成メカニズムです。他の手法は、ソース・データベース(PDBまたは非CDB)またはXMLのいずれかが必要です。

「PDBを最初から作成」

既存のPDBまたは非CDBをクローニングします

ソースPDBまたは非CDBをクローニングしてPDBを作成します。ソースは、ローカルCDB内のPDB、リモートCDB内のPDB、ローカルまたはリモート・アプリケーション・コンテナ内のPDBまたは非CDBにすることができます。この手法では、ソースに関連付けられているファイルを新しい場所にコピーし、コピーしたファイルを新しいPDBに関連付けます。

「PDBまたは非CDBのクローニング」

PDBを異なるCDBに再配置します

あるCDBから別のCDBに再配置することでPDBを作成します。この手法は、PDBに関連付けられているファイルを新しい場所に移動します。

「PDBの再配置」

切断されたPDBをCDBに接続します

PDBを記述しているXMLメタデータ・ファイルを使用してPDBを作成し、これらのファイルをPDBに関連付けてPDBをCDBに接続します。

「切断されたPDBの接続」

PDBをプロキシPDBとして参照します

データベース・リンクで別のPDBを参照することで、PDBをプロキシPDBとして作成します。参照先PDBは、プロキシPDBと同じCDBまたは別のCDBに存在できます。

「プロキシPDBとしてのPDBの作成」

非CDBからPDBを作成し、PDBをCDBに接続します

PDBに非CDBを適用して、PDBを作成します。DBMS_PDBパッケージを使用して、切断されているPDBを、Oracle Database 12cの非CDBから作成できます。次に、切断されているPDBをCDBに接続できます。

「非CDBからPDBを作成するためのオプション」

PDBを異なるCDBに接続する必要がある場合は、そのPDBを切断します。PDBが必要なくなった場合は、そのPDBを切断または削除できます。切断されたPDBは、CDBに接続されるまで使用できません。

この項では、次の項目について説明します。

関連項目:

現在のコンテナおよびPDB作成

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

PDBを作成すると、現在のコンテナ(CDBルートまたはアプリケーション・ルート)によってPDBの関連付けが決定されます。PDBおよびアプリケーションPDBを作成するSQL文は同じです。たとえば、CREATE PLUGGABLE DATABASE文をCDBルートで実行した場合、PDBはCDBルートに属します。CREATE PLUGGABLE DATABASE文をアプリケーション・ルートで実行した場合、アプリケーションPDBはアプリケーション・ルートに属します。

CDBルートが現在のコンテナであるときに、アプリケーション・ルートを作成するには、AS APPLICATION CONTAINER句を指定したCREATE PLUGGABLE DATABASE文を実行します。PDBをアプリケーション・コンテナにクローニング、再配置または接続する場合は、PDBのアプリケーション名およびバージョンが、アプリケーション・コンテナのアプリケーション名およびバージョンと一致する必要があります。

非CDBからPDBを作成するためのオプション

非CDBをPDBに移動するには複数のオプションがあります。

このタスクは、次の方法で実行できます。

  • 非CDBをクローニングします

    これは、非CDBを使用してPDBを作成する最も簡単な方法ですが、非CDBのファイルを新しい場所にコピーする必要があります。

    CDBと非CDBの両方でOracle Database 12cリリース1 (12.1.0.2)以上が実行されている必要があります。現在の非CDBでOracle Database 12cリリース1 (12.1.0.2)よりも前のOracle Databaseリリースを使用している場合、この手法を使用するには、非CDBを最新のリリースにアップグレードする必要があります。

  • DBMS_PDBパッケージを使用してXMLメタデータ・ファイルを生成します

    XMLメタデータ・ファイルで非CDBのデータベース・ファイルを記述しているため、その非CDBをCDBに接続できます。

    この方法は、非CDBをクローニングしてPDBを作成するよりもステップが多くなりますが、場合によっては、非CDBファイルを移動せずに非CDBを使用してPDBを作成することが可能になります。

    この手法を使用するには、非CDBがOracle Database 12c以降で実行されている必要があります。現在の非CDBでOracle Database 12cより前のリリースを使用している場合は、新しいリリースにアップグレードする必要があります。

  • 非CDBからデータをエクスポートし、Oracle Data Pumpを使用して、PDBにインポートします

    インポート時に、ユーザー名の後にPDBの接続識別子を指定します。たとえば、PDBの接続識別子がhrpdbである場合は、Oracle Data Pumpインポート・ユーティリティを実行するとき、次のように入力します。

    impdp user_name@hrpdb ...
    

    非CDBのOracle DatabaseリリースがOracle Database 11g リリース2 (11.2.0.3)以上である場合、完全なトランスポータブル・エクスポート/インポートを使用して、データを移動できます。Oracle Database 11g リリース2 (11.2.0.3)またはOracle Database 11g以上のデータベースからOracle Database 12c以降に非CDBをトランスポートする場合、VERSIONデータ・ポンプ・エクスポート・パラメータを12.0.0.0.0以上に設定する必要があります。

    非CDBのOracle DatabaseリリースがOracle Database 11g リリース2 (11.2.0.3)より前である場合、トランスポータブル表領域を使用してデータを移動するか、または完全なデータベース・エクスポート/インポートを実行できます。

  • GoldenGateを使用してデータを非CDBからPDBにレプリケートします

    PDBが非CDBに追い付いている場合は、そのPDBにフェイルオーバーします。

    Oracle GoldenGateのドキュメントを参照してください。

関連項目:

PDB記憶域

どのような方法を選択してPDBを作成する場合も、データを格納する表領域およびファイルを決定する必要があります。

この項では、次の項目について説明します。

ストレージ制限

CREATE PLUGGABLE DATABASE文のオプションのSTORAGE句では、PDBに対してストレージ制限を指定します。

STORAGE句では、次の制限を指定します。

  • PDBに属するすべての表領域が使用できる記憶域の量

    MAXSIZEおよびsize句を使用して制限を指定するか、またはMAXSIZEUNLIMITEDに設定して制限がないことを指定します。

  • PDB内の統合監査OSスピルオーバー(.bin形式)ファイルに使用できるストレージ量

    MAX_AUDIT_SIZEおよびsize句を使用して制限を指定するか、またはMAX_AUDIT_SIZEUNLIMITEDに設定して制限がないことを指定します。

  • PDBが使用できる自動診断リポジトリ(ADR)の診断(トレース・ファイルおよびインシデント・ダンプ)の量

    MAX_DIAG_SIZEおよびsize句を使用して制限を指定するか、またはMAX_DIAG_SIZEUNLIMITEDに設定して制限がないことを指定します。

STORAGE UNLIMITEDが設定されている場合、またはSTORAGE句がない場合は、PDBのストレージ制限はありません。

次に、STORAGE句の使用例を示します。

例5-1 ストレージ制限を指定するSTORAGE句

次のSTORAGE句では、PDBに属するすべての表領域が使用する記憶域が2GBを超えない必要があることを指定しています。

STORAGE (MAXSIZE 2G)

例5-2 無制限の記憶域を指定するSTORAGE句

次のSTORAGE句では、PDBに属するすべての表領域の記憶域に制限がないことを指定しています。

STORAGE (MAXSIZE UNLIMITED)

関連項目:

STORAGE句の構文は、『Oracle Database SQL言語リファレンス』を参照してください

デフォルト表領域

CREATE PLUGGABLE DATABASE文のDEFAULT TABLESPACE句では、新しいPDBのデフォルト表領域を指定します。

Oracle Databaseによって、別の永続表領域が指定されていないSYSTEM以外のユーザーに対してデフォルト表領域が割り当てられます。

PDBをPDBシードまたはアプリケーション・シードから作成し、DEFAULT TABLESPACE句を指定する場合、Oracle Databaseはsmallfile表領域を作成し、それをPDBのデフォルト表領域として設定します。PDBのクローニングや切断されたPDBの接続など、PDBシードまたはアプリケーション・シード以外の方法を使用してPDBを作成する場合、デフォルト表領域はソースPDBにすでに存在する表領域である必要があります。

例5-3 DEFAULT TABLESPACE句

DEFAULT TABLESPACE sales

ユーザー表領域

CREATE PLUGGABLE DATABASE文のUSER_TABLESPACES句では、新しいPDBで使用できる表領域を指定します。

この句を使用すると、複数のスキーマのデータを異なるPDBに分けることができます。たとえば、非CDBをPDBに移動する際、非CDBに様々なアプリケーションでそれぞれサポートされている複数のスキーマがある場合は、この句を使用して、各スキーマに属するデータを別個のPDBに分離できます。この手法では、各スキーマが非CDBの個別の表領域を使用するものとします。

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

  • 含める1つ以上の表領域をリストします。

  • すべての表領域を含める場合はALL (デフォルト)を指定します。

  • リストした表領域を除くすべての表領域を含める場合はALL EXCEPTを指定します。

  • すべての表領域を除外する場合はNONEを指定します。

  • ユーザー表領域の作成モードがオラクル社提供の表領域(SYSTEMSYSAUXなど)の作成モードと異なる必要がある場合は、USER_TABLESPACES句に次のいずれかを指定します。

    • COPY: 表領域のファイルは新しい場所にコピーされます。

    • MOVE: 表領域のファイルは新しい場所に移動されます。

    • NOCOPY: 表領域のファイルはコピーまたは移動されません。

    • SNAPSHOT COPY: 表領域は記憶域スナップショットにクローニングされます。

    • NO DATA: 表領域のデータ・モデル定義はクローニングされますが、表領域のデータはクローニングされません。

CDBの互換性レベルが12.2.0以上の場合、この句によって除外される表領域は新しいPDBにオフラインで作成され、データファイルは関連付けられません。CDBの互換性レベルが12.2.0未満の場合、この句で除外される表領域は新しいPDBでオフラインとなり、このような表領域に属するデータファイルはすべて無名でオフラインとなります。

この句は、SYSTEMSYSAUXまたはTEMPの各表領域には適用されません。これらの表領域は、この句の表領域リストに含めないでください。

次に、USER_TABLESPACES句の使用例を示します。

例5-4 1つの表領域が含まれるUSER_TABLESPACES句

PDBの作成元となる非CDBまたはPDBにはtbs1tbs2およびtbs3の各表領域があるとします。このUSER_TABLESPACES句には、tbs2表領域は含まれますが、tbs1表領域およびtbs3表領域は含まれません。

USER_TABLESPACES=('tbs2')

例5-5 表領域のリストが含まれるUSER_TABLESPACES句

PDBの作成元となる非CDBまたはPDBにはtbs1tbs2tbs3tbs4およびtbs5の各表領域があるとします。このUSER_TABLESPACES句には、tbs1tbs4およびtbs5の各表領域は含まれますが、tbs2表領域およびtbs3表領域は含まれません。

USER_TABLESPACES=('tbs1','tbs4','tbs5')

例5-6 リストした表領域を除くすべての表領域が含まれるUSER_TABLESPACES句

PDBの作成元となる非CDBまたはPDBにはtbs1tbs2tbs3tbs4およびtbs5の各表領域があるとします。このUSER_TABLESPACES句には、tbs2表領域およびtbs3表領域は含まれますが、tbs1tbs4およびtbs5の各表領域は含まれません。

USER_TABLESPACES=ALL EXCEPT('tbs1','tbs4','tbs5')

例5-7 異なる作成モードのUSER_TABLESPACES

この例は、非CDBを接続し、非CDBからtbs3ユーザー表領域のみ含める完全なCREATE PLUGGABLE DATABASE文を示します。例では、オラクル社が提供する表領域(SYSTEMSYSAUXなど)のファイルは新しい場所にコピーしますが、tbs3ユーザー表領域のファイルは移動します。

CREATE PLUGGABLE DATABASE ncdb USING '/disk1/oracle/ncdb.xml'
  COPY
  FILE_NAME_CONVERT = ('/disk1/oracle/dbs/', '/disk2/oracle/ncdb/')
  USER_TABLESPACES=('tbs3') MOVE;

PDBファイルの場所

CREATE PLUGGABLE DATABASE文で、新しいPDBで使用するファイルの場所を指定できます。

「ファイル名」という用語は、ファイルの名前と場所の両方を意味します。CREATE PLUGGABLE DATABASE文には、作成される新しいPDBのファイル名を示す次の句が含まれています。

  • FILE_NAME_CONVERT句では、PDBが作成された後のPDBのファイル名を指定します。

    ファイルが最終保存先にまだない場合にこの句を使用して、PDBの作成時にこれらのファイルをコピーまたは移動します。この句は、任意のCREATE PLUGGABLE DATABASE文で使用できます。

  • CREATE_FILE_DEST句には、PDBのファイル用のデフォルトのOracle Managed Filesファイル・システム・ディレクトリまたはOracle ASMディスク・グループを指定します。

    この句を使用して、CDB用にルートで指定したOracle Managed Filesのデフォルトの場所に関係なく、新しいPDBに対してOracle Managed Filesを有効にします。この句は、任意のCREATE PLUGGABLE DATABASE文で使用できます。

必要な場合は、この両方の句を同じCREATE PLUGGABLE DATABASE文で使用できます。さらに、次の初期化パラメータによって新しいPDBファイルの場所を制御できます。

  • ルートに設定したDB_CREATE_FILE_DEST初期化パラメータ

    この初期化パラメータでは、CDB用のOracle Managed Filesのデフォルトの場所を指定します。このパラメータをPDBで設定する場合、そのPDB用のOracle Managed Filesのデフォルトの場所を指定します。

  • PDB_FILE_NAME_CONVERT初期化パラメータ

    この初期化パラメータは、CREATE PLUGGABLE DATABASE文の処理時に、既存ファイルの名前と新しいファイルの名前をマップします。

次の表に、同じCREATE PLUGGABLE DATABASE文で両方の句を使用し、初期化パラメータをどちらも設定した場合の優先順位を示します。各句と初期化パラメータについて、表ではCREATE PLUGGABLE DATABASE文で作成されたファイルがOracle Managed Filesを使用するかどうかも示します。

表5-2 ファイルの場所の句および初期化パラメータのサマリー

句または初期化パラメータ 優先順位 CREATE PLUGGABLE DATABASEによって作成されたファイルがOracle Managed Filesを使用するか。
FILE_NAME_CONVERT 1 いいえ
CREATE_FILE_DEST 2 はい
DB_CREATE_FILE_DEST初期化パラメータ 3 はい
PDB_FILE_NAME_CONVERT初期化パラメータ 4 いいえ

Oracle Managed Filesの使用について、表はCREATE PLUGGABLE DATABASE文で作成されるファイルにのみ適用されます。PDBが作成された後にPDBに対して作成されたファイルは、Oracle Managed Filesを使用する場合と使用しない場合があります。

また、CREATE PLUGGABLE DATABASE文でFILE_NAME_CONVERTCREATE_FILE_DESTの両方を指定した場合、PDBの作成時、配置されるファイルにはFILE_NAME_CONVERT設定が使用され、PDBでのDB_CREATE_FILE_DEST初期化パラメータの設定にはCREATE_FILE_DEST設定が使用されます。この場合、PDBの作成後、Oracle Managed FilesによってPDBのファイルの場所が制御されます。

ノート:

PATH_PREFIX句は、Oracle Managed Filesによって作成されたファイルには影響しません。

この項では、次の項目について説明します。

関連項目:

DB_CREATE_FILE_DESTおよびPDB_FILE_NAME_CONVERTについてさらに学習するには、Oracle Databaseリファレンスを参照してください。

FILE_NAME_CONVERT句

PDBでOracle Managed Filesを使用しない場合、CREATE PLUGGABLE DATABASE文のFILE_NAME_CONVERT句では、既存ファイルの名前を使用してファイル(データファイルなど)の名前を生成する方法を指定します。

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

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

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

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

    奇数の文字列を指定した(最終文字列に対応する置換文字列が存在しない)場合、エラーが返されます。1つのファイル名またはディレクトリと一致する複数のパターン/置換文字列を指定しないでください。

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

FILE_NAME_CONVERT句は、任意のCREATE PLUGGABLE DATABASE文で使用できます。

FILE_NAME_CONVERT句がCREATE PLUGGABLE DATABASE文で指定されていない場合は、Oracle Managed FilesまたはPDB_FILE_NAME_CONVERT初期化パラメータのいずれかによって、ファイルの名前を生成する方法が指定されます。Oracle Managed FilesおよびPDB_FILE_NAME_CONVERT初期化パラメータの両方を使用する場合は、Oracle Managed Filesが優先されます。FILE_NAME_CONVERT句が指定されている場合はこれが優先されます。

FILE_NAME_CONVERT句で指定するファイル名パターンをOracle Managed Filesで管理されているファイルやディレクトリと一致させることはできません。

例5-8 FILE_NAME_CONVERT句

次のFILE_NAME_CONVERT句では、/oracle/dbsディレクトリ内のファイル名を使用して、/oracle/pdb5ディレクトリの新しいPDBのファイル名を生成します。

FILE_NAME_CONVERT = ('/oracle/dbs/', '/oracle/pdb5/')

関連項目:

CREATE_FILE_DEST句

CREATE PLUGGABLE DATABASE文のCREATE_FILE_DEST句は、PDBでOracle Managed Filesを有効にして、PDBファイル用のデフォルトのファイル・システム・ディレクトリまたはOracle ASMディスク・グループを指定します。

PDBデータファイルおよび一時ファイルは、指定されたディレクトリおよびそのサブディレクトリに制限されます。ファイル・システム・ディレクトリをデフォルトの場所としてこの句に指定する場合、そのディレクトリは存在している必要があります。また、CREATE PLUGGABLE DATABASE文を実行するユーザーには、指定ディレクトリでファイルを作成するために適切な権限が必要です。または、CDBルート(CDB$ROOT)に存在するディレクトリ・オブジェクトの名前を指定できます。ディレクトリ・オブジェクトは、CREATE_FILE_DESTにより使用されるファイル・システム・ディレクトリを指します。

CDB用のOracle Managed Filesのデフォルトの場所がCDBルートに設定されている場合、CREATE_FILE_DEST設定によってCDBルートの設定が上書きされ、指定したCREATE_FILE_DEST設定がPDBに使用されます。

CREATE_FILE_DEST=NONEを指定すると、PDBに対してOracle Managed Filesは無効になります。

CREATE_FILE_DEST句をNONE以外の値に設定すると、DB_CREATE_FILE_DEST初期化パラメータはPDBでSCOPE=SPFILEと暗黙的に設定されます。

CDBルートでOracle Managed Filesを使用し、この句を指定しない場合、PDBはOracle Managed Filesのデフォルトの場所をCDBルートから継承します。

ノート:

この機能は、Oracle Database 12cリリース1 (12.1.0.2)以降で使用可能です。

例5-9 CREATE_FILE_DEST句

このCREATE_FILE_DEST句では、新しいPDB用のデフォルトのOracle Managed Filesファイル・システム・ディレクトリとして/oracle/pdb2/を指定しています。

CREATE_FILE_DEST = '/oracle/pdb2/'
PDBファイルの場所に対する制限

CREATE PLUGGABLE DATABASE文のPATH_PREFIX句は、PDBと関連付けられているすべてのディレクトリ・オブジェクト・パスが、指定したディレクトリまたはそのサブディレクトリに制限されるようにします。

また、この句により、PDBに関連付けられているファイル(CREATE PFILE文で作成されたファイル)は指定されたディレクトリ(PDBのOracle XMLリポジトリ)およびOracleウォレットのエクスポート・ディレクトリに制限されます。PDBのファイルが特定のディレクトリおよびそのサブディレクトリに確実に存在するようにする場合は、この句を使用します。

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

  • PDBに関連付けられたすべてのファイル・パスのプリフィックスとして使用される絶対パス。

  • CDBルート(CDB$ROOT)に存在するディレクトリ・オブジェクトの名前。ディレクトリ・オブジェクトは、PATH_PREFIXに使用される絶対パスを指しています。

  • NONE。ファイル・パスに制限がないことを示します。PATH_PREFIX句の省略は、NONEの指定と同じです。

PDBが作成された後は、そのPATH_PREFIX設定を変更できなくなります。

PATH_PREFIX句は、CREATE PLUGGABLE DATABASE文で使用できます。

例5-10 PATH_PREFIX句

このPATH_PREFIX句では、PDBと関連付けられているすべてのファイル・パスが/disk1/oracle/dbs/salespdb/ディレクトリに制限されるようにします。

PATH_PREFIX = '/disk1/oracle/dbs/salespdb/'

ファイル名が付加された際に正しい形式となるよう、パス名は指定してください。たとえば、UNIXシステムでは、パス名はフォワード・スラッシュ(/)で終わるようにします。

ノート:

  • PDBにPATH_PREFIX句を指定すると、既存のディレクトリ・オブジェクトが予期したとおりに動作しないことがあります。これは、PATH_PREFIX文字列がPDB内のすべてのローカル・ディレクトリ・オブジェクトの接頭辞として常に追加されるためです。

  • PATH_PREFIX句は、Oracle Managed Filesによって作成されたファイルには影響しません。

  • PATH_PREFIX句は、ユーザーが作成したディレクトリ・オブジェクトにのみ適用されます。これは、Oracleが提供するディレクトリ・オブジェクトには適用されません。

  • PATH_PREFIX句は、データファイルまたは一時ファイルには適用されません。Oracle Managed Filesを使用している場合は、CREATE_FILE_DEST句を使用してデータファイルおよび一時ファイルの場所を制限します。

サービス名変換

PDBの作成には、データベース・サービス名の変更を管理する重要な側面があります。

新しいPDBのサービス名がCDB内の既存のサービス名と競合する場合は、プラグイン違反が発生することがあります。CREATE PLUGGABLE DATABASE文のSERVICE_NAME_CONVERT句は、ソースPDBのサービス名に基づいて新しいPDBのユーザー定義サービスを名前変更します。この句を使用すると、サービス名を変更してプラグイン違反を回避できます。

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

  • 次の形式の1つ以上のサービス名と置換サービス名:

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

    string2サービス名はstring1サービス名を置換し、string4サービス名はstring3サービス名を置換します。サービス名と置換サービス名のペアは、必要に応じていくつでも使用できます。

    奇数の文字列を指定した(最終文字列に対応する置換文字列が存在しない)場合、エラーが返されます。

  • サービス名を変更する必要がない場合はNONESERVICE_NAME_CONVERT句の省略は、NONEの指定と同じです。

SERVICE_NAME_CONVERT句は、PDBシードからPDBを作成するCREATE PLUGGABLE DATABASE文を除く任意のCREATE PLUGGABLE DATABASE文で使用できます。PDBシードはユーザー定義サービスを持つことができません。ただし、アプリケーション・コンテナ内のアプリケーション・シードからアプリケーションPDBを作成するCREATE PLUGGABLE DATABASE文にはこの文を使用できます。

ノート:

この句は、PDBのデフォルト・サービスに適用されません。デフォルト・サービスの名前はPDBと同じになります。

例5-11 SERVICE_NAME_CONVERT句

このSERVICE_NAME_CONVERT句は、salesrepサービスの名前をsalespersonに変更します。

SERVICE_NAME_CONVERT = ('salesrep','salesperson')

PDB作成のための句の概要

CREATE PLUGGABLE DATABASE文を使用してPDBを作成する場合は、様々な要因に基づいて多様な句を使用できます。

1つの要因は、PDBを作成するために使用している手法です。一連の質問に回答することで、使用する句を判断できます。

次の表では、様々な要因に基づいて指定するCREATE PLUGGABLE DATABASEの句について説明しています。

表5-3 PDBを作成する場合の句

質問 はい いいえ 句を使用可能な場合

PDBのかわりにアプリケーション・コンテナを作成しますか。

AS APPLICATION CONTAINER句を指定します。

AS APPLICATION CONTAINER句を省略します。

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

同じPDBを接続して作成した1つ以上のPDBを含むCDBにPDBを接続しますか。

AS CLONE句を指定して、Oracle Databaseが一意のPDB DBID、GUID、および新しいPDBに予測されるその他の識別子を確実に生成するようにします。このPDBは、すべての識別子が一意であることを保証するため、切断されたPDBのクローンとして接続されます。

AS CLONE句を省略します。

切断されたPDBの接続

アプリケーション・コンテナにアプリケーション・シードを作成しますか。

AS SEED句を指定します。

AS SEED句を省略します。

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

CREATE_FILE_DEST句を使用して、PDBファイル用にOracle Managed Filesのデフォルトの場所を指定しますか。

PDBシードまたはアプリケーション・シードからPDBを作成する場合、ソース・ファイルは、シードに関連付けられたファイルです。

PDBのファイル用のデフォルトのファイル・システム・ディレクトリまたはOracle ASMディスク・グループを指定するCREATE_FILE_DEST句を含めます。

CREATE_FILE_DEST句を省略します。

次のいずれかの手法を使用して、ファイルのターゲットの場所を指定します。

  • FILE_NAME_CONVERT

  • CDBに対してOracle Managed Filesを有効にして、ターゲットの場所を識別できるようにします。

  • PDB_FILE_NAME_CONVERT初期化パラメータでターゲットの場所を指定します。

「PDBファイルの場所」を参照してください。

PDBシードまたはアプリケーション・シードからのPDBの作成

PDBのクローニング

PDBの再配置

切断されたPDBの接続

PDBのデフォルト・パラメータ表領域を指定しますか。

適切な制限を使用してDEFAULT TABLESPACE句を指定します。

この表領域には、Oracle Databaseによって、別の永続表領域が指定されていないSYSTEM以外のユーザーが割り当てられます。

PDBをPDBシードまたはアプリケーション・シードから作成する場合、Oracle Databaseはsmallfile表領域を作成し、それをデフォルト表領域として設定します。PDBシードまたはアプリケーション・シードからの作成以外の手法を使用する場合は、指定した表領域がソースPDBに存在する必要があります。

DEFAULT TABLESPACE句を省略します。

この句を指定しない場合、SYSTEM以外のユーザーに対するデフォルトの永続表領域はSYSTEM表領域です。SYSTEM表領域を非SYSTEMユーザーに使用することはお薦めしません。

PDBシードまたはアプリケーション・シードからのPDBの作成

PDBのクローニング

PDBの再配置

切断されたPDBの接続

FILE_NAME_CONVERT句を使用して、ファイルのターゲットの場所を指定しますか。

PDBシードまたはアプリケーション・シードからPDBを作成する場合、ソース・ファイルは、シードに関連付けられたファイルです。

ソース・ファイルの名前に基づいてファイルのターゲットの場所を指定するFILE_NAME_CONVERT句を含めます。

FILE_NAME_CONVERT句を省略します。

次のいずれかの手法を使用して、ファイルのターゲットの場所を指定します。

  • CREATE_FILE_DEST

  • CDBに対してOracle Managed Filesを有効にして、ターゲットの場所を識別できるようにします。

  • PDB_FILE_NAME_CONVERT初期化パラメータでターゲットの場所を指定します。

「PDBファイルの場所」を参照してください。

PDBシードまたはアプリケーション・シードからのPDBの作成

PDBのクローニング

PDBの再配置

プロキシPDBの作成(SYSTEMおよびSYSAUX表領域のデータファイルにのみ適用されます。)

切断されたPDBの接続

PDBは依存するプロキシPDBを持つ参照PDBですか? リスナーのホスト名を変更しますか?

HOST句を含め、作成されるPDBのリスナーのホスト名を指定します

たとえば、物理ホスト名およびデフォルトのポートのリスナー・ネットワークがあり、デフォルト以外のポート番号を使用した仮想ホスト名および仮想IPアドレスのための2番目のリスナーが構成されている場合があります。

HOST句を省略します。

PDBシードまたはアプリケーション・シードからのPDBの作成

PDBのクローニング

PDBの再配置

切断されたPDBの接続

新しいPDBに表領域のロギング属性を指定しますか。

logging_clauseを含めます。

logging_clauseを省略します。

PDBシードまたはアプリケーション・シードからのPDBの作成

PDBのクローニング

切断されたPDBの接続

ファイルを新しい場所にコピーまたは移動しますか。

COPYを指定して、ファイルを新しい場所にコピーします。COPYがデフォルトです。MOVEを指定して、ファイルを新しい場所に移動します。次のいずれかの手法を使用して、ターゲットの場所を指定します。

  • ソース・ファイルの名前に基づいてターゲットの場所を指定するFILE_NAME_CONVERT句を含めます。

  • PDBのファイル用にOracle Managed Filesのデフォルトの場所を指定するCREATE_FILE_DEST句を含めます。

  • Oracle Managed Filesを有効にして、ターゲットの場所を識別できるようにします。

  • PDB_FILE_NAME_CONVERT初期化パラメータでターゲットの場所を指定します。

「PDBファイルの場所」を参照してください。

NOCOPYを指定します。

切断されたPDBの接続

ソースPDBのデータ・モデル定義をクローニングするが、ソースPDBのデータをクローニングしないことを指定しますか。

NO DATA句を含めます。

NO DATA句を省略します。

PDBのクローニング

複数のパラレル実行サーバーを使用してPDBの作成を並列化しますか。

CDBで並列度を選択するには、PARALLEL句を含めるか省略します。

並列度を指定するには、PARALLEL句で整数を指定します。たとえば、PARALLEL 4を指定して、並列度4を指定します。

PARALLEL 0またはPARALLEL 1を指定します。

PDBシードまたはアプリケーション・シードからのPDBの作成

PDBのクローニング

ディレクトリ・オブジェクト、PDBのOracle XML リポジトリ、CREATE PFILE文を使用して作成されたファイル、およびOracleウォレットのエクスポート・ディレクトリのためのPDBのファイル・パスを制限するためにPATH_PREFIX句を使用しますか?

PATH_PREFIX句は、Oracle Managed Filesによって作成されたファイルには影響しません。

絶対パスを指定するPATH_PREFIX句を含めます。

PATH_PREFIX句をNONEに設定するか、省略します。

PDBシードまたはアプリケーション・シードからのPDBの作成

PDBのクローニング

PDBの再配置

切断されたPDBの接続

PDBは依存するプロキシPDBを持つ参照PDBですか? リスナーのポート番号を1521以外の値に変更しますか?

PORT句を含め、作成されるPDBのリスナーのポート番号を指定します

たとえば、物理ホスト名およびデフォルトのポートのリスナー・ネットワークがあり、デフォルト以外のポート番号を使用した仮想ホスト名および仮想IPアドレスのための2番目のリスナーが構成されている場合があります。

PORT句を省略します。

PDBシードまたはアプリケーション・シードからのPDBの作成

PDBのクローニング

PDBの再配置

切断されたPDBの接続

ソースPDBからクローンPDBに変更を伝播するためにPDBをリフレッシュできるようにしますか。

リフレッシュ可能PDBは読取り専用モードでオープンする必要があります。

REFRESH MODE MANUALまたはREFRESH MODE EVERY minutes句を含めます。

REFRESH MODE句を省略するかREFRESH MODE NONE句を含めます。

PDBのクローニング

Oracleの事前定義されているロールをPDBでローカルにPDB_DBAロールに付与しますか。

PDBの新しい管理者には、PDB_DBA共通ロールがPDBでローカルに付与されます。デフォルトでは、CREATE PLUGGABLE DATABASE文は管理者またはロールにいずれの権限も付与しません。

ROLES句を含めて、Oracleの事前定義されているロールをPDB_DBAロールに付与することを指定します。指定されたロールは、PDBでローカルにPDB_DBAロールに付与されます。CREATE PLUGGABLE DATABASE文を実行するユーザーには、指定されたロールを割り当てる必要はありません。Oracleの事前定義されているロールの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

ROLES句を省略します。

PDBシードまたはアプリケーション・シードからのPDBの作成

プロキシPDBの作成

SERVICE_NAME_CONVERT句を使用して、ソースPDBのサービス名に基づいて新しいPDBのユーザー定義サービス名を変更しますか。

サービスの新しい名前とそれが置換するサービス名を指定するSERVICE_NAME_CONVERT句を含めます。必要に応じて複数のサービス名と置換サービス名を指定します。

SERVICE_NAME_CONVERT句を省略します。

PDBシードではなくアプリケーション・シードからのPDBの作成

PDBのクローニング

PDBの再配置

プロキシPDBの作成(SYSTEMおよびSYSAUX表領域のデータファイルにのみ適用されます。)

切断されたPDBの接続

記憶域スナップショットを使用してPDBをクローニングしますか。

SNAPSHOT COPY句を指定して、記憶域スナップショットを使用してクローニングを実行することを示します。

記憶域スナップショットを使用したPDBクローンの作成は、ソースPDBのデータファイルをコピーする必要がないため、ほぼ瞬間的に行われます。SNAPSHOT COPYは、基礎となるファイル・システムで記憶域スナップショットがサポートされている場合にのみサポートされます。

SNAPSHOT COPY句を省略します。

PDBのクローニング

新しいPDBのPDBスナップショットを有効化しますか。

SNAPSHOT MODE句を指定し、MANUALまたはEVERY snapshot_interval [MINUTES|HOURS]を指定します。

SNAPSHOT MODE句を省略するか、SNAPSHOT MODE NONEを指定します。

PDBシードまたはアプリケーション・シードからのPDBの作成

PDBのクローニング

PDBの再配置

プロキシPDBの作成(SYSTEMおよびSYSAUX表領域のデータファイルにのみ適用されます。)

切断されたPDBの接続

単一ディレクトリ内のすべてのソース・ファイルが新しいファイル名を持ち、複数のSOURCE_FILE_NAME_CONVERTエントリが必要ですか。

ソース・ファイルへの完全絶対パスでSOURCE_FILE_DIRECTORYを指定します。

SOURCE_FILE_DIRECTORY句を省略します。

XMLファイル・ディレクトリを使用して切断されたPDBを接続します。

この句は、.pdbアーカイブ・ファイルによる切断されたPDBの接続には適用されません。

XMLファイルの内容は、ソース・ファイルの場所を正確に記述していますか。

SOURCE_FILE_NAME_CONVERT句を省略します。

SOURCE_FILE_NAME_CONVERT句を使用して、ソース・ファイルの場所を指定します。

XMLファイル・ディレクトリを使用して切断されたPDBを接続します。

この句は、.pdbアーカイブ・ファイルによる切断されたPDBの接続には適用されません。

1つ以上のスタンバイCDBに新しいPDBを含めますか。

ALLALL EXCEPTまたはスタンバイCDBのリストを指定します。

リモート・クローンを作成する場合は、初期化パラメータSTANDBY_PDB_SOURCE_FILE_DBLINKを、ソースPDBデータファイルを指すデータベース・リンクの名前に設定できます。データファイルは、ソースPDBが読取り専用でオープンしている場合にのみコピーされます。

STANDBYS句を省略するか、NONEを指定します。

PDBシードまたはアプリケーション・シードからのPDBの作成

PDBのクローニング

PDBの再配置

切断されたPDBの接続

PDBが使用できる記憶域の量を制限しますか。

適切な制限を使用してSTORAGE句を指定します。

STORAGE句を省略するか、またはSTORAGE句を使用して記憶域に制限がないことを指定します。

PDBシードまたはアプリケーション・シードからのPDBの作成

PDBのクローニング

PDBの再配置

切断されたPDBの接続

ターゲットの場所に一時ファイルがある場合、それを再利用しますか。

TEMPFILE REUSE句を含めます。

TEMPFILE REUSE句を省略します。

ターゲットの場所に新しい一時ファイルと同じ名前のファイルがないことを確認します。

PDBシードまたはアプリケーション・シードからのPDBの作成

PDBのクローニング

PDBの再配置

切断されたPDBの接続

新しいPDBに含める表領域および新しいPDBから除外する表領域を指定しますか。

USER_TABLESPACES句を含めて、新しいPDBに含める表領域を指定します。

USER_TABLESPACES句を省略します。

非CDBのクローニング

切断されたPDBの接続

切断されたPDBをCDBに接続しますか。

USING filename句を含めます。

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

USING filename句を省略します。

切断されたPDBの接続

PDBスナップショットに基づいて新しいPDBを作成しますか。

USING SNAPSHOT句を含めて、PDBスナップショット名、SCNまたはタイムスタンプかを指定します。

USING SNAPSHOT句を除外します。

PDBスナップショットのクローニング

ミラーを分割することでOracle ASMに存在するPDBをクローニングしますか。

USING MIRROR COPY句を含めて、ミラー・コピーの名前とソースPDBを指定します。

USING MIRROR COPY句を省略します。

Oracle ASM記憶域を使用するPDBのクローニング

PDB作成の一般的な前提条件

PDBを作成する前に、特定の前提条件を満たす必要があります。

PDBを作成する前に、次の前提条件が満たされていることを確認してください。

表5-4 PDBを作成するための前提条件

前提条件 関連項目

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

「CDBの作成および構成」

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

「1つ以上のPDBのオープン・モードの変更」

現行ユーザーは、現在のコンテナがCDBルートまたはアプリケーション・コンテナである共通ユーザーである必要があります。

「CDBの共通ユーザー」

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

共通に付与されるシステム権限の使用方法

各コンテナに対して一意のコンテナ名を決定する必要があります。各コンテナ名は、1つのCDB内で一意である必要があり、特定のリスナーからアクセスされるインスタンスを持つCDBのスコープ内で一意である必要があります。

PDB名は、PDBをCDB内のその他のPDBと区別します。PDB名のルールは、大文字と小文字が区別されるなど、サービス名のルールと同じです。

サービス名のルールを学習するには、『Oracle Database Net Servicesリファレンス』を参照してください

フィジカル・スタンバイ・データベースがあるOracle Data Guard構成にPDBを作成する場合は、PDBを作成する前に追加のタスクを完了する必要があります。

詳細は、『Oracle Data Guard概要および管理』を参照してください

透過的データ暗号化で暗号化されたデータを含むPDBを作成している場合は、追加のタスクを完了する必要があります。

手順は、『Oracle Database Advanced Securityガイド』を参照してください

Database Vaultに対応したPDBを作成している場合は、追加のタスクを完了する必要があります。

手順は、『Oracle Database Vault管理者ガイド』を参照してください

非CDBをクローニングしてPDBを作成する場合に、ソースの非CDBのバックアップを使用して新しいPDBをリカバリする必要があるときは、クローニングの前にDBMS_PDB.EXPORTRMANBACKUPを実行する必要があります。ソース・データベースが読取り/書込みモードでオープンされている場合は、クローニングの前にプロシージャを最後のステップとして実行します。このプロシージャは、データ・ディクショナリ内のすべてのバックアップ・メタデータを取得します。

別のCDBにPDBを再配置する場合は、DBMS_PDB.EXPORTRMANBACKUPを実行する必要はありません。PDBを切断すると、バックアップ・メタデータは自動的にエクスポートされます。

手順は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください

関連項目: