38 SQL*Plusを使用したPDBの作成および削除
PDBは、シードの使用、既存のPDBまたは非CDBのクローニング、切断されたPDBの接続など、複数の方法で作成できます。PDBをCDBから削除することもできます。
注意:
この章のタスクは、SQL*PlusまたはOracle SQL Developerを使用して実行できます。- PDBの作成および削除について
マルチテナント・コンテナ・データベース(CDB)にプラガブル・データベース(PDB)を作成するには、CDBシードまたはアプリケーション・シードを使用するか、既存のPDBまたは非CDBをクローニングするか、切断されたPDBをCDBに接続するか、または非CDBを使用できます。PDBを切断するかPDBを削除することで、PDBをCDBから削除できます。PDBをアプリケーション・コンテナに作成することもできます。 - PDBの準備
PDBを作成する前に、前提条件を満たす必要があります。 - シードを使用したPDBの作成
CREATE
PLUGGABLE
DATABASE
文により、CDBシードのファイルを使用してCDBにPDBを作成できます。この文を使用すると、アプリケーション・シードまたはCDBシードのファイルを使用して、アプリケーション・コンテナにアプリケーションPDBを作成することもできます。 - 既存のPDBまたは非CDBのクローニングによるPDBの作成
ローカルPDB、リモートPDBまたは非CDBをクローニングすることで、PDBを作成できます。 - 再配置によるPDBの作成
あるCDBから別のCDBに再配置することでPDBを作成できます。 - CDBへの切断されたPDBの接続によるPDBの作成
切断されたPDBをCDBに接続することで、PDBを作成できます。 - プロキシPDBとしてのPDBの作成
リモートCDB内のPDBを参照することで、PDBをプロキシPDBとして作成できます。 - 非CDBを使用したPDBの作成
非CDBを様々な方法で使用して、PDBを作成できます。 - CDBからのPDBの切断
PDBをCDBから切断できます。 - PDBの削除
DROP
PLUGGABLE
DATABASE
文によりPDBが削除されます。PDBをあるCDBから別のCDBに移動する場合、またはPDBが必要でなくなった場合は、PDBを削除できます。
関連トピック
親トピック: マルチテナント環境の管理
38.1 PDBの作成および削除について
CDBシードまたはアプリケーション・シードの使用、既存のPDBまたは非CDBのクローニング、切断されたPDBのCDBへの接続または非CDBの使用により、マルチテナント・コンテナ・データベース(CDB)にプラガブル・データベース(PDB)を作成できます。PDBを切断するかPDBを削除することで、PDBをCDBから削除できます。PDBをアプリケーション・コンテナに作成することもできます。
注意:
-
この章では、SQL文を使用してPDBを作成および削除する方法について説明します。PDBを作成および削除する簡単な方法は、グラフィカル・ユーザー・インタフェース(Database Configuration Assistant (DBCA)、Oracle Enterprise Manager Cloud Control (Cloud Control)、Oracle Enterprise Manager Database Express (EM Express)など)を使用することです。
-
CDBには、最大4,096個のPDB (PDB、アプリケーション・ルート、アプリケーションPDB、アプリケーション・シードおよびプロキシPDBを含む)を含めることができます。この数には、CDBルートおよびCDBシードは含まれていません。
- PDBを作成する手法
様々な手法を使用してPDBを作成できます。 - CREATE PLUGGABLE DATABASE文
CREATE
PLUGGABLE
DATABASE
文を使用してPDBを作成します。この文を使用するには、文の句および各句をいつ使用するかを理解する必要があります。 - PDBを作成する句のサマリー
CREATE PLUGGABLE DATABASE
文を使用してPDBを作成する場合、PDBの作成に使用している手法などの様々な要因に基づいて様々な句を使用できます。一連の質問に回答することで、使用する句を判断できます。
関連項目:
-
DBCAの詳細は、『Oracle Database 2日でデータベース管理者』およびDBCAオンライン・ヘルプを参照してください。
親トピック: SQL*Plusを使用したPDBの作成および削除
38.1.1 PDBを作成する手法
様々な手法を使用してPDBを作成できます。
PDBの作成は、PDBをCDBまたはアプリケーション・コンテナに関連付けるプロセスです。CDBまたはアプリケーション・コンテナの一部としてPDBを使用する場合は、PDBを作成します。
表38-1では、PDBの作成に使用できる手法について説明します。
表38-1 PDBを作成する手法
手法 | 説明 | 詳細情報 |
---|---|---|
シードを使用したPDBの作成 |
CDBシードまたはアプリケーション・シードのファイルを使用して、PDBをCDBに作成します。この手法では、シードに関連付けられているファイルを新しい場所にコピーし、コピーしたファイルを新しいPDBに関連付けます。 |
|
既存のPDBまたはCDB以外のクローニングによるPDBの作成 |
ソースPDBまたは非CDBをクローニングしてPDBを作成します。ソースは、ローカルCDB内のPDB、リモートCDB内のPDB、ローカルまたはリモート・アプリケーション・コンテナ内のPDBまたは非CDBにすることができます。この手法では、ソースに関連付けられているファイルを新しい場所にコピーし、コピーしたファイルを新しいPDBに関連付けます。 |
|
異なるCDBへの再配置によるPDBの作成 |
あるCDBから別のCDBに再配置することでPDBを作成します。この手法は、PDBに関連付けられているファイルを新しい場所に移動します。 |
|
CDBへの切断されたPDBの接続によるPDBの作成 |
PDBを記述しているXMLメタデータ・ファイルを使用してPDBを作成し、これらのファイルをPDBに関連付けてPDBをCDBに接続します。 |
|
プロキシPDBとしてのPDBの作成 |
データベース・リンクで別のPDBを参照することで、PDBをプロキシPDBとして作成します。参照先PDBは、プロキシPDBと同じCDBまたは別のCDBに存在できます。 |
|
非CDBを使用したPDBの作成 |
PDBに非CDBを適用して、PDBを作成します。 |
表38-1で説明しているすべての手法では、CREATE
PLUGGABLE
DATABASE
文を使用してPDBを作成します。これらの手法は、再配置、コピー、接続、プロキシPDBとしての参照の4つのメイン・カテゴリに分かれます。図38-1は、PDBを作成するためのオプションを表します。
アプリケーション・コンテナの作成は、アプリケーション・コンテナをCDBに関連付けるプロセスです。AS APPLICATION CONTAINER
句をCREATE
PLUGGABLE
DATABASE
文に含めることで、これらすべての手法を使用してアプリケーション・コンテナを作成できます。
PDBを作成する際に、それをCDBまたはアプリケーション・コンテナに関連付けることができます。現在のコンテナがCDBルートの場合にPDBを作成すると、PDBがそのCDBルートに関連付けられます。現在のコンテナがアプリケーション・コンテナのアプリケーション・ルートの場合にPDBを作成すると、PDBがそのアプリケーション・ルートに関連付けられます。PDBをアプリケーション・コンテナにクローニングするか、PDBをアプリケーション・コンテナに再配置するか、PDBをアプリケーション・コンテナに接続する場合、PDBのアプリケーション名およびバージョンはアプリケーション・コンテナのアプリケーション名およびバージョンと一致する必要があります。
PDBを異なるCDBに接続する必要がある場合は、そのPDBを切断します。PDBが必要なくなった場合は、そのPDBを切断または削除できます。切断されたPDBは、CDBに接続されるまで使用できません。
注意:
-
CDB以外をクローニングしたPDBの作成は、Oracle Database 12cリリース1(12.1.0.2)より使用可能です。
-
PDBの再配置による作成またはプロキシPDBとしての作成は、Oracle Database 12cリリース2 (12.2.0.1)以上で使用できます。
38.1.2 CREATE PLUGGABLE DATABASE文
CREATE
PLUGGABLE
DATABASE
文を使用してPDBを作成します。この文を使用するには、文の句および各句をいつ使用するかを理解する必要があります。
表38-1で説明しているすべての手法で、この文が使用されます。
注意:
Oracle Database 12cリリース2 (12.2.0.1)以降では、CREATE PLUGGABLE DATABASE
文を使用してアプリケーション・コンテナ、アプリケーション・シードおよびアプリケーションPDBを作成することもできます。PDBおよびアプリケーションPDBを作成するSQL文はまったく同じです。CREATE PLUGGABLE DATABASE
文をCDBルートで実行した場合、PDBはCDBルートに属します。CREATE PLUGGABLE DATABASE
文をアプリケーション・ルートで実行した場合、アプリケーションPDBはアプリケーション・ルートに属します。アプリケーション・ルートを作成するには、CDBルートが現在のコンテナであるときに、AS APPLICATION CONTAINER
句を指定したCREATE PLUGGABLE DATABASE
文を実行します。
- ストレージ制限
CREATE
PLUGGABLE
DATABASE
文のオプションのSTORAGE
句では、PDBに対してストレージ制限を指定します。 - 新しいPDBのファイルの場所
CREATE
PLUGGABLE
DATABASE
文で、新しいPDBで使用するファイルの場所を指定できます。 - PDBファイルの場所に対する制限
CREATE PLUGGABLE DATABASE
文のPATH_PREFIX
句は、PDBと関連付けられているすべてのディレクトリ・オブジェクト・パスが、指定したディレクトリまたはそのサブディレクトリに制限されるようにします。また、PDBに関連付けられているファイル(PDBのOracle XMLリポジトリ、CREATE PFILE
文で作成されたファイル、およびOracleウォレットのエクスポート・ディレクトリ)が、指定されたディレクトリに制限されるようにします。 - 切断されたPDBを接続する場合のソース・ファイルの場所
CREATE
PLUGGABLE
DATABASE
...
USING
文を使用して、切断されたPDBをCDBに接続します。 - サービス名の変更
CREATE
PLUGGABLE
DATABASE
文のSERVICE_NAME_CONVERT
句は、ソースPDBのサービス名に基づいて、新しいPDBのユーザー定義サービスの名前を変更します。 - 一時ファイルの再利用
CREATE
PLUGGABLE
DATABASE
文のTEMPFILE REUSE
句では、ターゲットの場所にある既存の一時ファイルを再利用することを指定します。 - デフォルト表領域
CREATE
PLUGGABLE
DATABASE
文のDEFAULT TABLESPACE
句では、新しいPDBのデフォルト表領域を指定します。 - ユーザー表領域
CREATE
PLUGGABLE
DATABASE
文のUSER_TABLESPACES
句では、新しいPDBで使用できる表領域を指定します。 - PDB表領域ロギング
CREATE
PLUGGABLE
DATABASE
文のlogging_clauseでは、PDBのロギング属性を指定します。ロギング属性は、特定のDML操作をREDOログ・ファイルに記録する(LOGGING
)か記録しない(NOLOGGING
)かを制御します。 - スタンバイCDBへのPDBの包含
CREATE
PLUGGABLE
DATABASE
文のSTANDBYS
句では、新しいPDBをスタンバイCDBに含めるかどうかを指定します。 - PDBをクローニングする場合のデータの除外
CREATE
PLUGGABLE
DATABASE
文のNO DATA
句では、PDBのデータ・モデル定義をクローニングするが、PDBのデータをクローニングしないことを指定します。 - PDB作成の並列化
CREATE PLUGGABLE DATABASE
文のPARALLEL
句では、PDBの作成時にパラレル実行サーバーを使用するかどうか、またオプションで並列度を指定します。 - PDBのリフレッシュ
CREATE
PLUGGABLE
DATABASE
文のREFRESH MODE
句では、クローンとして作成されたPDBを定期的にリフレッシュできるかどうかを指定します。各PDBリフレッシュは、ソースPDBから新しいPDBに変更を伝播します。 - アプリケーション・コンテナとアプリケーション・シード
CREATE PLUGGABLE DATABASE
文では、アプリケーション・コンテナを作成できます。アプリケーション・コンテナにアプリケーション・シードを作成することもできます。 - PDBリスナーのホスト名とポート番号
PDBのホスト名とポート番号の設定は、プロキシPDBがPDBを参照する場合にのみ重要です。PORT
句を使用して、PDBのポート番号を指定します。HOST
句を使用して、PDBのホスト名を指定します。
関連項目:
-
CREATE
PLUGGABLE
DATABASE
文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
親トピック: PDBの作成と削除について
38.1.2.1 ストレージ制限
CREATE
PLUGGABLE
DATABASE
文のオプションのSTORAGE
句では、PDBに対してストレージ制限を指定します。
STORAGE
句では、次の制限を指定します。
-
PDBに属するすべての表領域が使用できる記憶域の量
MAXSIZE
およびsize句を使用して制限を指定するか、またはMAXSIZE
をUNLIMITED
に設定して制限がないことを指定します。 -
PDB内の統合監査OSスピルオーバー(.bin形式)ファイルに使用できるストレージ量
MAX_AUDIT_SIZE
およびsize句を使用して制限を指定するか、またはMAX_AUDIT_SIZE
をUNLIMITED
に設定して制限がないことを指定します。 -
PDBが使用できる自動診断リポジトリ(ADR)の診断(トレース・ファイルおよびインシデント・ダンプ)の量
MAX_DIAG_SIZE
およびsize句を使用して制限を指定するか、またはMAX_DIAG_SIZE
をUNLIMITED
に設定して制限がないことを指定します。
STORAGE
UNLIMITED
が設定されている場合、またはSTORAGE
句がない場合は、PDBのストレージ制限はありません。
次に、STORAGE
句の使用例を示します。
例38-1 ストレージ制限を指定するSTORAGE句
次のSTORAGE
句では、PDBに属するすべての表領域が使用する記憶域が2GBを超えない必要があることを指定しています。
STORAGE (MAXSIZE 2G)
例38-2 無制限の記憶域を指定するSTORAGE句
次のSTORAGE
句では、PDBに属するすべての表領域の記憶域に制限がないことを指定しています。
STORAGE (MAXSIZE UNLIMITED)
関連項目:
STORAGE
句の構文は、『Oracle Database SQL言語リファレンス』を参照してください。
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.2 新しいPDBのファイルの場所
CREATE
PLUGGABLE
DATABASE
文で、新しいPDBで使用するファイルの場所を指定できます。
「ファイル名」という用語は、ファイルの名前と場所の両方を意味します。CREATE
PLUGGABLE
DATABASE
文には、作成される新しいPDBのファイル名を示す次の句が含まれています。
-
FILE_NAME_CONVERT
句では、PDBが作成された後のPDBのファイル名を指定します。ファイルが最終保存先にまだない場合にこの句を使用して、PDBの作成時にこれらのファイルをコピーまたは移動します。この句は、任意の
CREATE
PLUGGABLE
DATABASE
文で使用できます。 -
Oracle Database 12cリリース1 (12.1.0.2)からは、
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を使用するかどうかも示します。
表38-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_CONVERT
とCREATE_FILE_DEST
の両方を指定した場合、PDBの作成時、配置されるファイルにはFILE_NAME_CONVERT
設定が使用され、PDBでのDB_CREATE_FILE_DEST
初期化パラメータの設定にはCREATE_FILE_DEST
設定が使用されます。この場合、PDBの作成後、Oracle Managed FilesによってPDBのファイルの場所が制御されます。
注意:
PATH_PREFIX
句は、Oracle Managed Filesによって作成されたファイルには影響しません。
- FILE_NAME_CONVERT句
PDBでOracle Managed Filesを使用しない場合、CREATE
PLUGGABLE
DATABASE
文のFILE_NAME_CONVERT
句では、既存ファイルの名前を使用してファイル(データファイルなど)の名前を生成する方法を指定します。 - CREATE_FILE_DEST句
CREATE
PLUGGABLE
DATABASE
文のCREATE_FILE_DEST
句は、PDBでOracle Managed Filesを有効にして、PDBのファイル用のデフォルトのファイル・システム・ディレクトリまたはOracle ASMディスク・グループを指定します。PDBのデータファイルおよび一時ファイルは、指定されたディレクトリおよびそのサブディレクトリに制限されます。
関連項目:
-
DB_CREATE_FILE_DEST
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。 -
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.2.1 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で管理されているファイルやディレクトリと一致させることはできません。
例38-3 FILE_NAME_CONVERT句
次のFILE_NAME_CONVERT
句では、/oracle/dbsディレクトリ内のファイル名を使用して、/oracle/pdb5ディレクトリの新しいPDBのファイル名を生成します。
FILE_NAME_CONVERT = ('/oracle/dbs/', '/oracle/pdb5/')
関連項目:
-
FILE_NAME_CONVERT
句の構文は、『Oracle Database SQL言語リファレンス』を参照してください。 -
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
親トピック: 新規PDBのファイルの場所
38.1.2.2.2 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)以降で使用可能です。
例38-4 CREATE_FILE_DEST句
このCREATE_FILE_DEST
句では、新しいPDB用のデフォルトのOracle Managed Filesファイル・システム・ディレクトリとして/oracle/pdb2/を指定しています。
CREATE_FILE_DEST = '/oracle/pdb2/'
親トピック: 新規PDBのファイルの場所
38.1.2.3 PDBファイルの場所に対する制限
CREATE PLUGGABLE DATABASE
文のPATH_PREFIX
句は、PDBと関連付けられているすべてのディレクトリ・オブジェクト・パスが、指定したディレクトリまたはそのサブディレクトリに制限されるようにします。また、PDBに関連付けられているファイル(PDBのOracle XMLリポジトリ、CREATE PFILE
文で作成されたファイル、およびOracleウォレットのエクスポート・ディレクトリ)が、指定されたディレクトリに制限されるようにします。
PDBのファイルが特定のディレクトリおよびそのサブディレクトリに確実に存在するようにする場合は、この句を使用します。
この句を使用して、次のいずれかのオプションを指定できます。
-
PDBに関連付けられたすべてのファイル・パスのプリフィックスとして使用される絶対パス。
-
CDBルート(
CDB$ROOT
)に存在するディレクトリ・オブジェクトの名前。ディレクトリ・オブジェクトは、PATH_PREFIX
に使用される絶対パスを指しています。 -
NONE
。ファイル・パスに制限がないことを示します。PATH_PREFIX
句の省略は、NONE
の指定と同じです。
PDBが作成された後は、そのPATH_PREFIX
設定を変更できなくなります。
PATH_PREFIX
句は、CREATE
PLUGGABLE
DATABASE
文で使用できます。
例38-5 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
句を使用してデータファイルおよび一時ファイルの場所を制限します。
38.1.2.4 切断されたPDBをプラグインする場合のソース・ファイルの場所
CREATE
PLUGGABLE
DATABASE
...
USING
文を使用して、切断されたPDBをCDBに接続します。
XMLメタデータ・ファイルを指定するか、.pdb拡張子のある圧縮されたアーカイブ・ファイルを指定して、PDBを接続できます。アーカイブ・ファイルにはXMLメタデータ・ファイルとPDBのファイル(データファイルやウォレット・ファイルなど)が含まれます。
PDBの接続時に.pdbアーカイブ・ファイルを使用する場合、このファイルはPDBの接続時に抽出され、PDBのファイルは.pdbアーカイブ・ファイルと同じディレクトリに配置されます。したがって、ソース・ファイルの場所を指定する句は、.pdbアーカイブ・ファイルを使用するときには必要ありません。
PDBの接続時にXMLメタデータ・ファイルを指定する場合、このファイルは切断されたPDBのソース・ファイルの名前と場所を記述します。切断されているファイルをあるストレージ・システムから異なるストレージ・システムにトランスポートした場合は、これらのファイルの場所がXMLファイルに正確に記述されていない可能性があります。これらのファイルは新しい場所にありますが、XMLファイル内のファイル・パスは依然として古い場所を示しています。
CREATE
PLUGGABLE
DATABASE
文には、作成される新しいPDBのソース・ファイルの場所を示す次の句があります。
-
SOURCE_FILE_NAME_CONVERT
句では、PDBが記述されているXMLファイルにリストされているファイル(データファイルなど)が、XMLファイルで指定されているものとは異なる場所に存在する場合に、それらのファイルを検索する方法を指定します。句には、XMLファイルにリストされた各ファイルに関する情報が含まれます。 -
Oracle Database 12cリリース1 (12.1.0.2)以降では、
SOURCE_FILE_DIRECTORY
句は新しいPDBの作成に使用されるファイルのソース・ディレクトリを指定します。句では、XMLファイルにリストされているすべてのファイルを含むディレクトリを指定します。この句は、データファイルが大量にあり、各ファイルのSOURCE_FILE_NAME_CONVERT
パターンの指定が現実的でない場合に使用すると便利です。
これらの句は、XMLメタデータ・ファイル(.pdbアーカイブ・ファイルではない)とともにCREATE
PLUGGABLE
DATABASE
...
USING
文を使用して、切断されているPDBを接続する場合にのみ使用します。これらの句は相互に排他的です。単一のCREATE
PLUGGABLE
DATABASE
文で両方の句を使用することはできません。
- SOURCE_FILE_NAME_CONVERT句
CREATE
PLUGGABLE
DATABASE
...
USING
文のSOURCE_FILE_NAME_CONVERT
句では、PDBが記述されているXMLファイルにリストされているファイル(データファイルなど)が、XMLファイルで指定されているものとは異なる場所に存在する場合に、それらのファイルを検索する方法を指定します。 - SOURCE_FILE_DIRECTORY句
CREATE
PLUGGABLE
DATABASE
文のSOURCE_FILE_DIRECTORY
句では、新しいPDBの作成に使用されるファイルのソース・ディレクトリを指定します。句では、切断されたPDBについてXMLファイルにリストされているすべてのファイルを含むディレクトリを指定します。
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.4.1 SOURCE_FILE_NAME_CONVERT句
CREATE
PLUGGABLE
DATABASE
...
USING
文のSOURCE_FILE_NAME_CONVERT
句では、PDBが記述されているXMLファイルにリストされているファイル(データファイルなど)が、XMLファイルで指定されているものとは異なる場所に存在する場合に、それらのファイルを検索する方法を指定します。
この句を使用して、次のいずれかのオプションを指定できます。
-
1つ以上のファイル名パターンおよび置換ファイル名パターンを次の形式で指定します。
'string1' , 'string2' , 'string3' , 'string4' , ...
string1ファイル名パターンがstring2ファイル名パターンによって置き換えられ、string3ファイル名パターンがstring4ファイル名パターンによって置き換えられます。ファイル名パターン文字列と置換ファイル名パターン文字列のペアを必要な数だけ使用できます。
この句を使用する場合は、PDBに使用するファイルが、置換ファイル名パターンに存在することを確認してください。必要な場合は、ファイルをこれらの場所にコピーまたは移動します。
-
PDBのXMLファイルでファイル名が正確に記述されているためにファイル名を検索する必要がない場合は
NONE
。SOURCE_FILE_NAME_CONVERT
句の省略は、NONE
の指定と同じです。
SOURCE_FILE_NAME_CONVERT
句は、XMLメタデータ・ファイルを指定するUSING
句とともにCREATE
PLUGGABLE
DATABASE
文でのみ使用できます。したがって、この句は、切断されているPDBをXMLメタデータ・ファイルで接続する場合にのみ使用できます。PDBを.pdbアーカイブ・ファイルで接続する場合は、この句を使用できません。
例38-6 SOURCE_FILE_NAME_CONVERT句
次のSOURCE_FILE_NAME_CONVERT
句では、/disk1/oracle/pdb7ディレクトリではなく、/disk2/oracle/pdb7ディレクトリのファイルを使用します。この場合、PDBを記述しているXMLファイルでは、/disk1/oracle/pdb7ディレクトリを指定していますが、PDBでは/disk2/oracle/pdb7ディレクトリのファイルを使用する必要があります。
SOURCE_FILE_NAME_CONVERT = ('/disk1/oracle/pdb7/', '/disk2/oracle/pdb7/')
関連項目:
-
SOURCE_FILE_NAME_CONVERT
句の構文は、『Oracle Database SQL言語リファレンス』を参照してください。
38.1.2.4.2 SOURCE_FILE_DIRECTORY句
CREATE
PLUGGABLE
DATABASE
文のSOURCE_FILE_DIRECTORY
句では、新しいPDBの作成に使用されるファイルのソース・ディレクトリを指定します。句では、切断されたPDBについてXMLファイルにリストされているすべてのファイルを含むディレクトリを指定します。
PDBを接続する際に、ソース・ファイルがすべて単一ディレクトリに存在する場合は、この句でディレクトリ名を指定できます。切断されたPDBのXMLファイルに基づいて適切なファイルを検索するためにディレクトリがスキャンされます。
この句を使用して、次のいずれかのオプションを指定できます。
-
ソース・ファイル・ディレクトリの絶対パス。
-
PDBの作成時にいずれのファイルもコピーまたは移動しない場合は
NONE
を指定します。SOURCE_FILE_DIRECTORY
句の省略は、NONE
の指定と同じです。
SOURCE_FILE_DIRECTORY
句は、XMLメタデータ・ファイルを指定するUSING
句とともにCREATE
PLUGGABLE
DATABASE
文でのみ使用できます。したがって、この句は、切断されているPDBをXMLメタデータ・ファイルで接続する場合にのみ使用できます。PDBを.pdbアーカイブ・ファイルで接続する場合は、この句を使用できません。
この句は、Oracle Managed Filesを使用する構成とOracle Managed Filesを使用しない構成に対して指定できます。
例38-7 SOURCE_FILE_DIRECTORY句
このSOURCE_FILE_DIRECTORY
句は、/oracle/pdb5/ディレクトリ内のソース・ファイルを使用して新しいPDBのファイル名を生成します。
SOURCE_FILE_DIRECTORY = '/oracle/pdb5/'
関連項目:
-
SOURCE_FILE_DIRECTORY
句の構文は、『Oracle Database SQL言語リファレンス』を参照してください
38.1.2.5 サービス名の変更
CREATE
PLUGGABLE
DATABASE
文のSERVICE_NAME_CONVERT
句は、ソースPDBのサービス名に基づいて、新しいPDBのユーザー定義サービスの名前を変更します。
新しいPDBのサービス名がCDB内の既存のサービス名と競合する場合は、プラグイン違反が発生することがあります。SERVICE_NAME_CONVERT
句を使用してサービス名を変更し、これらの違反を回避します。
この句を使用して、次のいずれかのオプションを指定できます。
-
次の形式の1つ以上のサービス名と置換サービス名:
'string1' , 'string2' , 'string3' , 'string4' , ...
string2サービス名はstring1サービス名を置換し、string4サービス名はstring3サービス名を置換します。サービス名と置換サービス名のペアは、必要に応じていくつでも使用できます。
奇数の文字列を指定した(最終文字列に対応する置換文字列が存在しない)場合、エラーが返されます。
-
サービス名を変更する必要がない場合は
NONE
。SERVICE_NAME_CONVERT
句の省略は、NONE
の指定と同じです。
SERVICE_NAME_CONVERT
句は、CDBシードからPDBを作成するCREATE PLUGGABLE DATABASE
文を除く任意のCREATE
PLUGGABLE
DATABASE
文で使用できます。CDBシードはユーザー定義サービスを持つことができません。ただし、アプリケーション・コンテナ内のアプリケーション・シードからアプリケーションPDBを作成するCREATE
PLUGGABLE
DATABASE
文にはこの文を使用できます。
注意:
この句は、PDBのデフォルト・サービスに適用されません。デフォルト・サービスの名前はPDBと同じになります。例38-8 SERVICE_NAME_CONVERT句
このSERVICE_NAME_CONVERT
句は、salesrep
サービスの名前をsalesperson
に変更します。
SERVICE_NAME_CONVERT = ('salesrep','salesperson')
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.6 一時ファイルの再利用
CREATE
PLUGGABLE
DATABASE
文のTEMPFILE REUSE
句では、ターゲットの場所にある既存の一時ファイルを再利用することを指定します。
この句を指定すると、Oracle Databaseによって一時ファイルがフォーマットされ再利用されます。以前のファイルの内容は失われます。この句を指定し、ターゲットの場所に一時ファイルがない場合は、Oracle DatabaseによってPDBの新しい一時ファイルが作成されます。
この句を指定しない場合、CREATE
PLUGGABLE
DATABASE
文により、PDBの新しい一時ファイルが作成されます。新しい一時ファイルと同じ名前のファイルがターゲットの場所に存在すると、エラーが返され、PDBは作成されません。したがって、TEMPFILE REUSE
句を指定しない場合は、そのような一時ファイルがターゲットの場所に存在しないことを確認してください。
例38-9 TEMPFILE REUSE句
TEMPFILE REUSE
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.7 デフォルト表領域
CREATE
PLUGGABLE
DATABASE
文のDEFAULT TABLESPACE
句では、新しいPDBのデフォルト表領域を指定します。
Oracle Databaseによって、別の永続表領域が指定されていないSYSTEM以外のユーザーに対してデフォルト表領域が割り当てられます。
PDBをCDBシードまたはアプリケーション・シードから作成し、DEFAULT TABLESPACE
句を指定する場合、Oracle Databaseはsmallfile表領域を作成し、それをPDBのデフォルト表領域として設定します。PDBのクローニングや切断されたPDBの接続など、CDBシードまたはアプリケーション・シード以外の方法を使用してPDBを作成する場合、デフォルト表領域はソースPDBにすでに存在する表領域である必要があります。
例38-10 DEFAULT TABLESPACE句
DEFAULT TABLESPACE sales
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.8 ユーザー表領域
CREATE
PLUGGABLE
DATABASE
文のUSER_TABLESPACES
句では、新しいPDBで使用できる表領域を指定します。
この句を使用すると、複数のスキーマのデータを異なるPDBに分けることができます。たとえば、非CDBをPDBに移動する場合、その非CDBに多数のスキーマがあって、それぞれ異なるアプリケーションをサポートしているとき、非CDBで各スキーマが別個の表領域を使用していたとすると、この句を使用して各スキーマに属するデータを別個のPDBに分けることができます。
この句を使用して、次のいずれかのオプションを指定できます。
-
含める1つ以上の表領域をリストします。
-
すべての表領域を含める場合は
ALL
(デフォルト)を指定します。 -
リストした表領域を除くすべての表領域を含める場合は
ALL
EXCEPT
を指定します。 -
すべての表領域を除外する場合は
NONE
を指定します。 -
ユーザー表領域の作成モードがオラクル社提供の表領域(
SYSTEM
やSYSAUX
など)の作成モードと異なる必要がある場合は、USER_TABLESPACES
句に次のいずれかを指定します。-
COPY
: 表領域のファイルは新しい場所にコピーされます。 -
MOVE
: 表領域のファイルは新しい場所に移動されます。 -
NOCOPY
: 表領域のファイルはコピーまたは移動されません。 -
SNAPSHOT COPY
: 表領域は記憶域スナップショットにクローニングされます。 -
NO DATA
: 表領域のデータ・モデル定義はクローニングされますが、表領域のデータはクローニングされません。
-
CDBの互換性レベルが12.2.0以上の場合、この句によって除外される表領域は新しいPDBにオフラインで作成され、データファイルは関連付けられません。CDBの互換性レベルが12.2.0未満の場合、この句で除外される表領域は新しいPDBでオフラインとなり、このような表領域に属するデータファイルはすべて無名でオフラインとなります。
この句は、SYSTEM
、SYSAUX
またはTEMP
の各表領域には適用されません。これらの表領域は、この句の表領域リストに含めないでください。
次に、USER_TABLESPACES
句の使用例を示します。
例38-11 1つの表領域が含まれるUSER_TABLESPACES句
PDBの作成元となる非CDBまたはPDBにはtbs1
、tbs2
およびtbs3
の各表領域があるとします。このUSER_TABLESPACES
句には、tbs2
表領域は含まれますが、tbs1
表領域およびtbs3
表領域は含まれません。
USER_TABLESPACES=('tbs2')
例38-12 表領域のリストが含まれるUSER_TABLESPACES句
PDBの作成元となる非CDBまたはPDBにはtbs1
、tbs2
、tbs3
、tbs4
およびtbs5
の各表領域があるとします。このUSER_TABLESPACES
句には、tbs1
、tbs4
およびtbs5
の各表領域は含まれますが、tbs2
表領域およびtbs3
表領域は含まれません。
USER_TABLESPACES=('tbs1','tbs4','tbs5')
例38-13 リストした表領域を除くすべての表領域が含まれるUSER_TABLESPACES句
PDBの作成元となる非CDBまたはPDBにはtbs1
、tbs2
、tbs3
、tbs4
およびtbs5
の各表領域があるとします。このUSER_TABLESPACES
句には、tbs2
表領域およびtbs3
表領域は含まれますが、tbs1
、tbs4
およびtbs5
の各表領域は含まれません。
USER_TABLESPACES=ALL EXCEPT('tbs1','tbs4','tbs5')
例38-14 異なる作成モードのUSER_TABLESPACES
この例は、非CDBを接続し、非CDBからtbs3
ユーザー表領域のみ含める完全なCREATE PLUGGABLE DATABASE
文を示します。例では、オラクル社が提供する表領域(SYSTEM
やSYSAUX
など)のファイルは新しい場所にコピーしますが、tbs3
ユーザー表領域のファイルは移動します。
CREATE PLUGGABLE DATABASE ncdb USING '/disk1/oracle/ncdb.xml'
COPY
FILE_NAME_CONVERT = ('/disk1/oracle/dbs/', '/disk2/oracle/ncdb/')
USER_TABLESPACES=('tbs3') MOVE;
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.9 PDB表領域ロギング
CREATE
PLUGGABLE
DATABASE
文のlogging_clauseでは、PDBのロギング属性を指定します。ロギング属性は、特定のDML操作をREDOログ・ファイルに記録する(LOGGING
)か記録しない(NOLOGGING
)かを制御します。
注意:
この機能は、Oracle Database 12cリリース1 (12.1.0.2)以降で使用可能です。
この句を使用して、次の属性のいずれかを指定できます。
-
LOGGING
(デフォルト)は、PDB内で今後作成される表領域がいずれも、デフォルトでLOGGING
属性を使用して作成されることを示します。 -
NOLOGGING
は、PDB内で今後作成される表領域がいずれも、デフォルトでNOLOGGING
属性を使用して作成されることを示します。
デフォルトのロギング属性は、CREATE TABLE
文などのスキーマ・オブジェクト・レベルでLOGGING
またはNOLOGGING
を指定することで上書きできます。
指定の属性は、CREATE TABLESPACE
文にlogging_clauseが指定されていない場合に、PDB内で作成される表領域のロギング属性の設定に使用されます。
DBA_PDBS
ビューには、PDBの現在のロギング属性が表示されます。
例38-15 PDBのLOGGING属性の指定
LOGGING
例38-16 PDBのNOLOGGING属性の指定
NOLOGGING
関連項目:
-
ロギング属性の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.10 スタンバイCDBへのPDBの包含
CREATE
PLUGGABLE
DATABASE
文のSTANDBYS
句では、新しいPDBをスタンバイCDBに含めるかどうかを指定します。
注意:
この機能は、Oracle Database 12cリリース1 (12.1.0.2)以降で使用可能です。
STANDBYS
句に、次のいずれかの値を指定できます。
-
ALL
は、新しいPDBをすべてのスタンバイCDBに含めます。 -
ALL EXCEPT
は、指定されたスタンバイCDBを除くすべてのスタンバイCDBに新しいPDBを含めます。複数のスタンバイCDBが除外されている場合は、除外されたスタンバイCDBのカンマ区切りリストを使用します。 -
スタンバイCDBのカンマ区切りリスト。新しいPDBはリストされたスタンバイCDBに含まれます。
-
NONE
は、新しいPDBをすべてのスタンバイCDBから除外します。
スタンバイCDBのいずれにもPDBを含めない場合、PDBのデータファイルはすべてのスタンバイCDBでオフラインとなり、無名とマークされます。PDBが作成された後にインスタンス化された新しいスタンバイCDBは、リカバリのために明示的にPDBを無効にし、スタンバイCDBから除外する必要があります。PDBをスタンバイCDBで除外した後に、そのスタンバイCDBで有効にすることができます。
例38-17 新しいPDBをすべてのスタンバイCDBに含めるSTANDBYS句
STANDBYS=ALL
例38-18 指定されたスタンバイCDBを除くすべてのスタンバイCDBに新しいPDBを含めるSTANDBYS句
この例は、スタンバイCDB standby1
およびスタンバイCDB standby2
を除くすべてのスタンバイCDBに新しいPDBを含めるSTANDBYS
句を示しています。
STANDBYS=ALL EXCEPT('standby1','standby2')
例38-19 スタンバイCDBをリストするSTANDBYS句
この例は、スタンバイCDBのリストに新しいPDBを含めるSTANDBYS
句を示しています。リストには、スタンバイCDB standby1
、standby2
およびstandby3
が含まれます。
STANDBYS=('standby1','standby2','standby3')
例38-20 新しいPDBをすべてのスタンバイCDBから除外するSTANDBYS句
STANDBYS=NONE
関連項目:
スタンバイCDBでのPDBの構成の詳細は、『Oracle Data Guard概要および管理』を参照してください。
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.11 PDBをクローニングする場合のデータの除外
CREATE
PLUGGABLE
DATABASE
文のNO DATA
句では、PDBのデータ・モデル定義をクローニングするが、PDBのデータをクローニングしないことを指定します。
注意:
この機能は、Oracle Database 12cリリース1 (12.1.0.2)以降で使用可能です。
ソースPDBのディクショナリ・データはクローニングされますが、ソースPDBのユーザーが作成した表および索引データはすべて破棄されます。この句は、オブジェクト定義以外のデータがないPDBのクローンを短時間で作成する場合に役立ちます。この句を使用するのは、CREATE PLUGGABLE DATABASE ... FROM
文でPDBをクローニングする場合のみです。
この句は、SYSTEM
表領域およびSYSAUX
表領域には適用されません。ソースPDBのユーザーが作成したデータベース・オブジェクトがこれらの表領域のいずれかに格納される場合、データベース・オブジェクトにはクローニングされたPDBのデータが含まれます。
NO DATA
句がCREATE
PLUGGABLE
DATABASE
文に含まれている場合、ソースPDBに次のタイプの表を含めることはできません。
-
アドバンスト・キュー(AQ)表
-
クラスタ表
-
表クラスタ
例38-21 NO DATA句
NO DATA
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.12 PDB作成の並列化
CREATE PLUGGABLE DATABASE
文のPARALLEL
句は、PDBの作成時にパラレル実行サーバーを使用するかどうか、および必要に応じて、並列度を指定します。
この句を使用して、複数のパラレル実行サーバーを使用して新しいPDBのデータファイルを新しい場所にコピーすることで、PDBの作成を高速にできます。CDBの互換性レベルが12.2.0以上の場合、CDBはデフォルトでPDBの作成に使用する並列度を選択します。または、句で目的の並列度を指定できますが、CDBは現在のデータベース負荷および使用可能なパラレル実行サーバー数に応じて提案を無視できます。
0または1の値が指定されている場合、CDBはPDBの作成を並列化しません。0または1を指定すると、PDBの作成時間が長くなることがあります。
この句は、CDBシードやアプリケーション・シードからPDBを作成する場合、またはPDBのクローニングを行う場合にのみ使用します。
例38-22 CDBがPDB作成の並列度を選択
PARALLEL
句を省略するか、CREATE PLUGGABLE DATABASE
文に次のように指定します。
PARALLEL
例38-23 PDB作成の並列度の指定
この例では、4の並列度でPDBを作成することを指定します。
PARALLEL 4
例38-24 CDBがPDBの作成を並列化しないことの指定
この例では、パラレル処理なしでPDBを作成することを指定します。
PARALLEL 1
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.13 PDBのリフレッシュ
CREATE
PLUGGABLE
DATABASE
文のREFRESH MODE
句では、クローンとして作成されたPDBを定期的にリフレッシュできるかどうかを指定します。各PDBリフレッシュは、ソースPDBから新しいPDBに変更を伝播します。
この句は、CREATE
PLUGGABLE
DATABASE
...
FROM
文でのみサポートされます。この句を使用して、次のいずれかのオプションを指定できます。
-
デフォルトの
REFRESH MODE NONE
を指定して、リフレッシュ可能でないPDBを作成します。 -
REFRESH MODE MANUAL
を指定して、手動でリフレッシュする必要のあるリフレッシュ可能PDBを作成します。 -
REFRESH MODE EVERY number_of_minutes MINUTES
を指定して、指定した時間(分単位)の経過後に自動的にリフレッシュされるリフレッシュ可能PDBを作成します。自動リフレッシュを使用するリフレッシュ可能PDBを手動でリフレッシュすることもできます。
リフレッシュ可能PDBは読取り専用モードでのみオープンできます。また、リフレッシュ可能PDBはリフレッシュの実行時にクローズする必要があります。自動リフレッシュが試行されたときにクローズされていない場合、リフレッシュは次のスケジュール済リフレッシュまで延期されます。ユーザーが手動リフレッシュの実行を試行したときにクローズされていない場合は、エラーがレポートされます。
ソースPDBでは行われていない同期されていない変更がリフレッシュ可能なPDBで行われないように、リフレッシュ可能なPDBは読取り専用モードにしておく必要があります。リフレッシュ可能なPDBはクローン・マスターとして機能することが意図されているため、リフレッシュされた時点でソースPDBが正確に反映される必要があります。
この句は、リフレッシュ可能PDBのリフレッシュ・モードを変更するALTER PLUGGABLE DATABASE
文でもサポートされます。ALTER PLUGGABLE DATABASE
文は、手動リフレッシュから自動リフレッシュに、または自動リフレッシュから手動リフレッシュに切り替えることができます。自動リフレッシュの間隔(分単位)を変更することもできます。
注意:
-
リフレッシュ可能なPDBとそのソースは異なるCDBに存在している必要があります。このため、リフレッシュ可能なPDBはソースCDBのリモートにあるCDBで作成する必要があり、作成時にデータベース・リンクを指定する必要があります。
-
リフレッシュ可能でないPDBはリフレッシュ可能PDBに変更できません。一方、リフレッシュ可能なPDBは、PDBに
REFRESH MODE NONE
句を指定したALTER PLUGGABLE DATABASE
文を実行することでリフレッシュ不能のPDBに変更できます。 -
リフレッシュ可能PDBを作成する場合、PDBに
REMOTE_RECOVERY_FILE_DEST
初期化パラメータを設定できます。この初期化パラメータは、ソースPDBがデータベース・リンク上で使用可能でない場合に、リフレッシュ操作中にアーカイブ・ログ・ファイルを読み取るディレクトリを指定します。 -
ソースPDBに新しいデータファイルが作成された場合は、CDBで
PDB_FILE_NAME_CONVERT
初期化パラメータを設定して、データファイルのパスをソースPDBからクローンPDBに変換する必要があります。
例38-25 自動リフレッシュを指定したREFRESH MODE句
このリフレッシュ・モード句では、リフレッシュ可能なPDBが2時間(120分)おきに自動的にリフレッシュされることを指定します。
REFRESH MODE EVERY 120 MINUTES
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.14 アプリケーション・コンテナおよびアプリケーション・シード
CREATE PLUGGABLE DATABASE
文では、アプリケーション・コンテナを作成できます。アプリケーション・コンテナにアプリケーション・シードを作成することもできます。
- AS APPLICATION CONTAINER句
アプリケーション・コンテナを作成するには、CREATE
PLUGGABLE
DATABASE
文のAS APPLICATION CONTAINER
句を指定します。 - AS SEED句
アプリケーション・コンテナにアプリケーション・シードを作成するには、CREATE
PLUGGABLE
DATABASE
文のAS SEED
句を指定します。
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.14.1 AS APPLICATION CONTAINER句
アプリケーション・コンテナを作成するには、CREATE
PLUGGABLE
DATABASE
文のAS APPLICATION CONTAINER
句を指定します。
この句では、アプリケーション・コンテナ(PDBではない)を作成します。この句をCREATE
PLUGGABLE
DATABASE
文に含めた場合は、PDBの作成に使用される手法と句をすべて使用できます。
この句を含める場合は、現在のコンテナがCDBルートである必要があります。アプリケーション・ルートにすることはできません。
例38-26 AS APPLICATION CONTAINER句
AS APPLICATION CONTAINER
親トピック: アプリケーション・コンテナおよびアプリケーション・シード
38.1.2.14.2 AS SEED句
アプリケーション・コンテナにアプリケーション・シードを作成するには、CREATE
PLUGGABLE
DATABASE
文のAS SEED
句を指定します。
この句では、アプリケーション・コンテナにアプリケーション・シードを作成します。この句をCREATE
PLUGGABLE
DATABASE
文に含めた場合は、PDBの作成に使用される手法と句をすべて使用できます。
この句を含める場合は、現在のコンテナがアプリケーション・ルートである必要があります。CDBルートにすることはできません。
アプリケーション・コンテナには1つのアプリケーション・シードを含めるか、アプリケーション・シードを含めないことができます。複数のアプリケーション・シードを含めることはできません。
アプリケーション・シードの作成後に、アプリケーション・コンテナにアプリケーションPDBを作成するために使用できます。アプリケーション・シードは、アプリケーション・コンテナの要件を満たすアプリケーションPDBを迅速に作成する方法を提供します。
例38-27 AS SEED句
AS SEED
親トピック: アプリケーション・コンテナおよびアプリケーション・シード
38.1.2.15 PDBリスナーのホスト名とポート番号
PDBのホスト名とポート番号の設定は、プロキシPDBがPDBを参照する場合にのみ重要です。PORT
句を使用して、PDBのポート番号を指定します。HOST
句を使用して、PDBのホスト名を指定します。
- HOST句
CREATE
PLUGGABLE
DATABASE
文のHOST
句では、作成されるPDBのリスナーのホスト名を指定します。 - PORT句
CREATE
PLUGGABLE
DATABASE
文のPORT
句では、作成されるPDBのリスナーのポート番号を指定します。
関連トピック
親トピック: CREATE PLUGGABLE DATABASE文
38.1.2.15.1 HOST句
CREATE
PLUGGABLE
DATABASE
文のHOST
句では、作成されるPDBのリスナーのホスト名を指定します。
デフォルトでは、リスナーのホスト名は作成されるPDBのホスト名と同じです。次の両方の条件を満たす場合にHOST
句を指定します。
-
リスナーのホスト名は、作成されるPDBのホスト名と異なります。
-
作成されるPDBを参照するプロキシPDBの作成を計画します。
プロキシPDBは、データベース・リンクを使用して、その参照先PDBと通信を確立します。通信が確立されると、プロキシPDBはデータベース・リンクを使用せずに参照先PDBと直接通信します。プロキシPDBが正常に機能するためにはリスナーのホスト名が正しい必要があります。
例38-28 HOST句
HOST='myhost.example.com'
関連トピック
親トピック: PDBリスナー・ホスト名およびポート番号
38.1.2.15.2 PORT句
CREATE
PLUGGABLE
DATABASE
文のPORT
句では、作成されるPDBのリスナーのポート番号を指定します。
デフォルトでは、作成されるPDBのポート番号は1521です。次の両方の条件を満たす場合にPORT
句を指定します。
-
リスナーのポート番号は1521ではありません。
-
作成されるPDBを参照するプロキシPDBの作成を計画します。
プロキシPDBは、データベース・リンクを使用して、その参照先PDBと通信を確立します。通信が確立されると、プロキシPDBはデータベース・リンクを使用せずに参照先PDBと直接通信します。プロキシPDBが正常に機能するためにはリスナーのポート番号が正しい必要があります。
例38-29 PORT句
PORT=1599
親トピック: PDBリスナー・ホスト名およびポート番号
38.1.3 PDB作成のための句の概要
CREATE PLUGGABLE DATABASE
文を使用してPDBを作成する場合、PDBの作成に使用している手法などの様々な要因に基づいて様々な句を使用できます。一連の質問に回答することで、使用する句を判断できます。
次の表では、様々な要因に基づいて指定する必要があるCREATE
PLUGGABLE
DATABASE
の句について説明しています。
表38-3 PDBを作成する場合の句
句 | 使用可能な場合 | 質問 | はい | いいえ |
---|---|---|---|---|
|
CDBでのアプリケーション・コンテナの作成 |
PDBのかわりにアプリケーション・コンテナを作成しますか。 |
|
|
|
切断されたPDBの接続 |
同じPDBを接続して作成した1つ以上のPDBを含むCDBにPDBを接続しますか。 |
|
|
|
アプリケーション・コンテナでのアプリケーション・シードの作成 |
アプリケーション・コンテナにアプリケーション・シードを作成しますか。 |
|
|
|
CDBシードまたはアプリケーション・シードからのPDBの作成 PDBのクローニング PDBの再配置 切断されたPDBの接続 |
CDBシードまたはアプリケーション・シードからPDBを作成する場合、ソース・ファイルは、シードに関連付けられたファイルです。 |
PDBのファイル用のデフォルトのファイル・システム・ディレクトリまたはOracle ASMディスク・グループを指定する |
次のいずれかの手法を使用して、ファイルのターゲットの場所を指定します。
「新しいPDBのファイルの場所」を参照してください。 |
|
CDBシードまたはアプリケーション・シードからのPDBの作成 PDBのクローニング PDBの再配置 切断されたPDBの接続 |
PDBのデフォルト・パラメータ表領域を指定しますか。 |
適切な制限を使用して この表領域には、Oracle Databaseによって、別の永続表領域が指定されていない PDBをCDBシードまたはアプリケーション・シードから作成する場合、Oracle Databaseはsmallfile表領域を作成し、それをデフォルト表領域として設定します。CDBシードまたはアプリケーション・シードからの作成以外の手法を使用する場合は、指定した表領域がソースPDBに存在する必要があります。 |
この句を指定しない場合、 |
|
CDBシードまたはアプリケーション・シードからのPDBの作成 PDBのクローニング PDBの再配置 プロキシPDBの作成( 切断されたPDBの接続 |
CDBシードまたはアプリケーション・シードからPDBを作成する場合、ソース・ファイルは、シードに関連付けられたファイルです。 |
ソース・ファイルの名前に基づいてファイルのターゲットの場所を指定する |
次のいずれかの手法を使用して、ファイルのターゲットの場所を指定します。
「新しいPDBのファイルの場所」を参照してください。 |
|
CDBシードまたはアプリケーション・シードからのPDBの作成 PDBのクローニング PDBの再配置 切断されたPDBの接続 |
PDBは依存するプロキシPDBを持つ参照PDBですか? リスナーのホスト名を変更しますか? |
|
|
logging_clause |
CDBシードまたはアプリケーション・シードからのPDBの作成 PDBのクローニング 切断されたPDBの接続 |
新しいPDBに表領域のロギング属性を指定しますか。 この機能は、Oracle Database 12cリリース1 (12.1.0.2)以降で使用可能です。 |
logging_clauseを含めます。 |
logging_clauseを省略します。 |
「新しいPDBのファイルの場所」を参照してください。 |
切断されたPDBの接続 |
ファイルを新しい場所にコピーまたは移動しますか。 |
|
|
|
PDBのクローニング |
ソースPDBのデータ・モデル定義をクローニングするが、ソースPDBのデータをクローニングしないことを指定しますか。 この機能は、Oracle Database 12cリリース1 (12.1.0.2)以降で使用可能です。 |
|
|
|
CDBシードまたはアプリケーション・シードからのPDBの作成 PDBのクローニング |
複数のパラレル実行サーバーを使用してPDBの作成を並列化しますか。 |
CDBで並列度を選択するには、 並列度を指定するには、 |
PARALLEL 0 またはPARALLEL 1 を指定します。
|
|
CDBシードまたはアプリケーション・シードからのPDBの作成 PDBのクローニング PDBの再配置 切断されたPDBの接続 |
ディレクトリ・オブジェクト、PDBのOracle XML リポジトリ、
|
絶対パスを指定する |
|
|
CDBシードまたはアプリケーション・シードからのPDBの作成 PDBのクローニング PDBの再配置 切断されたPDBの接続 |
PDBは依存するプロキシPDBを持つ参照PDBですか? リスナーのポート番号を1521以外の値に変更しますか? |
|
|
|
PDBのクローニング |
ソースPDBからクローンPDBに変更を伝播するためにPDBをリフレッシュできるようにしますか。 リフレッシュ可能PDBは読取り専用モードでオープンする必要があります。 |
|
|
|
CDBシードまたはアプリケーション・シードからのPDBの作成 プロキシPDBの作成 |
Oracleの事前定義されているロールをPDBでローカルに PDBの新しい管理者には、 |
|
|
|
CDBシードではなくアプリケーション・シードからのPDBの作成 PDBのクローニング PDBの再配置 プロキシPDBの作成( 切断されたPDBの接続 |
|
サービスの新しい名前とそれが置換するサービス名を指定する |
|
|
PDBのクローニング |
記憶域スナップショットを使用してPDBをクローニングしますか。 |
記憶域スナップショットを使用してPDBクローンを作成する場合は、ソースPDBのデータファイルをコピーする必要がないため、ほぼ即時にクローンが作成されます。 |
|
|
XMLファイル・ディレクトリを使用して切断されたPDBを接続します。 この句は、.pdbアーカイブ・ファイルによる切断されたPDBの接続には適用されません。 |
単一ディレクトリ内のすべてのソース・ファイルが新しいファイル名を持ち、複数の |
ソース・ファイルへの完全絶対パスで |
|
|
XMLファイル・ディレクトリを使用して切断されたPDBを接続します。 この句は、.pdbアーカイブ・ファイルによる切断されたPDBの接続には適用されません。 |
XMLファイルの内容は、ソース・ファイルの場所を正確に記述していますか。 |
|
|
|
CDBシードまたはアプリケーション・シードからのPDBの作成 PDBのクローニング PDBの再配置 切断されたPDBの接続 |
1つ以上のスタンバイCDBに新しいPDBを含めますか。 |
|
|
|
CDBシードまたはアプリケーション・シードからのPDBの作成 PDBのクローニング PDBの再配置 切断されたPDBの接続 |
PDBが使用できる記憶域の量を制限しますか。 |
適切な制限を使用して |
|
|
CDBシードまたはアプリケーション・シードからのPDBの作成 PDBのクローニング PDBの再配置 切断されたPDBの接続 |
ターゲットの場所に一時ファイルがある場合、それを再利用しますか。 |
|
ターゲットの場所に新しい一時ファイルと同じ名前のファイルがないことを確認します。 |
|
非CDBのクローニング 切断されたPDBの接続 |
新しいPDBに含める表領域および新しいPDBから除外する表領域を指定しますか。 この機能は、Oracle Database 12cリリース1 (12.1.0.2)以降で使用可能です。 |
|
|
親トピック: PDBの作成と削除について
38.2 PDBの準備
PDBを作成する前に、前提条件を満たす必要があります。
PDBを作成する前に、次の前提条件が満たされていることを確認してください。
-
CDBが存在していることが必要です。
CDBの作成および構成を参照してください。
-
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管理者ガイド』の手順に従ってください。
関連項目:
親トピック: SQL*Plusを使用したPDBの作成および削除
38.3 シードを使用したPDBの作成
CREATE
PLUGGABLE
DATABASE
文により、CDBシードのファイルを使用してCDBにPDBを作成できます。この文を使用すると、アプリケーション・シードまたはCDBシードのファイルを使用して、アプリケーション・コンテナにアプリケーションPDBを作成することもできます。
- シードからPDBを作成する方法について
CREATE
PLUGGABLE
DATABASE
文を使用すると、CDBシードのファイルを使用して新しいPDBを作成したり、アプリケーション・シードまたはCDBシードのファイルからアプリケーションPDBを作成したりできます。 - シードからPDBを作成する方法
CREATE
PLUGGABLE
DATABASE
文を使用すると、CDBシードからPDBを作成したり、アプリケーション・シードまたはCDBシードからアプリケーションPDBを作成することができます。
関連項目:
CREATE
PLUGGABLE
DATABASE
文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
親トピック: SQL*Plusを使用したPDBの作成および削除
38.3.1 シードからPDBを作成する方法について
CREATE
PLUGGABLE
DATABASE
文を使用すると、CDBシードのファイルを使用して新しいPDBを作成したり、アプリケーション・シードまたはCDBシードのファイルからアプリケーションPDBを作成したりできます。
この文では、これらのファイルを新しい場所にコピーし、新しいPDBに関連付けます。図38-2に、この手法でCDBルートを現在のコンテナとして新しいPDBをCDBに作成する方法を示します。
図38-3に、この手法でアプリケーション・ルートを現在のコンテナとして新しいアプリケーションPDBをアプリケーション・コンテナに作成する方法を示します。
図38-3 アプリケーション・シード・ファイルを使用したアプリケーション・ルートでのPDBの作成
「図38-3 アプリケーション・シード・ファイルを使用したアプリケーション・ルートでのPDBの作成」の説明
アプリケーション・コンテナにアプリケーション・シードが含まれ、シードからアプリケーションPDBを作成するためにCREATE
PLUGGABLE
DATABASE
文がアプリケーション・ルートで実行されている場合、アプリケーションPDBはアプリケーション・シードを使用して作成されます。一方、アプリケーション・コンテナにアプリケーション・シードが含まれず、シードからアプリケーションPDBを作成するためにCREATE
PLUGGABLE
DATABASE
文がアプリケーション・ルートで実行されている場合、アプリケーションPDBはCDBシード(PDB$SEED
)を使用して作成されます。
シードから新しいPDBまたはアプリケーションPDBを作成する場合、CREATE
PLUGGABLE
DATABASE
文でPDBまたはアプリケーションPDBの管理者を指定する必要があります。この文では、管理者をPDBのローカル・ユーザーとして作成し、PDB_DBA
ロールを管理者にローカルに付与します。
CDBシードまたはアプリケーション・シードを使用してPDBを作成する場合は、表38-3のシードからのPDBの作成に適用される質問に対処する必要があります。この表では、様々な要因に基づいて指定する必要があるCREATE
PLUGGABLE
DATABASE
の句について説明しています。
関連項目:
親トピック: シードを使用したPDBの作成
38.3.2 シードからPDBを作成する方法
CREATE
PLUGGABLE
DATABASE
文を使用すると、CDBシードからPDBを作成したり、アプリケーション・シードまたはCDBシードからアプリケーションPDBを作成したりできます。
CDBシード(PDB$SEED
)からPDBを作成するか、アプリケーション・シードまたはCDBシードからアプリケーションPDBを作成する前に、「PDBの準備」で説明している前提条件を満たす必要があります。
シードからPDBを作成するには:
-
SQL*Plusで、現在のコンテナがCDBルートまたはアプリケーション・ルートであることを確認します。
現在のコンテナがCDBルートの場合、PDBはCDBシードのファイルを使用してCDBに作成されます。
現在のコンテナがアプリケーション・ルートの場合、アプリケーションPDBはアプリケーション・シードのファイルを使用してアプリケーション・コンテナに作成されます。アプリケーション・コンテナにアプリケーション・シードがない場合、アプリケーションPDBはCDBシードのファイルを使用してアプリケーション・コンテナに作成されます。
「現在のコンテナについて」および「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
CREATE
PLUGGABLE
DATABASE
文を実行し、PDBのローカル管理者を指定します。他の句が必要な場合はそれらを指定します。「シードからPDBを作成する例」を参照してください。
作成したPDBはマウント・モードになり、そのステータスは
NEW
です。PDBのオープン・モードは、V$PDBS
ビューのOPEN_MODE
列を問い合せることで確認できます。CDB_PDBS
またはDBA_PDBS
ビューのSTATUS
列を問い合せて、PDBのステータスを表示できます。PDBの新しいデフォルト・サービスが作成されます。サービスの名前はPDBと同じになり、このサービスを使用してPDBにアクセスできます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。 「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
新しいPDBを読取り/書込みモードでオープンします。
Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。詳細は、「PDBのオープン・モードの変更」を参照してください。
-
PDBをバックアップします。
PDBは、バックアップしないとリカバリできません。
PDBのバックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
指定されたローカル管理者の名前を持つローカル・ユーザーが作成され、このユーザーにPDBでローカルにPDB_DBA
共通ロールが付与されます。PDBの作成時にユーザーに管理者権限が付与されなかった場合は、SYS
およびSYSTEM
共通ユーザーを使用してPDBを管理します。
注意:
PDBの作成時にエラーが返された場合は、作成されたPDBがUNUSABLE
状態である可能性があります。CDB_PDBS
またはDBA_PDBS
ビューを問い合せてPDBの状態を確認したり、アラート・ログをチェックしてPDBの作成エラーの詳細を確認できます。使用不可のPDBは削除することのみができ、使用不可のPDBと同じ名前のPDBを作成できるようにするには、その前に削除する必要があります。
シードからPDBを作成する例
次の例では、様々な要因に基づき、salespdb
およびsalesadm
という名前の新しいPDBローカル管理者を作成します。
salespdb
PDBの作成に加えて、この文では、PDB_DBA
ロールをPDB管理者であるsalesadm
に付与し、指定したOracleの事前定義済ロールをPDB_DBA
ロールにPDBでローカルに付与します。
各例で、新しいPDBが属するルートはCREATE
PLUGGABLE
DATABASE
文の実行時の現在のコンテナによって決まります。
-
現在のコンテナがCDBルートの場合、新しいPDBはCDBルートに作成されます。
-
現在のコンテナがアプリケーション・コンテナ内のアプリケーション・ルートの場合、新しいPDBはアプリケーション・ルート内にアプリケーションPDBとして作成されます。
例38-30 句を指定せずにPDBを作成する方法
この例では、次の要因を想定しています。
-
PDBにはストレージ制限は必要ありません。したがって、
STORAGE
句は必要ありません。 -
PDBにはデフォルトの表領域は必要ありません。
-
PATH_PREFIX
句は必要ありません。 -
FILE_NAME_CONVERT
句およびCREATE_FILE_DEST
句は必要ありません。CDBに対してOracle Managed Filesが有効であるか、または
PDB_FILE_NAME_CONVERT
初期化パラメータが設定されています。CDBシードまたはアプリケーション・シードに関連付けられているファイルは、Oracle Managed Files構成または初期化パラメータ設定に基づいて新しい場所にコピーされます。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。 -
Oracleの事前定義されたロールを
PDB_DBA
ロールに付与する必要はありません。
前述の要因に基づき、次の文によってPDBが作成されます。
CREATE PLUGGABLE DATABASE salespdb ADMIN USER salesadm IDENTIFIED BY password;
関連項目:
-
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。 -
パスワード選択のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。
例38-31 PDBの作成、およびPDB管理者へのOracleの事前定義されたロールの付与
この例では、次の要因を想定しています。
-
PDBにはストレージ制限は必要ありません。したがって、
STORAGE
句は必要ありません。 -
PDBにはデフォルトの表領域は必要ありません。
-
PATH_PREFIX
句は必要ありません。 -
FILE_NAME_CONVERT
句およびCREATE_FILE_DEST
句は必要ありません。Oracle Managed Filesが有効であるか、または
PDB_FILE_NAME_CONVERT
初期化パラメータが設定されています。CDBシードまたはアプリケーション・シードに関連付けられているファイルは、Oracle Managed Files構成または初期化パラメータ設定に基づいて新しい場所にコピーされます。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。 -
PDB_DBA
ロールには、事前定義されたDBA
Oracleロールがローカルで付与されている必要があります。
前述の要因に基づき、次の文によってPDBが作成されます。
CREATE PLUGGABLE DATABASE salespdb ADMIN USER salesadm IDENTIFIED BY password
ROLES=(DBA);
関連項目:
-
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。 -
パスワード選択のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。
例38-32 STORAGE、DEFAULT TABLESPACE、PATH_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
句が必要です。システムにおけるCDBシードまたはアプリケーション・シードのデータファイルの場所を指定します。この例では、Oracle Databaseは/disk1/oracle/dbs/pdbseedのファイルを/disk1/oracle/dbs/salespdbにコピーします。CDBシードまたはアプリケーション・シードのデータファイルの場所を表示するには、例45-7の問合せを実行します。
-
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
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/');
関連項目:
-
DEFAULT
TABLESPACE
句の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 -
パスワード選択のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。
親トピック: シードを使用したPDBの作成
38.4 既存のPDBまたは非CDBのクローニングによるPDBの作成
ローカルPDB、リモートPDBまたは非CDBをクローニングすることで、PDBを作成できます。
注意:
CDB以外をクローニングしたPDBの作成は、Oracle Database 12cリリース1(12.1.0.2)より使用可能です。
- PDBのクローニングについて
CREATE
PLUGGABLE
DATABASE
文を使用して、ソースPDBまたは非CDBからPDBをクローニングできます。 - ローカルPDBのクローニング
この項では、ローカルPDBのクローニングについて説明します。ローカルPDBのクローニング後、ソースPDBとターゲットPDBは同じCDBに存在します。 - リモートPDBまたは非CDBのクローニング
リモート・ソースをクローニングすることでPDBを作成できます。リモート・ソースは、リモートPDBでも非CDBでもかまいません。クローニング操作の完了後、ソースとターゲットPDBは異なる場所にあります。 - PDBのクローニング後
PDBのクローニング後に、ユーザーと表領域に関する特定のルールが適用されます。
親トピック: SQL*Plusを使用したPDBの作成および削除
38.4.1 PDBのクローニングについて
CREATE
PLUGGABLE
DATABASE
文を使用して、ソースPDBまたは非CDBからPDBをクローニングできます。
この手法では、ソースPDBまたは非CDBを新しいPDBとしてクローニングし、そのクローンをCDBに自動的に接続します。この手法を使用するには、ソースを指定するFROM
句を含める必要があります。
ソースは、コピーされる既存のPDBまたは非CDBです。ターゲットPDBはソースのクローンです。ソースは、ローカルCDBのPDB、リモートCDBのPDB、非CDBのいずれでもかまいません。CREATE
PLUGGABLE
DATABASE
文では、ソースに関連付けられているファイルを新しい場所にコピーし、そのファイルをターゲットPDBに関連付けます。CDBがARCHIVELOG
モードおよびローカルUNDOモードの場合、ソースPDBは読取り/書込みモードでオープンでき、動作中に完全に機能します。 したがって、ホットPDBクローニングがサポートされます。
クローニングの用途の1つは、テスト用です。クローニングを使用すると、PDBまたは非CDBのクローンを1つ以上作成し、孤立した状況で安全にテストできます。たとえば、新しいアプリケーションまたは変更されたアプリケーションを、本番PDBで使用する前に、クローニングPDBでテストできます。
図38-4は、ソースがローカルPDBである場合に、この手法で新しいPDBがどのように作成されるかを示しています。
ソースがリモートCDB内のPDBである場合は、データベース・リンクを使用してPDBをクローニングする必要があります。データベース・リンクは、クローニングされたPDBが含められるCDBに作成する必要があります。新しいPDBを含めるCDBのルートからCREATE PLUGGABLE DATABASE
文を発行する場合は、クローニングされるPDBを含むリモートCDBへのデータベース・リンクをFROM
句で指定する必要があります。このデータベース・リンクは、リモートCDBのルート、または新規PDBを含めるCDBからリモート・ソースPDBに接続します。
図38-5は、ソースPDBがリモートである場合に、この手法で新規PDBがどのように作成されるかを示しています。
ソースが非CDBである場合は、非CDBへのデータベース・リンクをFROM
句で指定する必要があります。図38-6は、ソースがリモート非CDBである場合に、この手法で新しいPDBがどのように作成されるかを示しています。
すべてのクローニングの使用例(ローカル、リモートおよび非CDBから)で、CREATE PLUGGABLE DATABASE
文の実行時にアプリケーション・ルートが現在のコンテナである場合、クローニングされたPDBはアプリケーション・コンテナに作成されます。この場合、ソースPDBのアプリケーション名およびバージョンは、アプリケーション・コンテナのアプリケーション名およびバージョンと一致する必要があります。図38-7に、この手法でローカル・ソース・アプリケーションPDBをクローニングすることで新しいアプリケーションPDBをアプリケーション・コンテナに作成する方法を示します。ソースPDBは、ローカルCDBルートに接続されたPDB、リモートCDBルートに接続されたPDBまたはリモート・アプリケーション・ルートに接続されたアプリケーションPDBにすることができます。
注意:
PDBをCDBシード(PDB$SEED
)またはアプリケーション・シードから作成する場合に、CREATE
PLUGGABLE
DATABASE
文にFROM
句を含めることはできません。PDBをシードから作成する場合の詳細は、「シードを使用したPDBの作成」を参照してください。
PDBをクローニングする場合は、表38-3のPDBのクローニングに適用される質問に対処する必要があります。この表では、様々な要因に基づいて指定する必要があるCREATE
PLUGGABLE
DATABASE
の句について説明しています。
注意:
別のPDBをクローニングしてPDBを作成するか、非CDBからPDBを作成するときに、ソース・データベースに暗号化されたデータまたはキーストア・セットがある場合、CREATE PLUGGABLE DATABASE ... FROM
SQL文のkeystore_password
句によって識別されるキーストアを含めることによって、キーストアのパスワードを提供する必要があります。ソース・データベースで自動ログイン・ソフトウェア・キーストアが使用されている場合でも、このパスワードを指定する必要があります。ソース・データベースに暗号化データまたはキーストアがあるかどうかを判別するには、DBA_ENCRYPTED_COLUMNS
データ・ディクショナリ・ビューに問い合せます。
関連項目:
-
暗号化データまたはキーストア・セットを持つソースのクローニングの詳細は、Oracle Database Advanced Securityガイドを参照してください
リフレッシュ可能なクローンPDB
ソースPDBをクローニングし、クローンをリフレッシュ可能として構成できます。そのためには、CREATE PLUGGABLE DATABASE
文のREFRESH MODE
句を含めます。クローンPDBがリフレッシュされると、ソースPDBに対して行われた変更で更新されます。設定した間隔で自動的にリフレッシュするようにクローンPDBを構成するか、またはALTER PLUGGABLE DATABASE REFRESH
文により手動でリフレッシュできます。リフレッシュ可能なクローンPDBとソースPDBは異なるCDBに存在している必要があります。
リフレッシュ可能なクローンPDBは、読取り専用モードであるかクローズされている必要があります。読取り/書込みモードにすることはできません。ただし、ALTER PLUGGABLE DATABASE
文にREFRESH MODE NONE
句を含め、PDBを読取り/書込みモードでオープンすることにより、リフレッシュ可能なクローンPDBを通常のPDBに変更できます。通常のPDBはリフレッシュ可能なクローンPDBに変更できず、リフレッシュ可能なクローンPDBが通常のPDBに変換された後は、リフレッシュ可能クローンPDBに戻すことができません。
SNAPSHOT COPY句
SNAPSHOT
COPY
句を使用している場合、ソースPDBのすべてのデータファイルは、同じ記憶域タイプに格納されている必要があります。
SNAPSHOT
COPY
句を使用してソースPDBのクローンを作成し、CLONEDB
初期化パラメータをFALSE
に設定する場合、ソースPDBのファイルの基になるファイル・システムが記憶域スナップショットをサポートしている必要があります。そのようなファイル・システムとして、Oracle Automatic Storage Management Cluster File System (Oracle ACFS)およびDirect NFS Client記憶域などがあります。Exadataは、スパースASMグリッド・ディスクを使用して構成されたASMでスナップショット・コピー機能をサポートします。
SNAPSHOT
COPY
句を使用してソースPDBのクローンを作成し、CLONEDB
初期化パラメータをTRUE
に設定する場合、ソースPDBのファイルの基になるファイル・システムはローカル・ファイル・システム、ネットワーク・ファイル・システム(NFS)またはDirect NFSを有効にしてスパース・ファイルをサポートするクラスタ・ファイル・システムの可能性があります。ただし、CLONEDB
初期化パラメータにTRUE
が設定されていて、クローンが存在する場合、ソースPDBはオープン読取り専用モードのままにする必要があります。
Direct NFSクライアントにより、Oracle Databaseは、オペレーティング・システム・カーネルのNFSクライアントを使用するかわりに、ネットワーク接続記憶域(NAS)デバイスに直接アクセスできます。PDBのファイルがDirect NFSクライアント記憶域に格納されている場合は、次の追加要件を満たす必要があります。
-
ソースPDBのファイルはNFSボリューム上に存在する必要があります。
-
記憶域の資格証明は、透過的データ暗号化キーストアに格納されている必要があります。
-
記憶域ユーザーは、ソースPDBのファイルをホストするボリューム上でスナップショットを作成および破棄するのに必要な権限を持っている必要があります。
-
資格証明は、
ADMINISTER
KEY
MANAGEMENT
ADD
SECRET
SQL文を使用してキーストアに格納されている必要があります。次の例では、ソフトウェア・キーストアのOracle Databaseシークレットを構成しています。
ADMINISTER KEY MANAGEMENT ADD SECRET 'secret' FOR CLIENT 'client_name' USING TAG 'storage_user' IDENTIFIED BY keystore_password WITH BACKUP;
構成内の各記憶域サーバーに対して個別のエントリを追加するには、この文を実行します。前の例では、次の値を指定する必要があります。
-
secret
は、記憶域パスワードです。 -
client_name
は、記憶域サーバーです。LinuxまたはUNIXのプラットフォームでは、/etc/hostsに入力した名前または記憶域サーバーのIPアドレスです。 -
tag
は、記憶域サーバーに渡されるユーザー名です。 -
keystore_password
は、キーストアのパスワードです。
キーストアおよびシークレットの管理の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。
-
SNAPSHOT
COPY
句を使用して作成したPDBのクローンは、切断できません。削除のみ可能です。SNAPSHOT
COPY
句を使用して作成したクローンを切断しようとすると、エラーが発生します。
記憶域クローンには、宛先PDBのGUIDを使用して名前およびタグが付けられます。DBA_PDB_HISTORY
ビューのCLONETAG
列を問い合せて、記憶域クローンのクローン・タグを表示できます。
注意:
スナップショット・コピーの動作および効率性はベンダー固有であり、ベンダーによって異なる場合があります。関連項目:
-
Oracle ACFSの詳細は、『Oracle Automatic Storage Management管理者ガイド』を参照してください。
-
Direct NFSクライアントの詳細は、使用しているオペレーティング・システムの『Oracle Grid Infrastructureインストレーション・ガイド』を参照してください。
-
透過的データ暗号化の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。
-
PDBのスナップショット・クローニングをサポートするプラットフォームの詳細は、My Oracle Supportノート1597027.1を参照してください。
-
SNAPSHOT COPY
句を使用して作成されたPDBクローンでのExadataのサポートの詳細は、Oracle Exadata Storage Server Softwareユーザーズ・ガイドを参照してください
38.4.2 ローカルPDBのクローニング
この項では、ローカルPDBのクローニングについて説明します。ローカルPDBのクローニング後、ソースPDBとターゲットPDBは同じCDBに存在します。
次の前提条件を満たしている必要があります。
-
「PDBの準備」で説明している前提条件を満たします。
-
現行ユーザーは、ルートおよびソースPDBの両方で
CREATE
PLUGGABLE
DATABASE
システム権限を持っている必要があります。 -
ソースPDBはクローズできません。
-
CDBがローカルUNDOモードでない場合、ソースPDBは読取り専用オープン・モードである必要があります。この要件は、CDBがローカルUNDOモードの場合は適用されません。
「CDB UNDOモードについて」を参照してください。
-
CDBが
ARCHIVELOG
モードでない場合、ソースPDBは読取り専用オープン・モードである必要があります。この要件は、CDBがARCHIVELOG
モードの場合は適用されません。 -
アプリケーションPDBを作成している場合、アプリケーションPDBはアプリケーション・コンテナと同じキャラクタ・セットおよび各国語キャラクタ・セットである必要があります。
CDBのデータベース・キャラクタ・セットがAL32UTF8の場合、アプリケーション・コンテナのキャラクタ・セットおよび各国語キャラクタ・セットはCDBと異なっていても構いません。ただし、アプリケーション・コンテナ内のすべてのアプリケーションPDBには、アプリケーション・コンテナと同じキャラクタ・セットおよび各国語キャラクタ・セットが必要です。
注意:
REFRESH MODE
句を使用して、ローカルPDBのクローンであるリフレッシュ可能なクローンPDBを作成することはできません。リフレッシュ可能なクローンPDBは、リモートCDBに作成する必要があります。
ローカルPDBをクローニングするには:
-
SQL*Plusで、現在のコンテナがCDBルートまたはアプリケーション・ルートであることを確認します。
現在のコンテナがCDBルートの場合、PDBはCDBに作成されます。現在のコンテナがアプリケーション・ルートの場合、アプリケーションPDBはアプリケーション・コンテナ内に作成されます。
「現在のコンテナについて」および「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
CREATE
PLUGGABLE
DATABASE
文を実行し、ソースPDBをFROM
句で指定します。他の句が必要な場合はそれらを指定します。「ローカルPDBのクローニングの例」を参照してください。
作成したPDBはマウント・モードになり、そのステータスは
NEW
です。PDBのオープン・モードは、V$PDBS
ビューのOPEN_MODE
列を問い合せることで確認できます。CDB_PDBS
またはDBA_PDBS
ビューのSTATUS
列を問い合せて、PDBのステータスを表示できます。PDBの新しいデフォルト・サービスが作成されます。サービスの名前はPDBと同じになり、このサービスを使用してPDBにアクセスできます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。 「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
新しいPDBを読取り/書込みモードでオープンします。
Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。詳細は、「PDBのオープン・モードの変更」を参照してください。
-
PDBをバックアップします。
PDBは、バックアップしないとリカバリできません。
PDBのバックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
注意:
PDBの作成時にエラーが返された場合は、作成されたPDBがUNUSABLE
状態である可能性があります。CDB_PDBS
またはDBA_PDBS
ビューを問い合せてPDBの状態を確認したり、アラート・ログをチェックしてPDBの作成エラーの詳細を確認できます。使用不可のPDBは削除することのみができ、使用不可のPDBと同じ名前のPDBを作成できるようにするには、その前に削除する必要があります。
ローカルPDBのクローニングの例
次の例では、様々な要因に基づき、pdb1
という名前のローカル・ソースPDBを、pdb2
という名前のターゲットPDBにクローニングします。
各例で、新しいPDBが属するルートはCREATE
PLUGGABLE
DATABASE
文の実行時の現在のコンテナによって決まります。
-
現在のコンテナがCDBルートの場合、新しいPDBはCDBルートに作成されます。
-
現在のコンテナがアプリケーション・コンテナ内のアプリケーション・ルートの場合、新しいPDBはアプリケーション・ルート内にアプリケーションPDBとして作成されます。
例38-33 句を指定せずにローカルPDBをクローニングする方法
この例では、次の要因を想定しています。
-
PATH_PREFIX
句は必要ありません。 -
FILE_NAME_CONVERT
句およびCREATE_FILE_DEST
句は必要ありません。Oracle Managed Filesが有効であるか、または
PDB_FILE_NAME_CONVERT
初期化パラメータが設定されています。したがって、FILE_NAME_CONVERT
句は必要ありません。これらのファイルは、Oracle Managed Files構成または初期化パラメータ設定に基づいて新しい場所にコピーされます。 -
PDBにはストレージ制限は必要ありません。したがって、
STORAGE
句は必要ありません。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。
前述の要因に基づき、次の文によって、pdb1
PDBからpdb2
PDBがクローニングされます。
CREATE PLUGGABLE DATABASE pdb2 FROM pdb1;
関連項目:
-
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
例38-34 PATH_PREFIX句、FILE_NAME_CONVERT句およびSERVICE_NAME_CONVERT句を使用してローカルPDBをクローニングする方法
この例では、次の要因を想定しています。
-
パス接頭辞をPDBのディレクトリ・パスに追加する必要があります。したがって、
PATH_PREFIX
句が必要です。この例では、パス接頭辞/disk2/oracle/pdb2/をPDBのディレクトリ・オブジェクト・パスに追加しています。 -
コピーしたファイルのターゲットの場所を指定するには、
FILE_NAME_CONVERT
句が必要です。この例では、ファイルは/disk1/oracle/pdb1から/disk2/oracle/pdb2にコピーされます。CREATE_FILE_DEST
句は使用されず、Oracle Managed FilesもPDB_FILE_NAME_CONVERT
初期化パラメータも、コピーしたファイルのターゲットの場所の指定に使用されません。PDBのデータファイルの場所を表示するには、例45-7の問合せを実行します。
-
PDBにはストレージ制限は必要ありません。したがって、
STORAGE
句は必要ありません。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。 -
クローニングされるPDB (
pdb1
)には、カリフォルニア州の営業担当者およびオーダー入力担当者のための2つのユーザー定義のサービス(salesrep_ca
およびorders_ca
)があります。新しいサービスはオレゴン州の営業担当者およびオーダー入力担当者のためのものであり、クローニングされたPDB (pdb2
)でサービス名はsalesrep_or
およびorders_or
にそれぞれ名前変更されます。 -
PDB内で今後作成される表領域は、デフォルトで
NOLOGGING
属性を使用して作成されます。この機能は、Oracle Database 12cリリース1 (12.1.0.2)以降で使用可能です。
前述の要因に基づき、次の文によって、pdb1
PDBからpdb2
PDBがクローニングされます。
CREATE PLUGGABLE DATABASE pdb2 FROM pdb1 PATH_PREFIX = '/disk2/oracle/pdb2/' FILE_NAME_CONVERT = ('/disk1/oracle/pdb1/', '/disk2/oracle/pdb2/') SERVICE_NAME_CONVERT = ('salesrep_ca','salesrep_or','orders_ca','orders_or') NOLOGGING;
例38-35 FILE_NAME_CONVERT句、STORAGE句およびSERVICE_NAME_CONVERT句を使用してローカルPDBをクローニングする方法
この例では、次の要因を想定しています。
-
PATH_PREFIX
句は必要ありません。 -
コピーしたファイルのターゲットの場所を指定するには、
FILE_NAME_CONVERT
句が必要です。この例では、ファイルは/disk1/oracle/pdb1から/disk2/oracle/pdb2にコピーされます。CREATE_FILE_DEST
句は使用されず、Oracle Managed FilesもPDB_FILE_NAME_CONVERT
初期化パラメータも、コピーしたファイルのターゲットの場所の指定に使用されません。PDBのデータファイルの場所を表示するには、例45-7の問合せを実行します。
-
PDBにストレージ制限を強制する必要があります。したがって、
STORAGE
句が必要です。特に、PDBに属するすべての表領域が2GBを超えていない必要があります。 -
クローニングされるPDB (
pdb1
)には、カリフォルニア州の営業担当者およびオーダー入力担当者のための2つのユーザー定義のサービス(salesrep_ca
およびorders_ca
)があります。新しいサービスはオレゴン州の営業担当者およびオーダー入力担当者のためのものであり、クローニングされたPDB (pdb2
)でサービス名はsalesrep_or
およびorders_or
にそれぞれ名前変更されます。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。
前述の要因に基づき、次の文によって、pdb1
PDBからpdb2
PDBがクローニングされます。
CREATE PLUGGABLE DATABASE pdb2 FROM pdb1 FILE_NAME_CONVERT = ('/disk1/oracle/pdb1/', '/disk2/oracle/pdb2/') STORAGE (MAXSIZE 2G) SERVICE_NAME_CONVERT = ('salesrep_ca','salesrep_or','orders_ca','orders_or');
例38-36 データをクローニングしないローカルPDBのクローニング
この例では、次の要因を想定しています。
-
NO DATA
句は、目的がデータをクローニングせずにソースPDBのデータ・モデル定義をクローニングすることであるため必要です。 -
PATH_PREFIX
句は必要ありません。 -
FILE_NAME_CONVERT
句およびCREATE_FILE_DEST
句は必要ありません。Oracle Managed Filesが有効であるか、または
PDB_FILE_NAME_CONVERT
初期化パラメータが設定されています。したがって、FILE_NAME_CONVERT
句は必要ありません。これらのファイルは、Oracle Managed Files構成または初期化パラメータ設定に基づいて新しい場所にコピーされます。 -
PDBにはストレージ制限は必要ありません。したがって、
STORAGE
句は必要ありません。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。
ソースPDB pdb1
にデータが大量にあるとします。次のステップに、操作の完了時にソースPDBのデータがどのようにしてクローンに含まれないかを示します。
-
ソースPDB
pdb1
を現在のコンテナとして使用し、データが大量にある表を問い合せます。SELECT COUNT(*) FROM tpch.lineitem; COUNT(*) ---------- 6001215
表には、600万超の行があります。
-
NO DATA
句を指定して、ソースPDBをクローニングします。CREATE PLUGGABLE DATABASE pdb2 FROM pdb1 NO DATA;
-
クローニングしたPDBをオープンします。
ALTER PLUGGABLE DATABASE pdb2 OPEN;
-
クローニングしたPDB
pdb2
を現在のコンテナとして使用し、ソースPDB内のデータが大量にある表を問い合せます。SELECT COUNT(*) FROM tpch.lineitem; COUNT(*) ---------- 0
クローニングしたPDB内の表には行がありません。
38.4.3 リモートPDBまたは非CDBのクローニング
リモート・ソースのクローニングによってPDBを作成できます。リモート・ソースは、リモートPDBでも非CDBでもかまいません。クローニング操作の完了後、ソースとターゲットPDBは異なる場所にあります。
次の前提条件を満たしている必要があります。
-
「PDBの準備」で説明している前提条件を満たします。
-
現行ユーザーは、ターゲットPDBが含まれるCDBのルートで
CREATE PLUGGABLE DATABASE
システム権限を持っている必要があります。 -
ソースPDBはクローズできません。
-
PDBのクローニング時に、リモートCDBがローカルUNDOモードでない場合、ソースPDBは読取り専用オープン・モードである必要があります。この要件は、ソースPDBを含むリモートCDBがローカルUNDOモードの場合は適用されません。
「CDB UNDOモードについて」を参照してください。
-
リモートCDBまたは非CDBが
ARCHIVELOG
モードでない場合、ソースPDBまたは非CDBは読取り専用オープン・モードである必要があります。この要件は、ソースPDBを含むリモートCDBまたは非CDBがARCHIVELOG
モードの場合は適用されません。 -
次の前提条件がデータベース・リンクに適用されます。
-
データベース・リンクは、PDBがクローニングされるCDBからソースPDBのCDBへの接続を有効にする必要があります。データベース・リンクは、CDBのルート、アプリケーションPDB (ソースがアプリケーションPDBの場合)、またはPDBのいずれかに接続できます。
-
データベース・リンクが接続するユーザーには、
CREATE PLUGGABLE DATABASE
システム権限が必要です。 -
データベース・リンクがソースPDBのCDBのルートに接続する場合、データベース・リンクが接続するユーザーは、共通ユーザーである必要があります。
-
-
ソースとターゲットのプラットフォームは、次の要件を満たしている必要があります。
-
endiannessが同じである必要があります。
-
ソース・プラットフォームにインストールされているデータベース・オプションは、ターゲット・プラットフォームにインストールされているデータベース・オプションと同じか、サブセットである必要があります。
-
-
PDBがクローニングされるCDBのキャラクタ・セットがAL32UTF8でない場合、ソースとターゲットには互換性のあるキャラクタ・セットおよび各国語キャラクタ・セットが必要です。互換性のために、キャラクタ・セットおよび各国語キャラクタ・セットは、『Oracle Databaseグローバリゼーション・サポート・ガイド』で指定されている要件をすべて満たす必要があります。
PDBがクローニングされるCDBのキャラクタ・セットがAL32UTF8である場合、この要件は適用されません。
-
非CDBをクローニングしてPDBを作成する場合は、次の要件を満たす必要があります。
-
CDBと非CDBでOracle Database 12cリリース1 (12.1.0.2)以上が実行されている必要があります。
-
クローニングされたPDBのデータ・ブロック・サイズは、クローンPDBを配置するCDBと一致する必要があります。
-
-
アプリケーションPDBを作成している場合、ソースPDBのアプリケーション名およびバージョンは、ターゲット・アプリケーションPDBを含めるアプリケーション・コンテナのアプリケーション名およびバージョンと一致する必要があります。
-
アプリケーションPDBを作成している場合、アプリケーションPDBはアプリケーション・コンテナと同じキャラクタ・セットおよび各国語キャラクタ・セットである必要があります。
CDBのデータベース・キャラクタ・セットがAL32UTF8の場合、アプリケーション・コンテナのキャラクタ・セットおよび各国語キャラクタ・セットはCDBと異なっていても構いません。ただし、アプリケーション・コンテナ内のすべてのアプリケーションPDBには、アプリケーション・コンテナと同じキャラクタ・セットおよび各国語キャラクタ・セットが必要です。
-
リフレッシュ可能なPDBを作成している場合、ソースPDBは
ARCHIVELOG
モードおよびローカルUNDOモードである必要があります。
リモートPDBまたは非CDBをクローニングするには:
-
SQL*Plusで、現在のコンテナが新しいPDBを含めるCDBのルートまたは新しいPDBを含めるアプリケーション・コンテナのアプリケーション・ルートであることを確認します。
「現在のコンテナについて」および「SQL*Plusを使用したCDB内のコンテナへのアクセスについて」を参照してください。
-
CREATE
PLUGGABLE
DATABASE
文を実行し、ソースPDBまたはソース非CDBをFROM
句で指定します。他の句が必要な場合はそれらを指定します。「例38-37」を参照してください。
作成したPDBはマウント・モードになり、そのステータスは
NEW
です。PDBのオープン・モードは、V$PDBS
ビューのOPEN_MODE
列を問い合せることで確認できます。CDB_PDBS
またはDBA_PDBS
ビューのSTATUS
列を問い合せて、PDBのステータスを表示できます。PDBの新しいデフォルト・サービスが作成されます。サービスの名前はPDBと同じになり、このサービスを使用してPDBにアクセスできます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。「SQL*Plusを使用したCDB内のコンテナへのアクセスについて」を参照してください。
-
非CDBからPDBを作成した場合は、ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sqlスクリプトを実行します。このスクリプトは、PDBを初めてオープンする前に実行する必要があります。
PDBが非CDBでない場合は、noncdb_to_pdb.sqlスクリプトを実行する必要はありません。
noncdb_to_pdb.sqlスクリプトを実行するには、次のステップを実行します。
-
PDBにアクセスします。
現在のユーザーには
SYSDBA
管理権限が必要であり、その権限は共通で付与されているか、またはPDBでローカルに付与されている必要があります。ユーザーは、接続時にAS
SYSDBA
を使用して権限を行使する必要があります。「SQL*Plusを使用したCDB内のコンテナへのアクセスについて」を参照してください。
-
noncdb_to_pdb.sqlスクリプトを次のように実行します。
@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
スクリプトによって、PDBのオープン、変更の実行、および変更の完了時にPDBのクローズが行われます。
-
-
新しいPDBを読取り/書込みモードでオープンします。
Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。詳細は、「PDBのオープン・モードの変更」を参照してください。
-
PDBをバックアップします。
PDBは、バックアップしないとリカバリできません。
PDBのバックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
注意:
PDBの作成時にエラーが返された場合は、作成されたPDBがUNUSABLE
状態である可能性があります。CDB_PDBS
またはDBA_PDBS
ビューを問い合せてPDBの状態を確認したり、アラート・ログをチェックしてPDBの作成エラーの詳細を確認できます。使用不可のPDBは削除することのみができ、使用不可のPDBと同じ名前のPDBを作成できるようにするには、その前に削除する必要があります。
リモートPDBまたは非CDBのクローニングの例
次の例は、異なる係数でリモートPDBまたは非CDBをクローニングします。
各例で、新しいPDBが属するルートはCREATE
PLUGGABLE
DATABASE
文の実行時の現在のコンテナによって決まります。
-
現在のコンテナがCDBルートの場合、新しいPDBはCDBルートに作成されます。
-
現在のコンテナがアプリケーション・コンテナ内のアプリケーション・ルートの場合、新しいPDBはアプリケーション・ルート内にアプリケーションPDBとして作成されます。
例38-37 句を使用せずにリモートPDBからクローニングしてPDBを作成する方法
次の例では、様々な要因に基づき、pdb1
という名前のリモート・ソースPDBを、pdb2
という名前のターゲットPDBにクローニングします。この例では、次の要因を想定しています。
-
リモートPDBへのデータベース・リンク名は
pdb1_link
です。 -
PATH_PREFIX
句は必要ありません。 -
FILE_NAME_CONVERT
句およびCREATE_FILE_DEST
句は必要ありません。Oracle Managed Filesが有効であるか、または
PDB_FILE_NAME_CONVERT
初期化パラメータが設定されています。これらのファイルは、Oracle Managed Files構成または初期化パラメータ設定に基づいて新しい場所にコピーされます。 -
PDBにはストレージ制限は必要ありません。したがって、
STORAGE
句は必要ありません。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。
前述の要因に基づき、次の文によって、pdb1
リモートPDBからpdb2
PDBがクローニングされます。
CREATE PLUGGABLE DATABASE pdb2 FROM pdb1@pdb1_link;
例38-38 リモート非CDBのクローニングによるPDBの作成
次の例では、様々な要因に基づき、mydb
という名前のリモート・ソース非CDBを、pdb2
という名前のターゲットPDBにクローニングして新しいPDBを作成します。この例では、次の要因を想定しています。
-
リモート非CDBへのデータベース・リンク名は
mydb_link
です。 -
PATH_PREFIX
句は必要ありません。 -
FILE_NAME_CONVERT
句およびCREATE_FILE_DEST
句は必要ありません。Oracle Managed Filesが有効であるか、または
PDB_FILE_NAME_CONVERT
初期化パラメータが設定されています。これらのファイルは、Oracle Managed Files構成または初期化パラメータ設定に基づいて新しい場所にコピーされます。 -
PDBにはストレージ制限は必要ありません。したがって、
STORAGE
句は必要ありません。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。
前述の要因に基づき、次の文によって、mydb
という名前のリモート非CDBからpdb2
PDBが作成されます。
CREATE PLUGGABLE DATABASE pdb2 FROM mydb@mydb_link;
ソースが非CDBである場合、非CDBの名前のかわりにNON$CDB
を使用できます。たとえば、次の文は前の例と同じです。
CREATE PLUGGABLE DATABASE pdb2 FROM NON$CDB@mydb_link;
関連項目:
-
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
例38-39 リフレッシュ可能なクローンの作成
次の例では、様々な要因に基づき、pdb1
という名前のリモート・ソースPDBを、pdb2
という名前のターゲットPDBにクローニングします。クローンはソースPDBのリフレッシュ可能コピーであり、これはソースPDBに対して行われた変更で更新するようにリフレッシュできることを意味します。この例では、次の要因を想定しています。
-
リモートPDBへのデータベース・リンク名は
pdb1_link
です。 -
PATH_PREFIX
句は必要ありません。 -
FILE_NAME_CONVERT
句およびCREATE_FILE_DEST
句は必要ありません。Oracle Managed Filesが有効であるか、または
PDB_FILE_NAME_CONVERT
初期化パラメータが設定されています。これらのファイルは、Oracle Managed Files構成または初期化パラメータ設定に基づいて新しい場所にコピーされます。 -
PDBにはストレージ制限は必要ありません。したがって、
STORAGE
句は必要ありません。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。 -
リフレッシュ可能なクローンは、60分ごとに自動的にリフレッシュされます。
リフレッシュ可能なPDBを作成するには、ソースPDBがARCHIVELOG
モードおよびローカルUNDOモードである必要があります。
前述の要因に基づき、次の文によって、pdb1
リモートPDBからpdb2
PDBがクローニングされます。
CREATE PLUGGABLE DATABASE pdb2 FROM pdb1@pdb1_link REFRESH MODE EVERY 60 MINUTES;
38.4.4 PDBのクローニング後
PDBのクローニング後に、ユーザーと表領域に関する特定のルールが適用されます。
PDBのクローニング後、次の内容が適用されます。
-
ソース非CDBまたはPDBのデフォルト一時表領域を使用していたPDBのユーザーは、クローンPDBのデフォルト一時表領域を使用します。非CDBまたはPDB内のデフォルト以外の一時表領域を使用していたユーザーは、クローンPDB内の同じローカル一時表領域を引き続き使用します。「CDB内表領域の管理について」を参照してください。
-
リモートPDBのクローニング時、ソースCDBに存在するが、ターゲットCDBには存在しない、ユーザーが作成した共通ユーザーには、共通して付与された権限がありません。ただし、ターゲットCDBに共通ユーザーが存在し、PDBの共通ユーザーと同じ名前である場合、後者は前者にリンクされ、ターゲットCDBの共通ユーザーに付与された権限を持ちます。
クローニングされたPDBまたは接続したPDBに、ターゲットCDBに存在しない共通のユーザー・アカウントがある場合、およびこのユーザーがPDB内のオブジェクトを所有していない場合、同期ステップ中にこのユーザーはOracle Databaseによって削除されます。そうでない場合、ユーザー・アカウントはターゲットPDBでロックされます。ロックされたアカウントに関しては、次の選択肢があります。
-
PDBをクローズし、ルートに接続し、同じ名前の共通ユーザー・アカウントを作成します。PDBを読取り/書込みモードでオープンすると、ユーザー・アカウントに共通して付与されているロールや権限の相違点が解決され、アカウントをロック解除できます。ユーザー・アカウントに対してローカルに付与されている権限やロールは、このプロセス中も変更されません。
-
PDBに新しいローカル・ユーザー・アカウントを作成し、データ・ポンプを使用して、ロックされたユーザーのデータを新しいローカル・ユーザーのスキーマにエクスポート/インポートできます。
-
ユーザー・アカウントをロックされたままにします。
-
ユーザー・アカウントを削除します。
-
関連項目:
-
共通ユーザーおよびローカル・ユーザーの詳細は、『Oracle Database概要』を参照してください。
-
ローカル・ユーザーの作成の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
-
CDBでのOracle Data Pumpの使用の詳細は、『Oracle Databaseユーティリティ』を参照してください。
38.5 再配置によるPDB作成
PDBは、別のCDBにそれを再配置することによって作成できます。
- PDBの再配置について
CREATE
PLUGGABLE
DATABASE
文を使用して、あるCDBから別のCDBにPDBを再配置できます。 - PDBの再配置
PDBを再配置することで作成できます。操作の完了後、PDBは現在のCDBから削除され、別のCDBに追加されます。
親トピック: SQL*Plusを使用したPDBの作成および削除
38.5.1 PDBの再配置について
CREATE
PLUGGABLE
DATABASE
文を使用して、あるCDBから別のCDBにPDBを再配置できます。
この手法では、あるCDBから別のCDBにPDBを移動します。この手法を使用するには、CREATE
PLUGGABLE
DATABASE
文を実行し、FROM
句およびRELOCATE
句を含めます。
PDBの現在の場所を指定するFROM
句を含める必要があります。RELOCATE
句を含めて、PDBがクローニングではなく移動されることを指定する必要もあります。操作の完了後、PDBの再配置先のCDBにPDBが追加されます。CREATE
PLUGGABLE
DATABASE
文は、PDBに関連付けられているファイルも新しい場所に移動します。この手法を使用すると、最小限のダウン・タイムで最も迅速にPDBを再配置できます。
また、再配置されるPDBは読取り/書込みモードでオープンされ、再配置プロセス中も完全に機能します。この手法では、REDOデータを新しい場所のPDBに転送および適用している間、古い場所にあるPDBは自動的に静止します。最後に、PDBの準備ができると、この手法はそのPDBを新しい場所でオンラインにします。PDBの再配置時に、現在のDMLおよびDDL操作は、PDBの新しい場所にリダイレクトされている間、停止します。問合せは一時停止なしで実行を継続します。
データベース・リンクを使用してPDBを再配置する必要があります。データベース・リンクは、再配置されたPDBが含まれるCDBに作成する必要があります。再配置されたPDBを含めるCDBのルートからCREATE PLUGGABLE DATABASE
文を発行する場合は、再配置されたPDBを含むリモートCDBへのデータベース・リンクをFROM
句で指定する必要があります。データベース・リンクは、新規PDBを含めるCDBからリモートCDBのルートに接続する必要があります。
図38-8に、この手法がPDBをどのように再配置するかを示します。
PDBをアプリケーションPDBとしてアプリケーション・コンテナに再配置したり、アプリケーションPDBをあるアプリケーション・ルートから別のアプリケーション・ルートに再配置したりできます。空のアプリケーション・ルートをあるCDBから別のCDBに再配置することもできますが、そのアプリケーション・ルートにはホストされるアプリケーションPDBが存在しない必要があります。図38-9に、この手法で新しいアプリケーションPDBをアプリケーション・コンテナに作成する方法を示します。
PDBを再配置する場合は、表38-3のPDBの再配置に適用される質問に対処する必要があります。この表では、様々な要因に基づいて指定する必要があるCREATE PLUGGABLE DATABASE
の句について説明しています。
PDBを再配置する場合は、PDBへの接続に関して2つのオプション(AVAILABILITY MAX
およびAVAILABILITY NORMAL
)があります。オプションでAVAILABILITY MAX
句を使用して、PDBの古い場所から新しい場所に接続をリダイレクトできます。AVAILABILITY MAX
句を指定した場合は、再配置操作によって、新しい場所に接続が再配置されるようにリスナーが構成されます。
PDBの古い場所から新しい場所に接続をリダイレクトするための次のオプションがあります。
-
システムでOracle Internet Directory (OracleのLDAPディレクトリ・サービス)を使用している場合、接続情報は複数のクライアント構成ファイルではなく一元的な場所で更新できます。
-
PDBの古い場所と新しい場所で同じリスナーを使用する場合、再配置が完了すると新しい接続は自動的にPDBの新しい場所にルーティングされます。
-
PDBが異なるリスナーを使用し、
local_listener
およびremote_listener
パラメータの構成を通じてそれぞれのリスナーの相互登録を採用する場合、PDBのサービスの可用性と場所はリスナーに自動的に登録されるため、再配置はシームレスになります。
注意:
Oracle Clusterware環境で、異なるCDB (同じデータベースのCDBインスタンスではない)間でPDBを再配置する場合は、SRVCTLを使用してデフォルトではないサービス・リソースを再作成する必要があります。再配置操作のソースCDBおよびターゲットCDBが共通のリスナー・ネットワークを共有していない場合は、AVAILABILITY MAX
句を使用して、再配置されたPDBの接続を処理する新しいリスナーに接続を転送するように元のリスナーを自動的に構成します。この構成は、Oracle Internet Directory (OID)を更新する間、またはクライアント接続を変更する間に一時的に使用することが意図されています。OIDサーバーまたはクライアント接続が更新されるまで、墓石のPDBはソースCDBに残り、PDBのネームスペースを保護し、リスナー転送構成を維持します。それが完了したら、DROP PLUGGABLE DATABASE
文を使用してソースPDBを削除できます。
再配置操作のソースCDBとターゲットCDBが共通のリスナー・ネットワークを共有している場合、共通のリスナー・ネットワークによって暗黙的に処理されるため、クライアント接続の転送は必要ありません。この場合は、再配置操作にAVAILABILITY NORMAL
句を使用します。PDBがターゲットCDBに再配置されてオープンされると、ソースCDBのPDBが削除されます。
ローカル・リスナーがOracle RAC構成の単一クライアント・アクセス名(SCAN)リスナーにリダイレクトされる場合、このリスナーはクライアント接続リクエストを別のクラスタ・ノードにさらにリダイレクトすることが必要な場合があります。複数リダイレクトは、Oracle Netリスナーのデフォルトではサポートされません。SCANリスナーは任意のノードに接続リクエストをルーティングできるため、ALLOW_MULTIPLE_REDIRECTS_listener_name
パラメータをすべてのSCANリスナーのlistener_name
に設定して、それをクラスタ内のすべてのlistener.ora
ファイルで設定します。たとえば、SCANリスナーの名前がlistener_scan1
、listener_scan2
およびlistener_scan3
の場合は、すべての宛先ホストのlistener.ora
ファイルに次の設定が必要になります。
ALLOW_MULTIPLE_REDIRECTS_LISTENER_SCAN1=YES
ALLOW_MULTIPLE_REDIRECTS_LISTENER_SCAN2=YES
ALLOW_MULTIPLE_REDIRECTS_LISTENER_SCAN3=YES
注意:
ALLOW_MULTIPLE_REDIRECTS_listener_name
パラメータをノード・リスナーに設定すると、特定のネットワーク構成で無限のリダイレクト・ループが可能になるため、設定しないでください。
関連項目:
-
リスナーのリダイレクトの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください
親トピック: 再配置によるPDBの作成
38.5.2 PDBの再配置
PDBを再配置することで作成できます。操作の完了後、PDBは現在のCDBから削除され、別のCDBに追加されます。
次の前提条件を満たしている必要があります。
-
「PDBの準備」で説明している前提条件を満たします。
-
現行ユーザーは、PDBの再配置先となるCDBのルートで
CREATE
PLUGGABLE
DATABASE
システム権限を持っている必要があります。 -
再配置の前にPDBを含むCDBはローカルUNDOモードである必要があります。
「CDB UNDOモードについて」を参照してください。
-
PDBの再配置先のCDBが
ARCHIVELOG
モードでない場合、操作中にPDBが読取り専用オープン・モードである必要があります。この要件は、PDBの再配置先のCDBがARCHIVELOG
モードの場合は適用されません。 -
次の前提条件がデータベース・リンクに適用されます。
-
データベース・リンクは、PDBが再配置されるCDBからPDBの現在のCDBへの接続を有効にする必要があります。データベース・リンクは、CDBのルートに接続する必要があります。PDBがアプリケーションPDBである場合、データベース・リンクはそのアプリケーション・ルートに接続する必要があります。
-
データベース・リンクによってPDBの現在のCDBに接続されるユーザーには、
CREATE PLUGGABLE DATABASE
またはSYSOPER
管理権限が必要です。 -
データベース・リンクがPDBの現在のCDBのCDBルートに接続する場合、データベース・リンクが接続するユーザーは、共通ユーザーである必要があります。
-
-
PDBの現在のCDBおよび再配置先のCDBのプラットフォームは、これらの要件を満たす必要があります。
-
endiannessが同じである必要があります。
-
ソース・プラットフォームにインストールされているデータベース・オプションは、ターゲット・プラットフォームにインストールされているデータベース・オプションと同じか、サブセットである必要があります。
-
-
PDBの再配置先のCDBのキャラクタ・セットがAL32UTF8でない場合、PDBの現在のCDBおよび再配置先のCDBには互換性のあるキャラクタ・セットおよび各国語キャラクタ・セットが必要です。互換性のために、キャラクタ・セットおよび各国語キャラクタ・セットは、『Oracle Databaseグローバリゼーション・サポート・ガイド』で指定されている要件をすべて満たす必要があります。
PDBの再配置先のCDBのキャラクタ・セットがAL32UTF8である場合、この要件は適用されません。
-
アプリケーションPDBを作成している場合、再配置されるPDBのアプリケーション名およびバージョンは、再配置後のアプリケーションPDBを含むアプリケーション・コンテナのアプリケーション名およびバージョンと一致する必要があります。
PDBを再配置するには:
-
SQL*Plusで、現在のコンテナが新しいPDBを含めるCDBのルートまたは新しいPDBを含めるアプリケーション・コンテナのアプリケーション・ルートであることを確認します。
「現在のコンテナについて」および「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
CREATE
PLUGGABLE
DATABASE
文を実行します。FROM
句でPDBを指定し、RELOCATE
句を含めます。AVAILABILITY MAX
句を指定して、PDBの古い場所から新しい場所に接続をリダイレクトします。他の句が必要な場合はそれらを指定します。再配置したPDBはマウント・モードになり、そのステータスは
RELOCATING
です。PDBのオープン・モードは、V$PDBS
ビューのOPEN_MODE
列を問い合せることで確認できます。CDB_PDBS
またはDBA_PDBS
ビューのSTATUS
列を問い合せて、PDBのステータスを表示できます。PDBの新しいデフォルト・サービスが作成されます。サービスの名前はPDBと同じになり、このサービスを使用してPDBにアクセスできます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。 「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
新しいPDBを読取り/書込みモードでオープンします。
Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。詳細は、「PDBのオープン・モードの変更」を参照してください。
-
PDBをバックアップします。
PDBは、バックアップしないとリカバリできません。
PDBのバックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
注意:
PDBの再配置時にエラーが返された場合は、作成されたPDBがUNUSABLE
状態である可能性があります。CDB_PDBS
またはDBA_PDBS
ビューを問い合せてPDBの状態を確認したり、アラート・ログをチェックしてPDBの作成エラーの詳細を確認できます。使用不可のPDBは削除することのみができ、使用不可のPDBと同じ名前のPDBを作成できるようにするには、その前に削除する必要があります。
例38-40 リモートCDBからのPDBの再配置
この例で、新しいPDBが属するルートはCREATE
PLUGGABLE
DATABASE
文の実行時の現在のコンテナによって決まります。
-
現在のコンテナがCDBルートの場合、新しいPDBはCDBルートに作成されます。
-
現在のコンテナがアプリケーション・コンテナ内のアプリケーション・ルートの場合、新しいPDBはアプリケーション・ルート内にアプリケーションPDBとして作成されます。
この例では、様々な要因に基づき、pdb1
という名前のPDBをリモートCDBから再配置します。この例では、次の要因を想定しています。
-
現行ユーザーは、PDBの再配置先となるCDBのルートで
CREATE
PLUGGABLE
DATABASE
システム権限を持っています。 -
PDBの現在のCDBへのデータベース・リンク名は
mycdb
です。このデータベース・リンクは、次のSQL文を使用て作成されました。CREATE PUBLIC DATABASE LINK mycdb CONNECT TO c##myadmin IDENTIFIED BY password USING 'MYCDB';
共通ユーザー
c##myadmin
は、現在PDBを含んでいるCDB内のSYSOPER
管理権限とCREATE PLUGGABLE DATABASE
システム権限を持っています。 -
PATH_PREFIX
句は必要ありません。 -
FILE_NAME_CONVERT
句およびCREATE_FILE_DEST
句は必要ありません。Oracle Managed Filesが有効であるか、または
PDB_FILE_NAME_CONVERT
初期化パラメータが設定されています。これらのファイルは、Oracle Managed Files構成または初期化パラメータ設定に基づいて新しい場所に移動されます。 -
PDBにはストレージ制限は必要ありません。したがって、
STORAGE
句は必要ありません。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。 -
ソースPDBから再配置されたPDBに接続を自動的に再配置する必要があります。したがって、
AVAILABILITY MAX
句が含まれます。
前述の要因に基づき、次の文はpdb1
PDBをリモートCDBから現在のCDBに再配置します。
CREATE PLUGGABLE DATABASE pdb1 FROM pdb1@mycdb RELOCATE AVAILABILITY MAX;
親トピック: 再配置によるPDBの作成
38.6 CDBへの切断されたPDBの接続によるPDBの作成
切断されたPDBをCDBに接続することで、PDBを作成できます。
- 切断されたPDBの接続について
この手法では、切断されたPDBを接続します。この手法では、PDBを記述しているXMLメタデータ・ファイル、およびPDBに関連付けられたファイルを使用して、CDBに接続します。これらのファイルは、別々であってもよく、または単一の圧縮.pdbアーカイブ・ファイルに含めることもできます。 - 切断されたPDBの接続
切断されたPDBを接続する前に、前提条件を満たす必要があります。 - 切断されたPDBの接続後
切断されたPDBの接続後に、ユーザーと表領域に関する特定のルールが適用されます。
親トピック: SQL*Plusを使用したPDBの作成および削除
38.6.1 切断されたPDBの接続について
この手法では、切断されたPDBを接続します。この手法では、PDBを記述しているXMLメタデータ・ファイル、およびPDBに関連付けられたファイルを使用して、CDBに接続します。これらのファイルは、別々であってもよく、または単一の圧縮.pdbアーカイブ・ファイルに含めることもできます。
XMLメタデータ・ファイルを指定するか、.pdb拡張子のある圧縮されたアーカイブ・ファイルを指定して、PDBを接続できます。アーカイブ・ファイルにはXMLメタデータ・ファイルとPDBのファイル(データファイルやウォレット・ファイルなど)が含まれます。CREATE
PLUGGABLE
DATABASE
文のUSING
句では、XMLメタデータ・ファイルまたは.pdbアーカイブ・ファイルを指定します。.pdbアーカイブ・ファイルが使用されておらず、USING
句でXMLメタデータ・ファイルが指定されている場合、XMLメタデータ・ファイルにはPDBのファイルの場所へのフルパスが含まれます。USING
句で.pdbアーカイブ・ファイルが指定され、XMLファイルが.pdbアーカイブ・ファイルに含まれる場合、XMLメタデータ・ファイルにはファイル名のみ含まれます。
図38-10は、この手法で新しいPDBがどのように作成されるかを示しています。
図38-11に、この手法で新しいアプリケーションPDBをアプリケーション・コンテナに作成する方法を示します。
切断されたPDBは、そのPDBについて記述したXMLファイルおよびPDBのファイル(データファイルやウォレット・ファイルなど)で構成されています。CREATE
PLUGGABLE
DATABASE
文を使用して、切断されたPDBを接続できます。そのためには、PDBを記述しているXMLファイルまたは.pdbアーカイブ・ファイルを指定するUSING
句を含める必要があります。
ソースCDBは、PDBが切断されたCDBです。ターゲットCDBは、PDBを接続するCDBです。ソースCDBとターゲットCDBは、同じCDBにすることも異なるCDBにすることもできます。
注意:
PDBの自動ダウングレードはサポートされていません。したがって、ソースCDBがターゲットCDBより上位のOracle Databaseリリースである場合は、PDBを接続できません。切断されたPDBに接続する場合は、表38-3の切断されたPDBの接続に適用される質問に対処する必要があります。この表では、様々な要因に基づいて指定する必要があるCREATE
PLUGGABLE
DATABASE
の句について説明しています。
関連項目:
親トピック: CDBへの切断されたPDBの接続によるPDBの作成
38.6.2 切断されたPDBの接続
切断されたPDBを接続する前に、前提条件を満たす必要があります。
切断されたPDBを接続するには、次の要件が満たされている必要があります。
-
「PDBの準備」で説明している前提条件を満たします。
-
PDBを記述しているXMLファイルまたは.pdbアーカイブ・ファイルは、CDBにアクセスできる場所に存在する必要があります。
USING
句でXMLファイルまたは.pdbアーカイブ・ファイルを指定する必要があります。PDBのXMLファイルが使用できないか見つからない場合は、
DBMS_PDB.RECOVER
プロシージャを使用して、PDBのデータファイルでXMLファイルを生成できます。このプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。 -
USING
句にXMLファイル(.pdbファイルではなく)を指定する場合、PDBに関連付けられたファイル(データファイルやウォレット・ファイルなど)は、CDBにアクセスできる場所に存在している必要があります。 -
ソースCDBとターゲットCDBのプラットフォームは、次の要件を満たしている必要があります。
-
endiannessが同じである必要があります。
-
ソース・プラットフォームにインストールされているデータベース・オプションは、ターゲット・プラットフォームにインストールされているデータベース・オプションと同じか、サブセットである必要があります。
-
-
PDBが接続されるCDBのキャラクタ・セットがAL32UTF8でない場合、切断されたPDBを含んでいたCDBとターゲットCDBには互換性のあるキャラクタ・セットおよび各国語キャラクタ・セットが必要です。互換性のために、キャラクタ・セットおよび各国語キャラクタ・セットは、『Oracle Databaseグローバリゼーション・サポート・ガイド』で指定されている要件をすべて満たす必要があります。
PDBが接続されるCDBのキャラクタ・セットがAL32UTF8である場合、この要件は適用されません。
-
アプリケーションPDBを作成している場合、切断されたPDBのアプリケーション名およびバージョンは、アプリケーションPDBを接続するアプリケーション・コンテナのアプリケーション名およびバージョンと一致する必要があります。
-
アプリケーションPDBを作成している場合、アプリケーションPDBはアプリケーション・コンテナと同じキャラクタ・セットおよび各国語キャラクタ・セットである必要があります。
CDBのデータベース・キャラクタ・セットがAL32UTF8の場合、アプリケーション・コンテナのキャラクタ・セットおよび各国語キャラクタ・セットはCDBと異なっていても構いません。ただし、アプリケーション・コンテナ内のすべてのアプリケーションPDBには、アプリケーション・コンテナと同じキャラクタ・セットおよび各国語キャラクタ・セットが必要です。
これらの要件が満たされているかどうかを判断するために、DBMS_PDB.CHECK_PLUG_COMPATIBILITY
ファンクションを使用できます。次の手順のステップ2では、このファンクションの使用方法を示しています。
PDBをプラグインするには:
-
SQL*Plusで、現在のコンテナがPDBをプラグインするCDBのルートまたはアプリケーション・ルートであることを確認します。
現在のコンテナがCDBルートの場合、PDBはCDBに作成されます。現在のコンテナがアプリケーション・ルートの場合、アプリケーションPDBはアプリケーション・コンテナ内に作成されます。
「現在のコンテナについて」および「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
(オプション)
DBMS_PDB.CHECK_PLUG_COMPATIBILITY
ファンクションを実行して、切断されたPDBがCDBと互換性があるかどうかを確認します。-
PDBがまだ切断されていない場合は、
DBMS_PDB.DESCRIBE
プロシージャを実行して、そのPDBを記述するXMLファイルを作成します。PDBがすでに切断されている場合は、ステップ2.bに進みます。
たとえば、
salespdb.xml
という名前のXMLファイルを/disk1/oracleディレクトリに生成し、次のプロシージャを実行します。BEGIN DBMS_PDB.DESCRIBE( pdb_descr_file => '/disk1/oracle/salespdb.xml', pdb_name => 'SALESPDB'); END; /
PDBがリモートCDBに存在している場合は、
pdb_name
パラメータに@
database_link_name
を含めることができます。database_link_name
は、リモートCDBまたはPDBへの有効なデータベース・リンクの名前です。たとえば、リモートCDBへのデータベース・リンクの名前がrcdb
の場合、pdb_name
値にSALESPDB@rcdb
と設定します。 -
DBMS_PDB.CHECK_PLUG_COMPATIBILITY
ファンクションを実行します。このファンクションを実行する場合は、次のパラメータを設定します。
-
pdb_descr_file
: このパラメータをXMLファイルへのフルパスに設定します。-
pdb_name
: 新しいPDBの名前を指定します。このパラメータを省略した場合は、XMLファイル内のPDB名が使用されます。たとえば、/disk1/usr/salespdb.xmlファイルで記述されているPDBが現在のCDBと互換性があるかどうかを確認するには、次のPL/SQLブロックを実行します。
SET SERVEROUTPUT ON DECLARE compatible CONSTANT VARCHAR2(3) := CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file => '/disk1/usr/salespdb.xml', pdb_name => 'SALESPDB') WHEN TRUE THEN 'YES' ELSE 'NO' END; BEGIN DBMS_OUTPUT.PUT_LINE(compatible); END; /
出力が
YES
の場合はPDBに互換性があり、次のステップに進むことができます。出力が
NO
の場合はPDBに互換性がなく、PDB_PLUG_IN_VIOLATIONS
ビューをチェックして、互換性がない理由を確認できます。
注意:
.pdbアーカイブ・ファイルはpdb_descr_file
パラメータで指定できます。 -
-
PDBが切断されていない場合は、切断します。
「CDBからのPDBの切断」を参照してください。
-
CREATE
PLUGGABLE
DATABASE
文を実行し、USING
句でXMLファイルまたは.pdbアーカイブ・ファイルを指定します。他の句が必要な場合はそれらを指定します。「切断されたPDBの接続の例」を参照してください。
作成したPDBはマウント・モードになり、そのステータスは
NEW
です。PDBのオープン・モードは、V$PDBS
ビューのOPEN_MODE
列を問い合せることで確認できます。CDB_PDBS
またはDBA_PDBS
ビューのSTATUS
列を問い合せて、PDBのステータスを表示できます。PDBの新しいデフォルト・サービスが作成されます。サービスの名前はPDBと同じになり、このサービスを使用してPDBにアクセスできます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。 「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
新しいPDBを読取り/書込みモードでオープンします。
Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。詳細は、「PDBのオープン・モードの変更」を参照してください。
-
PDBをバックアップします。
PDBは、バックアップしないとリカバリできません。
PDBのバックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
注意:
PDBの作成時にエラーが返された場合は、作成されたPDBがUNUSABLE
状態である可能性があります。CDB_PDBS
またはDBA_PDBS
ビューを問い合せてPDBの状態を確認したり、アラート・ログをチェックしてPDBの作成エラーの詳細を確認できます。使用不可のPDBは削除することのみができ、使用不可のPDBと同じ名前のPDBを作成できるようにするには、その前に削除する必要があります。
切断されたPDBの接続の例
次の例では、様々な要因に基づき、/disk1/usr/salespdb.xmlファイルまたは/disk1/usr/sales.pdbファイルを使用して、salespdb
という名前の切断されたPDBを接続します。
各例で、新しいPDBが属するルートはCREATE
PLUGGABLE
DATABASE
文の実行時の現在のコンテナによって決まります。
-
現在のコンテナがCDBルートの場合、新しいPDBはCDBに作成されます。
-
現在のコンテナがアプリケーション・ルートの場合、新しいアプリケーションPDBはアプリケーション・ルートのアプリケーション・コンテナ内に作成されます。
例38-41 NOCOPY句を使用して切断されたPDBを接続する方法
この例では、次の要因を想定しています。
-
新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、
AS
CLONE
句は必要ありません。 -
PATH_PREFIX
句は必要ありません。 -
XMLファイルにファイルの現在の場所が正確に記述されています。したがって、
SOURCE_FILE_NAME_CONVERT
またはSOURCE_FILE_DIRECTORY
句は不要です。 -
ファイルは、正しい場所に存在します。したがって、
NOCOPY
が含まれています。 -
PDBにはストレージ制限は必要ありません。したがって、
STORAGE
句は必要ありません。 -
ターゲットの場所に、XMLファイルで指定されている一時ファイルと同じ名前のファイルがあります。したがって、
TEMPFILE REUSE
句が必要です。
前述の要因に基づき、次の文によってPDBを接続します。
CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml' NOCOPY TEMPFILE REUSE;
例38-42 AS CLONE句およびNOCOPY句を使用して切断されたPDBを接続する方法
この例では、次の要因を想定しています。
-
新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBに基づいています。したがって、
AS
CLONE
句が必要です。AS
CLONE
句は、新しいPDBに一意の識別子があることを保証します。 -
PATH_PREFIX
句は必要ありません。 -
XMLファイルにファイルの現在の場所が正確に記述されています。したがって、
SOURCE_FILE_NAME_CONVERT
またはSOURCE_FILE_DIRECTORY
句は不要です。 -
ファイルは、正しい場所に存在します。したがって、
NOCOPY
が含まれています。 -
PDBにはストレージ制限は必要ありません。したがって、
STORAGE
句は必要ありません。 -
ターゲットの場所に、XMLファイルで指定されている一時ファイルと同じ名前のファイルがあります。したがって、
TEMPFILE REUSE
句が必要です。
前述の要因に基づき、次の文によってPDBを接続します。
CREATE PLUGGABLE DATABASE salespdb AS CLONE USING '/disk1/usr/salespdb.xml' NOCOPY TEMPFILE REUSE;
例38-43 SOURCE_FILE_NAME_CONVERT、NOCOPYおよびSTORAGEの各句を使用して切断されたPDBを接続する方法
この例では、次の要因を想定しています。
-
新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、
AS
CLONE
句は必要ありません。 -
PATH_PREFIX
句は必要ありません。 -
XMLファイルでは、ファイルの現在の場所が正確に記述されていません。したがって、
SOURCE_FILE_NAME_CONVERT
句またはSOURCE_FILE_DIRECTORY
句が必要です。この例では、ファイルが/disk1/oracle/salesに存在することがXMLファイルで示されていますが、ファイルは/disk2/oracle/salesにあり、SOURCE_FILE_NAME_CONVERT
句が使用されています。 -
ファイルは、正しい場所に存在します。したがって、
NOCOPY
が含まれています。 -
PDBにストレージ制限を強制する必要があります。したがって、
STORAGE
句が必要です。特に、PDBに属するすべての表領域が2GBを超えていない必要があります。 -
ターゲットの場所に、XMLファイルで指定されている一時ファイルと同じ名前のファイルがあります。したがって、
TEMPFILE REUSE
句が必要です。
前述の要因に基づき、次の文によってPDBを接続します。
CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml' SOURCE_FILE_NAME_CONVERT = ('/disk1/oracle/sales/', '/disk2/oracle/sales/') NOCOPY STORAGE (MAXSIZE 2G) TEMPFILE REUSE;
例38-44 COPY、PATH_PREFIXおよびFILE_NAME_CONVERTの各句を使用して切断されたPDBを接続する方法
この例では、次の要因を想定しています。
-
新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、
AS
CLONE
句は必要ありません。 -
パス接頭辞をPDBのディレクトリ・パスに追加する必要があります。したがって、
PATH_PREFIX
句が必要です。この例では、パス接頭辞/disk2/oracle/sales/をPDBのディレクトリ・オブジェクト・パスに追加しています。 -
XMLファイルにファイルの現在の場所が正確に記述されています。したがって、
SOURCE_FILE_NAME_CONVERT
またはSOURCE_FILE_DIRECTORY
句は不要です。 -
ファイルは、正しい場所に存在しません。したがって、
COPY
またはMOVE
が含まれている必要があります。この例では、ファイルはコピーされます。CREATE_FILE_DEST
句が使用されておらず、Oracle Managed Filesが有効になっておらず、PDB_FILE_NAME_CONVERT
初期化パラメータが設定されていません。したがって、FILE_NAME_CONVERT
句が必要です。この例では、ファイルは/disk1/oracle/salesから/disk2/oracle/salesにコピーされます。 -
PDBにはストレージ制限は必要ありません。したがって、
STORAGE
句は必要ありません。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。
前述の要因に基づき、次の文によってPDBを接続します。
CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml' COPY PATH_PREFIX = '/disk2/oracle/sales/' FILE_NAME_CONVERT = ('/disk1/oracle/sales/', '/disk2/oracle/sales/');
例38-45 SOURCE_FILE_NAME_CONVERT、MOVE、FILE_NAME_CONVERTおよびSTORAGEの各句を使用して切断されたPDBを接続する方法
この例では、次の要因を想定しています。
-
新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、
AS
CLONE
句は必要ありません。 -
PATH_PREFIX
句は必要ありません。 -
XMLファイルでは、ファイルの現在の場所が正確に記述されていません。したがって、
SOURCE_FILE_NAME_CONVERT
句またはSOURCE_FILE_DIRECTORY
句が必要です。この例では、ファイルが/disk1/oracle/salesに存在することがXMLファイルで示されていますが、ファイルは/disk2/oracle/salesにあり、SOURCE_FILE_NAME_CONVERT
句が使用されています。 -
ファイルは、PDBの正しい最終的な場所に存在しません。したがって、
COPY
またはMOVE
が含まれている必要があります。この例では、MOVE
を指定してファイルを移動します。CREATE_FILE_DEST
句が使用されておらず、Oracle Managed Filesが有効になっておらず、PDB_FILE_NAME_CONVERT
初期化パラメータが設定されていません。したがって、FILE_NAME_CONVERT
句が必要です。この例では、ファイルは/disk2/oracle/salesから/disk3/oracle/salesにコピーされます。 -
PDBにストレージ制限を強制する必要があります。したがって、
STORAGE
句が必要です。特に、PDBに属するすべての表領域が2GBを超えていない必要があります。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。
前述の要因に基づき、次の文によってPDBを接続します。
CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml' SOURCE_FILE_NAME_CONVERT = ('/disk1/oracle/sales/', '/disk2/oracle/sales/') MOVE FILE_NAME_CONVERT = ('/disk2/oracle/sales/', '/disk3/oracle/sales/') STORAGE (MAXSIZE 2G);
例38-46 SOURCE_FILE_DIRECTORY、MOVE、FILE_NAME_CONVERTおよびSTORAGEの各句を使用して切断されたPDBを接続する方法
この例では、次の要因を想定しています。
-
新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、
AS
CLONE
句は必要ありません。 -
PATH_PREFIX
句は必要ありません。 -
XMLファイルでは、ファイルの現在の場所が正確に記述されていません。したがって、
SOURCE_FILE_NAME_CONVERT
句またはSOURCE_FILE_DIRECTORY
句が必要です。この例では、ファイルが/disk1/oracle/salesに存在することがXMLファイルで示されていますが、ファイルは/disk2/oracle/salesにあり、SOURCE_FILE_DIRECTORY
句が使用されています。 -
ファイルは、PDBの正しい最終的な場所に存在しません。したがって、
COPY
またはMOVE
が含まれている必要があります。この例では、MOVE
を指定してファイルを移動します。CREATE_FILE_DEST
句が使用されておらず、Oracle Managed Filesが有効になっておらず、PDB_FILE_NAME_CONVERT
初期化パラメータが設定されていません。したがって、FILE_NAME_CONVERT
句が必要です。この例では、ファイルは/disk2/oracle/salesから/disk3/oracle/salesにコピーされます。 -
PDBにストレージ制限を強制する必要があります。したがって、
STORAGE
句が必要です。特に、PDBに属するすべての表領域が2GBを超えていない必要があります。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。
前述の要因に基づき、次の文によってPDBを接続します。
CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml' SOURCE_FILE_DIRECTORY = '/disk2/oracle/sales/' MOVE FILE_NAME_CONVERT = ('/disk2/oracle/sales/', '/disk3/oracle/sales/') STORAGE (MAXSIZE 2G);
例38-47 アーカイブ・ファイルを使用して切断されたPDBを接続する方法
この例では、次の要因を想定しています。
-
切断されたPDBはsales.pdbという名前の.pdbアーカイブ・ファイルです。アーカイブ・ファイルには、XMLメタデータ・ファイルおよびPDBのファイル(データファイルやウォレット・ファイルなど)が圧縮形式で含まれ、これらのファイルは
CREATE PLUGGABLE DATABASE
文の実行時に.pdbアーカイブ・ファイルの現在のディレクトリに抽出されます。 -
新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、
AS
CLONE
句は必要ありません。 -
PATH_PREFIX
句は必要ありません。 -
PDBにストレージ制限を強制する必要があります。したがって、
STORAGE
句が必要です。特に、PDBに属するすべての表領域が2GBを超えていない必要があります。 -
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、
TEMPFILE REUSE
句は必要ありません。
前述の要因に基づき、次の文によってアーカイブ・ファイルを使用してPDBを接続します。
CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/sales.pdb' STORAGE (MAXSIZE 2G);
関連項目:
-
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
親トピック: CDBへの切断されたPDBの接続によるPDBの作成
38.6.3 切断されたPDBの接続後
切断されたPDBの接続後に、ユーザーと表領域に関する特定のルールが適用されます。
切断されたPDBの接続後、次の内容が適用されます。
-
ソースPDBのデフォルト一時表領域を使用していたPDBのユーザーは、ターゲットPDBのデフォルト一時表領域を使用します。ソースPDB内のデフォルト以外の一時表領域を使用していたユーザーは、ターゲットPDB内の同じローカル一時表領域を引き続き使用します。「CDB内表領域の管理について」を参照してください。
-
ソースCDBに存在するが、ターゲットには存在しない、ユーザーが作成した共通ユーザーには、権限は共通して付与されていません。ただし、ターゲットCDBに共通ユーザーが存在し、PDBの共通ユーザーと同じ名前である場合、後者は前者にリンクされ、ターゲットCDBの共通ユーザーに付与された権限を持ちます。
クローニングされたPDBまたは接続したPDBに、ターゲットCDBに存在しない共通のユーザー・アカウントがある場合、およびこのユーザーがPDB内のオブジェクトを所有していない場合、同期ステップ中にこのユーザーはOracle Databaseによって削除されます。そうでない場合、ユーザー・アカウントはターゲットPDBでロックされます。ロックされたアカウントに関しては、次の選択肢があります。
-
PDBをクローズし、ルートに接続し、同じ名前の共通ユーザー・アカウントを作成します。PDBを読取り/書込みモードでオープンすると、ユーザー・アカウントに共通して付与されているロールや権限の相違点が解決され、アカウントをロック解除できます。ユーザー・アカウントに対してローカルに付与されている権限やロールは、このプロセス中も変更されません。
-
PDBに新しいローカル・ユーザー・アカウントを作成し、データ・ポンプを使用して、ロックされたユーザーのデータを新しいローカル・ユーザーのスキーマにエクスポート/インポートできます。
-
ユーザー・アカウントをロックされたままにします。
-
ユーザー・アカウントを削除します。
-
関連項目:
-
共通ユーザーおよびローカル・ユーザーの詳細は、『Oracle Database概要』を参照してください。
-
CDBにおける共通ユーザーおよびローカル・ユーザーの作成方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
-
CDBでのOracle Data Pumpの使用の詳細は、『Oracle Databaseユーティリティ』を参照してください。
親トピック: CDBへの切断されたPDBの接続によるPDBの作成
38.7 プロキシPDBとしてのPDBの作成
リモートCDBのPDBを参照することで、PDBをプロキシPDBとして作成できます。
- プロキシPDBの作成について
プロキシPDBはリモートCDB内の別のPDBへのアクセスを提供します。CREATE
PLUGGABLE
DATABASE
文を使用して、別のPDBを参照することでプロキシPDBを作成できます。 - プロキシPDBの作成
別のCDBのPDBを参照することで、プロキシPDBを作成できます。
親トピック: SQL*Plusを使用したPDBの作成および削除
38.7.1 プロキシPDBの作成について
プロキシPDBはリモートCDB内の別のPDBへのアクセスを提供します。CREATE
PLUGGABLE
DATABASE
文を使用して、別のPDBを参照することでプロキシPDBを作成できます。
この手法では、参照先PDBと呼ばれる別のCDBのPDBを参照することでプロキシPDBを作成します。リモートPDBのローカル・コンテンツが必要な場合は、プロキシPDBを使用できます。また、異なるCDB内のアプリケーション・コンテナが同じアプリケーションを持つ場合、それらのアプリケーション・ルートはプロキシPDBを使用して同期を維持できます。
この手法を使用するには、プロキシPDBを含めるCDBでCREATE
PLUGGABLE
DATABASE
文を実行します。AS PROXY
句を含めて、プロキシPDBを作成していることを指定する必要があります。プロキシPDBが参照しているPDBを指定するFROM
句を含める必要もあります。
CREATE
PLUGGABLE
DATABASE
文のFROM
句で、参照先PDBの現在の場所へのデータベース・リンクを指定する必要があります。データベース・リンクはプロキシPDBを含むCDBのルートに作成する必要があり、データベース・リンクはリモートCDBのルートまたはリモート参照先PDBに接続します。
図38-12は、この手法でリモートCDB内のPDBを参照するプロキシPDBがどのように作成されるかを示しています。
アプリケーション・コンテナにプロキシPDBを作成できます。そのためには、参照先PDBがアプリケーション・ルートまたは別のCDBのアプリケーション・コンテナ内のアプリケーションPDBである必要があります。データベース・リンクはプロキシPDBを含むアプリケーション・コンテナのルートに作成する必要があり、データベース・リンクはリモート・アプリケーション・コンテナのルートまたはリモート参照先アプリケーションPDBに接続します。
図38-13に、この手法でアプリケーション・コンテナ内のリモート参照先PDBに基づいてプロキシPDBをアプリケーション・コンテナに作成する方法を示します。
プロキシPDBを作成する場合は、表38-3のプロキシPDBの作成に適用される質問に対処する必要があります。この表では、様々な要因に基づいて指定する必要があるCREATE
PLUGGABLE
DATABASE
の句について説明しています。
SQL文とプロキシPDB
ALTER PLUGGABLE DATABASE
およびALTER DATABASE
文を除外すると、プロキシPDBが現在のコンテナである場合、プロキシPDBの実行のために送信されるすべてのSQL文は参照先PDBに送信され、参照先PDBで実行されます。リモート実行の結果はプロキシPDBに返されます。たとえば、データ定義言語(DDL)文、データ操作言語(DML)文およびプロキシPDBで実行される問合せは、実行のために参照先PDBに送信され、結果はプロキシPDBに返されます。
プロキシPDBが現在のコンテナであり、ALTER PLUGGABLE DATABASE
およびALTER DATABASE
文が実行される場合、これらの文はプロキシPDBにのみ影響します。これらは実行のために参照先PDBに送信されません。同様に、現在のコンテナが、プロキシPDBが属するルートである場合、ALTER PLUGGABLE DATABASE
文はプロキシPDBにのみ影響します。たとえば、CDBルート、アプリケーション・ルートまたはプロキシPDBで実行されたALTER PLUGGABLE DATABASE
文は、プロキシPDBをオープンまたはクローズできますが、この文は参照先PDBをオープンまたはクローズしません。
プロキシPDBおよびデータベース・リンク
前に説明したように、データベース・リンクはプロキシPDBの作成時に常に必要です。ただし、プロキシPDBの作成後、作成時に指定したデータベース・リンクはプロキシPDBで使用されなくなります。かわりに、プロキシPDBは参照先PDBと直接通信します。
この直接通信は、参照先PDBを含むCDBのリスナーのポート番号とホスト名を必要とします。プロキシPDBの作成時に、プロキシPDBはデフォルトで次の値を使用します。
-
リスナー・ポート番号: 1521
参照先PDBのリスナーがデフォルト・ポート番号を使用しない場合は、
PORT
句を使用して、リスナーのポート番号を指定する必要があります。プロキシPDBの作成時にポート番号を指定するか、プロキシPDBを変更してポート番号を変更できます。 -
リスナー・ホスト名: 参照先PDBを含むCDBのホスト名
参照先PDBのリスナーがデフォルト・ホスト名を使用しない場合は、
HOST
句を使用して、リスナーのホスト名を指定する必要があります。プロキシPDBの作成時にホスト名を指定するか、プロキシPDBを変更してホスト名を変更できます。
プロキシPDBおよび認証
プロキシPDBのセッションでは、パスワード認証のみがサポートされます。
親トピック: プロキシPDBとしてのPDBの作成
38.7.2 プロキシPDBの作成
別のCDBのPDBを参照することで、プロキシPDBを作成できます。
次の前提条件を満たしている必要があります。
-
「PDBの準備」で説明している前提条件を満たします。
-
現行ユーザーは、プロキシPDBが作成されているCDBのルートで
CREATE
PLUGGABLE
DATABASE
システム権限を持っている必要があります。 -
参照先PDBを含むCDBはローカルUNDOモードである必要があります。
「CDB UNDOモードについて」を参照してください。
-
参照先PDBを含むCDBは
ARCHIVELOG
モードである必要があります。 -
プロキシPDBの作成時には、参照先PDBが読取り/書込みオープン・モードである必要があります。参照先PDBのオープン・モードは、プロキシPDBの作成後に変更できます。
-
データベース・リンクは、プロキシPDBが作成されているCDBのルートから参照先PDBの場所への接続を有効にする必要があります。データベース・リンクは、リモートCDBのルート、またはリモートPDBのいずれかに接続できます。
-
データベース・リンクが、参照先PDBを含むリモートCDBのルートに接続する場合、データベース・リンクが接続するユーザーは、共通ユーザーである必要があります。
-
データベース・リンクが参照先PDBに接続する場合、データベース・リンクが参照先PDBで接続するユーザーは、
CREATE
PLUGGABLE
DATABASE
システム権限を持っている必要があります。 -
プロキシPDBをアプリケーション・コンテナに作成している場合は、次の前提条件が適用されます。
-
参照先PDBがアプリケーション・ルートまたはアプリケーション・コンテナ内のアプリケーションPDBである必要があります。
-
プロキシPDBのアプリケーション・コンテナのアプリケーション名およびバージョンは、参照先PDBのアプリケーション名およびバージョンと一致する必要があります。
-
プロキシPDBがアプリケーション・コンテナに作成されている場合、データベース・リンクは、プロキシPDBが作成されているアプリケーション・コンテナのルートから参照先PDBの場所への接続を有効にする必要があります。データベース・リンクは、リモート・アプリケーション・コンテナのルート、またはリモート・アプリケーションPDBのいずれかに接続できます。
-
データベース・リンクが、参照先PDBを含むリモート・アプリケーション・コンテナのルートに接続する場合、データベース・リンクが接続するユーザーは、アプリケーション共通ユーザーである必要があります。
-
データベース・リンクが参照先アプリケーションPDBに接続する場合、データベース・リンクが参照先アプリケーションPDBで接続するユーザーは、
CREATE
PLUGGABLE
DATABASE
システム権限を持っている必要があります。
注意:
アプリケーション・コンテナ内の参照先PDBに基づいてプロキシPDBをCDBルートに作成できます。 -
プロキシPDBを作成するには:
-
SQL*Plusで、現在のコンテナがCDBルートまたはプロキシPDBが作成されているアプリケーション・ルートであることを確認します。
現在のコンテナがCDBルートの場合、プロキシPDBはCDBに作成されます。現在のコンテナがアプリケーション・ルートの場合、プロキシPDBはアプリケーション・コンテナ内に作成されます。
「現在のコンテナについて」および「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
CREATE
PLUGGABLE
DATABASE
文を実行します。AS PROXY
句を指定し、FROM
句でデータベース・リンク名を指定して参照先PDBを指定します。他の句が必要な場合はそれらを指定します。作成したプロキシPDBはマウント・モードになり、そのステータスは
NEW
です。PDBのオープン・モードは、V$PDBS
ビューのOPEN_MODE
列を問い合せることで確認できます。CDB_PDBS
またはDBA_PDBS
ビューのSTATUS
列を問い合せて、PDBのステータスを表示できます。PDBの新しいデフォルト・サービスが作成されます。サービスの名前はPDBと同じになり、このサービスを使用してPDBにアクセスできます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。 「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
新しいPDBを読取り/書込みモードでオープンします。
Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。詳細は、「PDBのオープン・モードの変更」を参照してください。
-
PDBをバックアップします。
PDBは、バックアップしないとリカバリできません。
PDBのバックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
注意:
プロキシPDBの作成時にエラーが返された場合は、作成されたPDBがUNUSABLE
状態である可能性があります。CDB_PDBS
またはDBA_PDBS
ビューを問い合せてPDBの状態を確認したり、アラート・ログをチェックしてPDBの作成エラーの詳細を確認できます。使用不可のPDBは削除することのみができ、使用不可のPDBと同じ名前のPDBを作成できるようにするには、その前に削除する必要があります。
例38-48 リモート・プロキシPDBの作成
この例で、新しいPDBが属するルートはCREATE
PLUGGABLE
DATABASE
文の実行時の現在のコンテナによって決まります。
-
現在のコンテナがCDBルートの場合、新しいPDBはCDBルートに作成されます。
-
現在のコンテナがアプリケーション・コンテナ内のアプリケーション・ルートの場合、新しいPDBはアプリケーション・ルート内にアプリケーションPDBとして作成されます。
この例では、様々な要因に基づいてpdb1
という名前のリモート・プロキシPDBを作成します。この例では、次の要因を想定しています。
-
参照先PDBのCDBへのデータベース・リンク名は
pdb1_link
です。 -
FILE_NAME_CONVERT
句およびCREATE_FILE_DEST
句は必要ありません。Oracle Managed Filesが有効であるか、または
PDB_FILE_NAME_CONVERT
初期化パラメータが設定されています。SYSTEM
ファイルおよびSYSAUX
ファイルは、Oracle Managed Files構成または初期化パラメータ設定に基づいて新しい場所にコピーされます。
前述の要因に基づき、次の文によってpdb1
プロキシPDBが作成されます。
CREATE PLUGGABLE DATABASE pdb1 AS PROXY FROM pdb1@pdb1_link;
親トピック: プロキシPDBとしてのPDBの作成
38.8 非CDBを使用したPDBの作成
非CDBを様々な方法で使用して、PDBを作成できます。
- 非CDBを使用したPDBの作成について
非CDBをPDBに移動できます。 - 非CDBでのDBMS_PDBパッケージの使用
DBMS_PDB
パッケージを非CDBで使用して、非CDBをCDBに接続できます。
親トピック: SQL*Plusを使用したPDBの作成および削除
38.8.1 非CDBを使用したPDBの作成について
非CDBをPDBに移動できます。
このタスクは、次の方法で実行できます。
-
非CDBのクローニングによるPDBの作成
Oracle Database 12cリリース1 (12.1.0.2)からは、非CDBをクローニングしてPDBを作成できます。この方法は、非CDBを使用してPDBを作成する最も簡単な方法ですが、非CDBのファイルを新しい場所にコピーする必要があります。
手順は、「既存のPDBまたは非CDBのクローニングによるPDBの作成」を参照してください。
CDBと非CDBの両方でOracle Database 12cリリース1 (12.1.0.2)以上が実行されている必要があります。現在の非CDBでOracle Database 12cリリース1 (12.1.0.2)よりも前のOracle Databaseリリースを使用している場合、この手法を使用するには、非CDBをOracle Database 12cリリース1 (12.1.0.2)にアップグレードする必要があります。アップグレードの詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。
-
DBMS_PDB
パッケージを使用してXMLメタデータ・ファイルを生成します。XMLメタデータ・ファイルで非CDBのデータベース・ファイルを記述しているため、その非CDBをCDBに接続できます。
この方法は、非CDBをクローニングしてPDBを作成するよりもステップが多くなりますが、場合によっては、非CDBファイルを移動せずに非CDBを使用してPDBを作成することが可能になります。
「非CDBでのDBMS_PDBパッケージの使用」では、この技術の使用について説明しています。
この手法を使用するには、非CDBがOracle Database 12cの非CDBである必要があります。現在の非CDBでOracle Database 12cよりも前のOracle Databaseリリースを使用している場合、この手法を使用するには、非CDBをOracle Database 12cにアップグレードする必要があります。アップグレードの詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。
-
Oracle Data Pumpエクスポート/インポートを使用します。
非CDBからデータをエクスポートし、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のドキュメントを参照してください。
親トピック: 非CDBを使用したPDBの作成
38.8.2 非CDBでのDBMS_PDBパッケージの使用
DBMS_PDB
パッケージを非CDBで使用して、非CDBをCDBに接続できます。
- 非CDBでのDBMS_PDBパッケージの使用について
この手法では、DBMS_PDB.DESCRIBE
プロシージャを使用して非CDBからPDBを作成します。 - DBMS_PDBパッケージを使用して切断されたPDBを作成する方法
DBMS_PDB.DESCRIBE
プロシージャを使用して非CDBをPDBに移動できます。
親トピック: 非CDBを使用したPDBの作成
38.8.2.1 非CDBでのDBMS_PDBパッケージの使用について
この手法では、DBMS_PDB.DESCRIBE
プロシージャを使用して非CDBからPDBを作成します。
非CDBでDBMS_PDB.DESCRIBE
プロシージャを実行して、非CDBのデータベース・ファイルを記述するXMLファイルを生成します。XMLファイルが生成された後、切断されたPDBを接続するのと同じ方法で、非CDBを接続できます。具体的には、CREATE
PLUGGABLE
DATABASE
文でUSING
句を指定します。非CDBがCDBに接続された場合、その非CDBはPDBになります。
アプリケーション・コンテナに新しいアプリケーションPDBを作成するのと同じ手法を使用できます。
注意:
この手法を使用するには、非CDBがOracle Database 12cの非CDBである必要があります。
親トピック: 非CDBでのDBMS_PDBパッケージの使用
38.8.2.2 DBMS_PDBパッケージを使用して切断されたPDBを作成する方法
DBMS_PDB.DESCRIBE
プロシージャを使用して非CDBをPDBに移動できます。
DBMS_PDB
パッケージを使用して非CDBをPDBに移動するには:
-
CDBが存在しない場合は作成します。
「CDBの作成および構成」を参照してください。
-
非CDBがトランザクション上一貫した状態にあることを確認し、読取り専用モードにします。
「データベースを読取り専用モードでオープンする方法」を参照してください。
-
非CDBに接続し、
DBMS_PDB.DESCRIBE
プロシージャを実行して、非CDBを記述するXMLファイルを作成します。現行ユーザーには、
SYSDBA
管理権限が必要です。ユーザーは、接続時にAS
SYSDBA
を使用して権限を行使する必要があります。たとえば、
ncdb.xml
という名前のXMLファイルを/disk1/oracleディレクトリに生成し、次のプロシージャを実行します。BEGIN DBMS_PDB.DESCRIBE( pdb_descr_file => '/disk1/oracle/ncdb.xml'); END; /
このプロシージャが正常に完了した後、XMLファイルおよび非CDBのデータベース・ファイルを使用して、非CDBをCDBに接続できます。
-
DBMS_PDB.CHECK_PLUG_COMPATIBILITY
ファンクションを実行して、非CDBがCDBと互換性があるかどうかを確認します。このファンクションを実行する場合は、次のパラメータを設定します。
-
pdb_descr_file
: このパラメータをXMLファイルへのフルパスに設定します。-
pdb_name
: 新しいPDBの名前を指定します。このパラメータを省略した場合は、XMLファイル内のPDB名が使用されます。たとえば、/disk1/oracle/ncdb.xmlファイルで記述されている非CDBが現在のCDBと互換性があるかどうかを確認するには、次のPL/SQLブロックを実行します。
SET SERVEROUTPUT ON DECLARE compatible CONSTANT VARCHAR2(3) := CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file => '/disk1/oracle/ncdb.xml', pdb_name => 'NCDB') WHEN TRUE THEN 'YES' ELSE 'NO' END; BEGIN DBMS_OUTPUT.PUT_LINE(compatible); END; /
出力が
YES
の場合は非CDBに互換性があり、次のステップに進むことができます。出力が
NO
の場合は非CDBに互換性がなく、PDB_PLUG_IN_VIOLATIONS
ビューをチェックして、互換性がない理由を確認できます。続行する前に、すべての違反を修正する必要があります。たとえば、バージョンまたはパッチの不一致は、アップグレードまたはデータパッチのユーティリティを実行して解決する必要があります。違反を修正した後に、DBMS_PDB.CHECK_PLUG_COMPATIBILITY
を再実行して、非CDBがCDBと互換性があることを確認します。 -
非CDBを停止します。
「データベースの停止」を参照してください。
-
非CDBを接続します。
非CDBを接続するには、「CDBへの切断されたPDBの接続によるPDBの作成」の指示に従います。
たとえば、次のSQL文は非CDBをプラグインし、そのファイルを新しい場所にコピーして、非CDBから
tbs3
ユーザー表領域のみを含めます。CREATE PLUGGABLE DATABASE ncdb USING '/disk1/oracle/ncdb.xml' COPY FILE_NAME_CONVERT = ('/disk1/oracle/dbs/', '/disk2/oracle/ncdb/') USER_TABLESPACES=('tbs3');
違反がない場合は、新しいPDBをオープンしないでください。ステップ8でオープンします。
USER_TABLESPACES
句を使用すると、非CDB内の複数のテナントに使用されたデータを異なるPDBに分けることができます。この句を指定したCREATE
PLUGGABLE
DATABASE
文を複数使用して、非CDBに存在する他の表領域のデータを含む別のPDBを作成できます。 -
ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sqlスクリプトを実行します。このスクリプトは、PDBを初めてオープンする前に実行する必要があります。「非CDBを使用したPDBの作成」を参照してください。
PDBが非CDBでない場合は、noncdb_to_pdb.sqlスクリプトを実行する必要はありません。
noncdb_to_pdb.sqlスクリプトを実行するには、次のステップを実行します。
-
PDBにアクセスします。
現在のユーザーには
SYSDBA
管理権限が必要であり、その権限は共通で付与されているか、またはPDBでローカルに付与されている必要があります。ユーザーは、接続時にAS
SYSDBA
を使用して権限を行使する必要があります。「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
noncdb_to_pdb.sqlスクリプトを次のように実行します。
@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
スクリプトによって、PDBのオープン、変更の実行、および変更の完了時にPDBのクローズが行われます。
-
-
新しいPDBを読取り/書込みモードでオープンします。
Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。詳細は、「PDBのオープン・モードの変更」を参照してください。
-
PDBをバックアップします。
PDBは、バックアップしないとリカバリできません。
PDBのバックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
注意:
PDBの作成時にエラーが返された場合は、作成されたPDBがUNUSABLE
状態である可能性があります。CDB_PDBS
またはDBA_PDBS
ビューを問い合せてPDBの状態を確認したり、アラート・ログをチェックしてPDBの作成エラーの詳細を確認できます。使用不可のPDBは削除することのみができ、使用不可のPDBと同じ名前のPDBを作成できるようにするには、その前に削除する必要があります。
関連項目:
親トピック: 非CDBでのDBMS_PDBパッケージの使用
38.9 CDBからのPDBの切断
PDBをCDBから切断できます。
- PDBの切断について
PDBを切断すると、CDBへのPDBの関連付けが解除されます。PDBを異なるCDBに移動する場合、後で使用できるようにPDBをアーカイブする場合、およびPDBを使用する必要がなくなった場合は、PDBを切断します。 - PDBの切断
PDBを切断する場合は、前提条件を満たす必要があります。
親トピック: SQL*Plusを使用したPDBの作成および削除
38.9.1 PDBの切断について
PDBを切断すると、CDBへのPDBの関連付けが解除されます。PDBを異なるCDBに移動する場合、後で使用できるようにPDBをアーカイブする場合、およびPDBを使用する必要がなくなった場合は、PDBを切断します。
PDBを切断するには、CDBルートまたはアプリケーション・ルートに接続し、ALTER
PLUGGABLE
DATABASE
文を使用して、XMLファイルまたは.pdbファイルを指定します。XMLファイル(.xml extension)を指定すると、それには切断後にPDBに関するメタデータが含まれます。このSQL文によってXMLファイルが作成され、このXMLファイルには、ターゲットCDBでCREATE
PLUGGABLE
DATABASE
文を使用してPDBに接続できるようにするのに必要な情報が含められます。.pdbファイルを指定すると、それにはPDBについて記述したXMLファイルおよびPDBで使用されるファイル(データファイルやウォレット・ファイルなど)の圧縮アーカイブが含まれます。.pdbファイルにより、単一の圧縮されたファイル(複数ファイルではない)を新しい場所にコピーしてPDBをCDBに接続できます。
次の図では、この手法を使用してアプリケーション・コンテナからアプリケーションPDBを切断する方法を示しています。
PDBは切断する前にクローズする必要があります。PDBを切断すると、切断されたPDBはマウント・モードになります。この切断操作によって、PDBのデータファイルに対して、PDBが正常に切断されたなどの、記録対象となるなんらかの変更が加えられます。依然としてCDBの一部であるため、切断されたPDBはCDB全体のRMANバックアップに含まれています。このような方法によるバックアップは、切断されたPDBが将来必要になった場合に備えてアーカイブするのに便利です。
PDBをCDBから完全に除去するために、PDBを削除できます。切断されたPDBに対してサポートされている唯一の操作は、PDBの削除です。PDBを再度同じCDBに接続できるようにするには、CDBから削除しておく必要があります。PDBは、CDBに接続している場合にのみ使用できます。
注意:
アプリケーション・コンテナは、それに属するアプリケーションPDBがない場合にのみ切断できます。関連項目:
-
PDBのクローズの詳細は、「PDBのオープン・モードの変更」を参照してください
-
初期化パラメータおよび切断されたPDBの詳細は、「ALTER SYSTEM文を使用したPDBの変更」を参照してください
-
共通ユーザーおよびローカル・ユーザーの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
親トピック: CDBからのPDBの切断
38.9.2 PDBの切断
PDBを切断する場合は、前提条件を満たす必要があります。
次の前提条件を満たしている必要があります。
-
現在のユーザーには
SYSDBA
またはSYSOPER
管理権限が必要であり、その権限は共通で付与されているか、またはPDBでローカルに付与されている必要があります。ユーザーは、接続時にAS
SYSDBA
またはAS
SYSOPER
を使用して権限を行使する必要があります。 -
PDBは、少なくとも1回はオープンしている必要があります。
注意:
透過的データ暗号化で暗号化されているデータが含まれたPDBを切断する場合は、『Oracle Database Advanced Securityガイド』の指示に従います。
PDBを切断するには:
-
SQL*Plusで、現在のコンテナがPDBのルートであることを確認します。
PDBがCDBルートに接続される場合、現在のコンテナはCDBルートである必要があります。PDBがアプリケーション・ルートに接続される場合、現在のコンテナはアプリケーション・ルートである必要があります。
アプリケーション・コンテナを切断している場合、現在のコンテナはCDBルートである必要があり、アプリケーション・コンテナにはそれに接続されているアプリケーションPDBがないようにしてください。
「現在のコンテナについて」および「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
PDBをクローズします。
Oracle Real Application Clusters (Oracle RAC)環境では、PDBがすべてのインスタンスでクローズされている必要があります。
-
UNPLUG
INTO
句を使用してALTER
PLUGGABLE
DATABASE
文を実行し、切断するPDB、およびPDBのXMLメタデータ・ファイルまたは.pdbの名前と場所を指定します。
例38-49 XMLメタデータ・ファイルへのPDB salespdbの切断
次のALTER
PLUGGABLE
DATABASE
文により、PDB salespdb
が切断され、salespdb.xmlメタデータ・ファイルが/oracle/data/ディレクトリに作成されます。
ALTER PLUGGABLE DATABASE salespdb UNPLUG INTO '/oracle/data/salespdb.xml';
例38-50 アーカイブ・ファイルへのPDB salespdbの切断
次のALTER
PLUGGABLE
DATABASE
文により、PDB salespdb
が切断され、sales.pdbアーカイブ・ファイルが/oracle/data/ディレクトリに作成されます。sales.pdbアーカイブ・ファイルは、XMLメタデータ・ファイルとPDBのファイル(データファイルやウォレット・ファイルなど)を含む圧縮ファイルです。
ALTER PLUGGABLE DATABASE salespdb UNPLUG INTO '/oracle/data/sales.pdb';
親トピック: CDBからのPDBの切断
38.10 PDBの削除
DROP
PLUGGABLE
DATABASE
文によりPDBが削除されます。PDBをあるCDBから別のCDBに移動する場合、またはPDBが必要でなくなった場合は、PDBを削除できます。
PDBを削除すると、削除されたPDBへのすべての参照を削除するようにCDBの制御ファイルが変更されます。PDBに関連付けられているアーカイブREDOログ・ファイルおよびバックアップは削除されませんが、Oracle Recovery Manager (RMAN)を使用して削除できます。
PDBを削除する場合は、次のいずれかの句を使用して、PDBのデータファイルを保持または削除できます。
-
KEEP
DATAFILES
はデフォルトであり、データファイルを保持します。KEEP
DATAFILES
が指定されていても、PDBの一時ファイルは不要になったため削除されます。KEEP
DATAFILES
が指定されている場合は、PDBを切断する必要があります。 -
INCLUDING
DATAFILES
では、ディスクからデータファイルを削除します。PDBが
SNAPSHOT
COPY
句を使用して作成された場合、PDBを削除する際にINCLUDING
DATAFILES
を指定する必要があります。
次の前提条件を満たしている必要があります。
-
PDBは、マウント・モードであるか、または切断されている必要があります。
「PDBのオープン・モードの変更」を参照してください。
「CDBからのPDBの切断」を参照してください。
-
現在のユーザーには
SYSDBA
またはSYSOPER
管理権限が必要であり、その権限は共通で付与されているか、またはPDBでローカルに付与されている必要があります。ユーザーは、接続時にAS
SYSDBA
またはAS
SYSOPER
を使用して権限を行使する必要があります。
注意:
これは、破壊的な操作です。
PDBを削除するには:
-
SQL*Plusで、現在のコンテナがCDBルートであるか、アプリケーションPDBの場合はアプリケーションPDBを含むアプリケーション・ルートであることを確認します。
PDBがCDBルートに接続される場合、現在のコンテナはCDBルートである必要があります。PDBがアプリケーション・ルートに接続される場合、現在のコンテナはアプリケーション・ルートまたはCDBルートである必要があります。
アプリケーション・コンテナを削除している場合、現在のコンテナはCDBルートである必要があり、アプリケーション・コンテナにはそれに接続されているアプリケーションPDBがないようにしてください。
「現在のコンテナについて」および「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
-
DROP
PLUGGABLE
DATABASE
文を実行し、削除するPDBを指定します。
例38-51 データファイルは保持したままPDB salespdbを削除する方法
DROP PLUGGABLE DATABASE salespdb KEEP DATAFILES;
例38-52 PDB salespdbおよびそのデータファイルを削除する方法
DROP PLUGGABLE DATABASE salespdb INCLUDING DATAFILES;
関連項目:
親トピック: SQL*Plusを使用したPDBの作成および削除