PDBは、シードの使用、既存のPDBまたは非CDBのクローニング、切断されたPDBの接続など、複数の方法で作成できます。PDBをCDBから削除することもできます。
シードの使用、既存のPDBまたは非CDBのクローニング、切断されたPDBのCDBへの接続または非CDBの使用により、マルチテナント・コンテナ・データベース(CDB)にプラガブル・データベース(PDB)を作成できます。PDBを切断するかPDBを削除することで、PDBをCDBから削除できます。
注意:
この章では、SQL文を使用してPDBを作成および削除する方法について説明します。PDBを作成および削除する簡単な方法は、Database Configuration Assistant (DBCA)のグラフィカル・ユーザー・インタフェースを使用することです。
Oracle Database 12cリリース1 (12.1)では、シードを含め、最大253個のPDBをCDBに含めることができます。
関連項目:
DBCAの詳細は、『Oracle Database 2日でデータベース管理者』およびDBCAオンライン・ヘルプを参照してください。
様々な手法を使用してPDBを作成できます。
PDBの作成は、PDBをCDBに関連付けるプロセスです。PDBをCDBの一部として使用する必要がある場合に、PDBを作成します。
表38-1では、PDBの作成に使用できる手法について説明します。
表38-1 PDBを作成する手法
手法 | 説明 | 詳細情報 |
---|---|---|
シードを使用したPDBの作成 |
シードのファイルを使用して、PDBをCDBに作成します。この手法では、シードに関連付けられているファイルを新しい場所にコピーし、コピーしたファイルを新しいPDBに関連付けます。 |
|
既存のPDBまたは非CDBのクローニングによるPDBの作成 |
ソースのPDBまたは非CDBをクローニングし、そのクローンをCDBに接続してPDBを作成します。ソースは、ローカルCDBのPDB、リモートCDBのPDB、非CDBのいずれでもかまいません。この手法では、ソースに関連付けられているファイルを新しい場所にコピーし、コピーしたファイルを新しいPDBに関連付けます。 |
|
CDBへの切断されたPDBの接続によるPDBの作成 |
PDBを記述しているXMLメタデータ・ファイルを使用してPDBを作成し、これらのファイルをPDBに関連付けてPDBをCDBに接続します。 |
|
非CDBを使用したPDBの作成 |
非CDBをPDBに移動して、PDBを作成します。 |
表38-1で説明しているすべての手法では、CREATE
PLUGGABLE
DATABASE
文を使用してPDBを作成します。これらの手法は、コピーおよび接続という2つの主要なカテゴリに分類されます。図38-1は、PDBを作成するためのオプションを表します。
PDBを異なるCDBに接続する必要がある場合は、そのPDBを切断します。PDBが必要なくなった場合は、そのPDBを切断または削除できます。切断されたPDBは、CDBに接続されるまで使用できません。
注意:
非CDBのクローニングによるPDBの作成は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。
関連項目:
CREATE
PLUGGABLE
DATABASE
文を使用してPDBを作成します。この文を使用するには、文の句および各句をいつ使用するかを理解する必要があります。
表38-1で説明しているすべての手法で、この文が使用されます。
関連項目:
CREATE
PLUGGABLE
DATABASE
文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
CREATE
PLUGGABLE
DATABASE
文のオプションのSTORAGE
句では、PDBに対してストレージ制限を指定します。
STORAGE
句は、PDBに属するすべての表領域で使用できる記憶域の量を指定します。MAXSIZE
およびsize句を使用して制限を指定するか、またはMAXSIZE
を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
文で、新しい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によって作成されたファイルには影響しません。関連項目:
DB_CREATE_FILE_DEST
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください
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リファレンス』を参照してください。
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/'
CREATE
PLUGGABLE
DATABASE
文のPATH_PREFIX
句は、PDBと関連付けられているすべての相対ディレクトリ・オブジェクト・パスが、指定したディレクトリまたはそのサブディレクトリに制限されるようにします。
ディレクトリ・オブジェクトに相対パスが使用されているときに、PDBのファイルが特定のディレクトリおよびそのサブディレクトリ内に確実に存在するようにする場合に、この句を使用します。
この句を使用して、次のいずれかのオプションを指定できます。
PDBに関連付けられたすべての相対ディレクトリ・オブジェクト・パスのプリフィックスとして使用される絶対パス。
ディレクトリ・オブジェクトに関連付けられているパスを絶対パスとして取り扱うことを示すNONE
。PATH_PREFIX
句の省略は、NONE
の指定と同じです。
PDBが作成された後は、そのPATH_PREFIX
設定を変更できなくなります。
PATH_PREFIX
句は、CREATE
PLUGGABLE
DATABASE
文で使用できます。
ディレクトリ・オブジェクトに絶対パスが使用されている場合、PATH_PREFIX
句は無視されます。
PATH_PREFIX
句は、Oracle Managed Filesによって作成されたファイルには影響しません。
例38-5 PATH_PREFIX句
このPATH_PREFIX
句では、PDBと関連付けられているすべての相対ディレクトリ・オブジェクト・パスが、/disk1/oracle/dbs/salespdbディレクトリと相対的になるようにします。
PATH_PREFIX = '/disk1/oracle/dbs/salespdb/'
ファイル名が付加された際に正しい形式となるよう、パス名は指定してください。たとえば、UNIXシステムでは、パス名はフォワード・スラッシュ(/)で終わるようにします。
切断されているPDBをCDBに接続するときに、CREATE
PLUGGABLE
DATABASE
...
USING
文でPDBのファイルを識別できる必要があります。
XMLファイルには、切断されているPDBのソース・ファイルの名前が記述されています。切断されているファイルをあるストレージ・システムから異なるストレージ・システムにトランスポートした場合は、これらのファイルの名前がXMLファイルに正確に記述されていない可能性があります。これらのファイルは新しい場所にありますが、XMLファイル内のファイル・パスは依然として古い場所を示しています。この場合、この句を使用してファイルの正確な名前を指定します。この句は、CREATE
PLUGGABLE
DATABASE
...
USING
文を使用して、切断されているPDBを接続する場合にのみ使用します。
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
パターンの指定が現実的でない場合に使用すると便利です。
これらの句は相互に排他的です。単一のCREATE
PLUGGABLE
DATABASE
文で両方の句を使用することはできません。
これらの句は、CREATE
PLUGGABLE
DATABASE
...
USING
文を使用して、切断されているPDBを接続する場合にのみ使用できます。
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
句は、USING
句とともにCREATE
PLUGGABLE
DATABASE
文でのみ使用できます。したがって、この句は、切断されている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言語リファレンス』を参照してください。
CREATE
PLUGGABLE
DATABASE
文のSOURCE_FILE_DIRECTORY
句では、新しいPDBの作成に使用されるファイルのソース・ディレクトリを指定します。句では、切断されたPDBについてXMLファイルにリストされているすべてのファイルを含むディレクトリを指定します。
PDBを接続する際に、ソース・ファイルがすべて単一ディレクトリに存在する場合は、この句でディレクトリ名を指定できます。切断されたPDBのXMLファイルに基づいて適切なファイルを検索するためにディレクトリがスキャンされます。
この句を使用して、次のいずれかのオプションを指定できます。
ソース・ファイル・ディレクトリの絶対パス。
PDBの作成時にいずれのファイルもコピーまたは移動しない場合はNONE
を指定します。SOURCE_FILE_DIRECTORY
句の省略は、NONE
の指定と同じです。
SOURCE_FILE_DIRECTORY
句は、USING
句とともにCREATE
PLUGGABLE
DATABASE
文でのみ使用できます。したがって、この句は、切断されている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言語リファレンス』を参照してください
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
句は、シードからPDBを作成するCREATE PLUGGABLE DATABASE
文を除く任意のCREATE
PLUGGABLE
DATABASE
文で使用できます。シードはユーザー定義サービスを持つことができません。
注意:
この句は、PDBのデフォルト・サービスに適用されません。デフォルト・サービスの名前はPDBと同じになります。例38-8 SERVICE_NAME_CONVERT句
このSERVICE_NAME_CONVERT
句は、salesrep
サービスの名前をsalesperson
に変更します。
SERVICE_NAME_CONVERT = ('salesrep','salesperson')
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
文のUSER_TABLESPACES
句では、新しいPDBで使用できる表領域を指定します。
注意:
この機能は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。
この句を使用すると、複数のスキーマのデータを異なるPDBに分けることができます。たとえば、非CDBをPDBに移動する場合、その非CDBに多数のスキーマがあって、それぞれ異なるアプリケーションをサポートしているとき、非CDBで各スキーマが別個の表領域を使用していたとすると、この句を使用して各スキーマに属するデータを別個のPDBに分けることができます。
この句を使用して、次のいずれかのオプションを指定できます。
含める1つ以上の表領域をリストします。
すべての表領域を含める場合はALL
(デフォルト)を指定します。
リストした表領域を除くすべての表領域を含める場合はALL
EXCEPT
を指定します。
すべての表領域を除外する場合はNONE
を指定します。
この句で除外される表領域は新しいPDBでオフラインとなり、このような表領域に属するデータファイルはすべて無名でオフラインとなります。
この句は、SYSTEM
、SYSAUX
またはTEMP
の各表領域には適用されません。これらの表領域は、この句の表領域リストに含めないでください。
次に、USER_TABLESPACES
句の使用例を示します。
例38-10 1つの表領域が含まれるUSER_TABLESPACES句
PDBの作成元となる非CDBまたはPDBにはtbs1
、tbs2
およびtbs3
の各表領域があるとします。このUSER_TABLESPACES
句には、tbs2
表領域は含まれますが、tbs1
表領域およびtbs3
表領域は含まれません。
USER_TABLESPACES=('tbs2');
例38-11 表領域のリストが含まれるUSER_TABLESPACES句
PDBの作成元となる非CDBまたはPDBにはtbs1
、tbs2
、tbs3
、tbs4
およびtbs5
の各表領域があるとします。このUSER_TABLESPACES
句には、tbs1
、tbs4
およびtbs5
の各表領域は含まれますが、tbs2
表領域およびtbs3
表領域は含まれません。
USER_TABLESPACES=('tbs1','tbs4','tbs5');
例38-12 リストした表領域を除くすべての表領域が含まれるUSER_TABLESPACES句
PDBの作成元となる非CDBまたはPDBにはtbs1
、tbs2
、tbs3
、tbs4
およびtbs5
の各表領域があるとします。このUSER_TABLESPACES
句には、tbs2
表領域およびtbs3
表領域は含まれますが、tbs1
、tbs4
およびtbs5
の各表領域は含まれません。
USER_TABLESPACES=ALL EXCEPT('tbs1','tbs4','tbs5');
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-13 PDBのLOGGING属性の指定
LOGGING
例38-14 PDBのNOLOGGING属性の指定
NOLOGGING
関連項目:
ロギング属性の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
CREATE
PLUGGABLE
DATABASE
文のSTANDBYS
句では、新しいPDBをスタンバイCDBに含めるかどうかを指定します。
注意:
この機能は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。
STANDBYS
句に、次のいずれかの値を指定できます。
ALL
は、新しいPDBをすべてのスタンバイCDBに含めます。
NONE
は、新しいPDBをすべてのスタンバイCDBから除外します。
スタンバイCDBのいずれにもPDBを含めない場合、PDBのデータファイルはすべてのスタンバイCDBでオフラインとなり、無名とマークされます。PDBの作成後にインスタンス化される新しいスタンバイCDBでは、PDBをリカバリに対して明示的に無効にし、スタンバイCDBから除外する必要があります。PDBをスタンバイCDBで除外した後に、そのスタンバイCDBで有効にすることは可能です。
例38-15 新しいPDBをすべてのスタンバイCDBに含めるSTANDBYS句
STANDBYS=ALL
例38-16 新しいPDBをすべてのスタンバイCDBから除外するSTANDBYS句
STANDBYS=NONE
関連項目:
スタンバイCDBでのPDBの構成の詳細は、『Oracle Data Guard概要および管理』を参照してください。
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-17 NO DATA句
NO DATA
関連項目:
『Oracle Database SQL言語リファレンス』
PDBを作成する前に、前提条件を満たす必要があります。
PDBを作成する前に、次の前提条件が満たされていることを確認してください。
CDBが存在していることが必要です。
「CDBの作成および構成」を参照してください。
CDBは、読取り/書込みモードである必要があります。
現在のユーザーは、現在のコンテナがルートである共通ユーザーである必要があります。
現行ユーザーにはCREATE
PLUGGABLE
DATABASE
システム権限が必要です。
各PDBに一意のPDB名を決定する必要があります。各PDB名は、1つのCDB内で一意である必要があり、特定のリスナーからアクセスされるインスタンスを持つCDBのスコープ内で一意である必要があります。
PDB名を使用してPDBとCDB内の他のPDBとを区別します。PDB名のルールは、大文字と小文字が区別されるなど、サービス名のルールと同じです。サービス名のルールの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。
Oracle Data Guard構成にフィジカル・スタンバイ・データベースを使用しPDBを作成する場合、PDBの作成前にその他のタスクも完了する必要があります。詳細は、『Oracle Data Guard概要および管理』を参照してください。
関連項目:
CREATE
PLUGGABLE
DATABASE
文により、シードのファイルを使用してCDBにPDBを作成できます。
関連項目:
CREATE
PLUGGABLE
DATABASE
文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
CREATE
PLUGGABLE
DATABASE
文により、シードのファイルを使用して新しいPDBを作成できます。
この文では、これらのファイルを新しい場所にコピーし、新しいPDBに関連付けます。図38-2は、この手法で新しいPDBがどのように作成されるかを示しています。
シードから新しいPDBを作成する場合、CREATE
PLUGGABLE
DATABASE
文でPDBの管理者を指定する必要があります。この文では、管理者をPDBのローカル・ユーザーとして作成し、PDB_DBA
ロールを管理者にローカルに付与します。
シードを使用してPDBを作成する場合は、表38-3の質問に対処する必要があります。この表では、様々な要因に基づいて指定する必要があるCREATE
PLUGGABLE
DATABASE
の句について説明しています。
表38-3 シードからPDBを作成する場合の句
句 | 質問 | はい | いいえ |
---|---|---|---|
|
PDBが使用できる記憶域の量を制限しますか。 |
適切な制限を使用して |
|
|
PDBのデフォルト・パラメータ表領域を指定しますか。 |
適切な制限を使用して Oracle Databaseは、smallfile表領域を作成し、その後、この表領域に対して、別の永続表領域を指定していない、 |
この句を指定しない場合、 |
|
ディレクトリ・オブジェクトに絶対パスが使用されている場合、
|
絶対パスを指定する |
|
|
ソース・ファイルは、シードに関連付けられたファイルです。 |
ソース・ファイルの名前に基づいてファイルのターゲットの場所を指定する |
次のいずれかの手法を使用して、ファイルのターゲットの場所を指定します。
「新しいPDBのファイルの場所」を参照してください。 |
|
ソース・ファイルは、シードに関連付けられたファイルです。 |
PDBのファイル用のデフォルトのファイル・システム・ディレクトリまたはOracle ASMディスク・グループを指定する |
次のいずれかの手法を使用して、ファイルのターゲットの場所を指定します。
「新しいPDBのファイルの場所」を参照してください。 |
|
ターゲットの場所に一時ファイルがある場合、それを再利用しますか。 |
|
ターゲットの場所に新しい一時ファイルと同じ名前のファイルがないことを確認します。 |
|
新しいPDBに含める表領域および新しいPDBから除外する表領域を指定しますか。 この機能は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。 |
|
|
logging_clause |
新しいPDBに表領域のロギング属性を指定しますか。 この機能は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。 |
logging_clauseを含めます。 |
logging_clauseを省略します。 |
|
Oracleの事前定義されているロールをPDBでローカルに PDBの新しい管理者には、 |
|
|
ROLES
句は、シードからPDBを作成する場合にのみ使用できますが、表38-3で説明しているその他の句は、一般的な句です。一般的な句の詳細は、「CREATE PLUGGABLE DATABASE文」を参照してください。
CREATE
PLUGGABLE
DATABASE
文を使用して、シードからPDBを作成できます。
シードからPDBを作成する前に、「PDBの準備」で説明している前提条件を満たす必要があります。
シードからPDBを作成する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがルートであることを確認します。
「現在のコンテナについて」および「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でローカルに付与します。
例38-18 句を指定せずにPDBを作成する方法
この例では、次の要因を想定しています。
PDBにはストレージ制限は必要ありません。したがって、STORAGE
句は必要ありません。
PDBにはデフォルトの表領域は必要ありません。
PATH_PREFIX
句は必要ありません。
FILE_NAME_CONVERT
句およびCREATE_FILE_DEST
句は必要ありません。
CDBに対してOracle Managed Filesが有効であるか、またはPDB_FILE_NAME_CONVERT
初期化パラメータが設定されています。シードに関連付けられているファイルは、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-19 PDBの作成、およびPDB管理者へのOracleの事前定義されたロールの付与
この例では、次の要因を想定しています。
PDBにはストレージ制限は必要ありません。したがって、STORAGE
句は必要ありません。
PDBにはデフォルトの表領域は必要ありません。
PATH_PREFIX
句は必要ありません。
FILE_NAME_CONVERT
句およびCREATE_FILE_DEST
句は必要ありません。
Oracle Managed Filesが有効であるか、またはPDB_FILE_NAME_CONVERT
初期化パラメータが設定されています。シードに関連付けられているファイルは、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-20 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
句が必要です。この例では、PDBの相対ディレクトリ・オブジェクト・パスは、/disk1/oracle/dbs/salespdbディレクトリへの相対パスとして扱われる必要があります。
CREATE_FILE_DEST
句が使用されず、Oracle Managed Filesが有効になっておらず、PDB_FILE_NAME_CONVERT
初期化パラメータが設定されていません。したがって、FILE_NAME_CONVERT
句が必要です。システムにおけるシードのデータファイルの場所を指定します。この例では、Oracle Databaseは/disk1/oracle/dbs/pdbseedのファイルを/disk1/oracle/dbs/salespdbにコピーします。
シードのデータファイルの場所を表示するには、例43-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、リモートPDBまたは非CDBをクローニングすることで、PDBを作成できます。
注意:
非CDBのクローニングによるPDBの作成は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。
CREATE
PLUGGABLE
DATABASE
文を使用して、ソースPDBまたは非CDBからPDBをクローニングできます。
この手法では、ソースPDBまたは非CDBをクローニングし、そのクローンをCDBに接続します。この手法を使用するには、ソースを指定するFROM
句を含める必要があります。
ソースは、コピーされる既存のPDBまたは非CDBです。ターゲットPDBはソースのクローンです。ソースは、ローカルCDBのPDB、リモートCDBのPDB、非CDBのいずれでもかまいません。CREATE
PLUGGABLE
DATABASE
文では、ソースに関連付けられているファイルを新しい場所にコピーし、そのファイルをターゲットPDBに関連付けます。
クローニングの用途の1つは、テスト用です。クローニングを使用すると、PDBまたは非CDBのクローンを1つ以上作成し、孤立した状況で安全にテストできます。たとえば、新しいアプリケーションまたは変更されたアプリケーションを、本番PDBで使用する前に、クローニングPDBでテストできます。
図38-3は、ソースがローカルPDBである場合に、この手法で新しいPDBがどのように作成されるかを示しています。
ソースがリモートCDB内のPDBである場合は、リモートCDBへのデータベース・リンクをFROM
句で指定する必要があります。このデータベース・リンクは、リモートCDBのルート、または新規PDBを含めるCDBからリモート・ソースPDBに接続します。図38-4は、ソースPDBがリモートである場合に、この手法で新規PDBがどのように作成されるかを示しています。
ソースが非CDBである場合は、非CDBへのデータベース・リンクをFROM
句で指定する必要があります。図38-5は、ソースがリモート非CDBである場合に、この手法で新しいPDBがどのように作成されるかを示しています。
注意:
PDBをシードから作成する場合に(PDB$SEED
)、CREATE
PLUGGABLE
DATABASE
文にFROM
句を含めることはできません。PDBをシードから作成する場合の詳細は、「シードを使用したPDBの作成」を参照してください。
PDBをクローニングする場合は、表38-4の質問に対処する必要があります。この表では、様々な要因に基づいて指定する必要があるCREATE
PLUGGABLE
DATABASE
の句について説明しています。
表38-4 PDBをクローニングする場合の句
句 | 質問 | はい | いいえ |
---|---|---|---|
|
ディレクトリ・オブジェクトに絶対パスが使用されている場合、
|
絶対パスを指定する |
|
|
|
ソース・ファイルの名前に基づいてファイルのターゲットの場所を指定する |
次のいずれかの手法を使用して、ファイルのターゲットの場所を指定します。
「新しいPDBのファイルの場所」を参照してください。 |
|
|
PDBのファイル用のデフォルトのファイル・システム・ディレクトリまたはOracle ASMディスク・グループを指定する |
次のいずれかの手法を使用して、ファイルのターゲットの場所を指定します。
「新しいPDBのファイルの場所」を参照してください。 |
|
|
サービスの新しい名前とそれが置換するサービス名を指定する |
|
|
PDBが使用できる記憶域の量を制限しますか。 |
適切な制限を使用して |
|
|
ターゲットの場所に一時ファイルがある場合、それを再利用しますか。 |
|
ターゲットの場所に新しい一時ファイルと同じ名前のファイルがないことを確認します。 |
|
新しいPDBに含める表領域および新しいPDBから除外する表領域を指定しますか。 この機能は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。 |
|
|
logging_clause |
新しいPDBに表領域のロギング属性を指定しますか。 この機能は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。 |
logging_clauseを含めます。 |
logging_clauseを省略します。 |
|
ソースPDBのデータ・モデル定義をクローニングするが、ソースPDBのデータをクローニングしないことを指定しますか。 この機能は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。 |
|
|
|
記憶域スナップショットを使用してPDBをクローニングしますか。 |
記憶域スナップショットを使用してPDBクローンを作成する場合は、ソースPDBのデータファイルをコピーする必要がないため、ほぼ即時にクローンが作成されます。 |
|
NO DATA
句およびSNAPSHOT
COPY
句を除き、表38-4で説明している句は一般的な句です。一般的な句の詳細は、「CREATE PLUGGABLE DATABASE文」を参照してください。
SNAPSHOT COPY句
SNAPSHOT
COPY
句を使用している場合、ソースPDBのすべてのデータファイルは、同じ記憶域タイプに格納されている必要があります。
SNAPSHOT
COPY
句を使用してソースPDBのクローンを作成し、CLONEDB
初期化パラメータをFALSE
に設定する場合、ソースPDBのファイルの基になるファイル・システムが記憶域スナップショットをサポートしている必要があります。そのようなファイル・システムとして、Oracle Automatic Storage Management Cluster File System (Oracle ACFS)およびDirect NFS Client記憶域などがあります。
SNAPSHOT
COPY
句を使用してソースPDBのクローンを作成し、CLONEDB
初期化パラメータをTRUE
に設定する場合、ソースPDBのファイルの基になるファイル・システムは、ローカル・ファイル・システム、ネットワーク・ファイル・システム(NFS)、Direct NFSが有効になっているクラスタ・ファイル・システムのいずれでもかまいません。ただし、ソース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
句を使用して作成したクローンを切断しようとすると、エラーが発生します。
Oracle Real Application Clusters (Oracle RAC)環境でSNAPSHOT
COPY
句を使用して作成されたPDBの場合、PDBのファイルにアクセスする必要がある各ノードは、マウントされている必要があります。
記憶域クローンには、宛先PDBのGUIDを使用して名前およびタグが付けられます。DBA_PDB_HISTORY
ビューのCLONETAG
列を問い合せて、記憶域クローンのクローン・タグを表示できます。
注意:
SNAPSHOT
COPY
句でソースPDBから作成されたクローンが存在するかぎり、ソースPDBを削除しないでください。ソースPDBが削除されると、クローズされているクローンはオープンできず、オープンされたクローンはエラーを生成します。関連項目:
Oracle ACFSの詳細は、『Oracle Automatic Storage Management管理者ガイド』を参照してください。
Direct NFSクライアントの詳細は、使用しているオペレーティング・システムの『Oracle Grid Infrastructureインストレーション・ガイド』を参照してください。
透過的データ暗号化の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。
PDBのスナップショット・クローニングをサポートするプラットフォームの詳細は、My Oracle Supportノート1597027.1を参照してください。
https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=1597027.1
この項では、ローカルPDBのクローニングについて説明します。ローカルPDBのクローニング後、ソースPDBとターゲットPDBは同じCDBに存在します。
次の前提条件を満たしている必要があります。
「PDBの準備」で説明している前提条件を満たします。
現行ユーザーは、ルートおよびソースPDBの両方でCREATE
PLUGGABLE
DATABASE
システム権限を持っている必要があります。
ソースPDBは、読取り専用モードでオープンしている必要があります。
ローカルPDBをクローニングする手順は、次のとおりです。
SQL*Plusで、現在のコンテナがルートであることを確認します。
「現在のコンテナについて」および「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にクローニングします。
例38-21 句を指定せずにローカル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-22 PATH_PREFIX句、FILE_NAME_CONVERT句およびSERVICE_NAME_CONVERT句を使用してローカルPDBをクローニングする方法
この例では、次の要因を想定しています。
PDBの相対ディレクトリ・オブジェクト・パスは、特定のディレクトリへの相対パスとして扱われる必要があります。したがって、PATH_PREFIX
句が必要です。この例では、PDBの相対ディレクトリ・オブジェクト・パスは、/disk2/oracle/pdb2ディレクトリおよびそのサブディレクトリへの相対パスとして扱われる必要があります。
コピーしたファイルのターゲットの場所を指定するには、FILE_NAME_CONVERT
句が必要です。この例では、ファイルは/disk1/oracle/pdb1から/disk2/oracle/pdb2にコピーされます。
CREATE_FILE_DEST
句は使用されず、Oracle Managed FilesもPDB_FILE_NAME_CONVERT
初期化パラメータも、コピーしたファイルのターゲットの場所の指定に使用されません。
PDBのデータファイルの場所を表示するには、例43-7の問合せを実行します。
PDBにはストレージ制限は必要ありません。したがって、STORAGE
句は必要ありません。
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、TEMPFILE REUSE
句は必要ありません。
クローニングされるPDB (pdb1
)には、salesrep
およびorders
という2つのユーザー定義サービスがあります。CDB内でサービス名を一意に保つために、クローニングされたPDB (pdb2
)内でこれらのサービス名がそれぞれsalesperson
およびorderentry
に変更されます。
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','salesperson','orders','orderentry') NOLOGGING;
例38-23 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のデータファイルの場所を表示するには、例43-7の問合せを実行します。
PDBにストレージ制限を強制する必要があります。したがって、STORAGE
句が必要です。特に、PDBに属する表領域はいずれも2GBを超えることはできません。
クローニングされるPDB (pdb1
)には、salesrep
およびorders
という2つのユーザー定義サービスがあります。CDB内でサービス名を一意に保つために、クローニングされたPDB (pdb2
)内でこれらのサービス名がそれぞれsalesperson
およびorderentry
に変更されます。
ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、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','salesperson','orders','orderentry');
例38-24 データをクローニングしないローカル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万超の行があります。
ルートを現在のコンテナとして使用し、ソースPDBをオープンの読取り専用モードに変更します。
ALTER PLUGGABLE DATABASE pdb1 OPEN READ ONLY;
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内の表には行がありません。
リモート・ソースのクローニングによってPDBを作成できます。リモート・ソースは、リモートPDBでも非CDBでもかまいません。クローニング操作の完了後、ソースとターゲットPDBは異なる場所にあります。
次の前提条件を満たしている必要があります。
「PDBの準備」で説明している前提条件を満たします。
現行ユーザーは、ターゲットPDBが含まれるCDBのルートでCREATE
PLUGGABLE
DATABASE
システム権限を持っている必要があります。
ソースPDBまたはソース非CDBは、オープンの読取り専用モードである必要があります。
データベース・リンクは、ターゲットPDBが含まれるCDBからリモート・ソースへの接続を可能にする必要があります。ソースがリモートPDBである場合、データベース・リンクは、リモートCDBのルート、またはリモート・ソースPDBのいずれかに接続できます。
リモート・ソースでデータベース・リンクが接続するユーザーは、ソースPDBまたは非CDBでCREATE
PLUGGABLE
DATABASE
システム権限を持っている必要があります。
データベース・リンクがリモートCDBのルートに接続する場合、データベース・リンクが接続するユーザーは、共通ユーザーである必要があります。
ソースとターゲットのプラットフォームは、次の要件を満たしている必要があります。
endiannessが同じである必要があります。
ソース・プラットフォームにインストールされているデータベース・オプションは、ターゲット・プラットフォームにインストールされているデータベース・オプションと同じまたはそのサブセットである必要があります。
ソースおよびターゲットに、互換性のあるキャラクタ・セットおよび各国語キャラクタ・セットが設定されている必要があります。互換性のために、キャラクタ・セットおよび各国語キャラクタ・セットは、『Oracle Databaseグローバリゼーション・サポート・ガイド』で指定されている要件をすべて満たす必要があります。
非CDBをクローニングしてPDBを作成している場合は、CDBと非CDBの両方でOracle Database 12cリリース1 (12.1.0.2)以上が実行されている必要があります。
リモートPDBまたは非CDBをクローニングする手順:
SQL*Plusで、現在のコンテナが新しいPDBを含むCDBのルートであることを確認します。
「現在のコンテナについて」および「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
CREATE
PLUGGABLE
DATABASE
文を実行し、ソースPDBまたはソース非CDBをFROM
句で指定します。他の句が必要な場合はそれらを指定します。
例38-25を参照してください。
作成した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を作成できるようにするには、その前に削除する必要があります。
ソースが非CDBである場合、非CDBの名前のかわりにNON$CDB
を使用できます。たとえば、次の文は前の例と同じです。
CREATE PLUGGABLE DATABASE pdb2 FROM NON$CDB@mydb_link;
例38-25 句を使用せずにリモート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-26 リモート非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;
関連項目:
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
PDBのクローニング後に、ユーザーと表領域に関する特定のルールが適用されます。
PDBのクローニング後、次の内容が適用されます。
ソース非CDBまたはPDBのデフォルト一時表領域を使用していたPDBのユーザーは、クローンPDBのデフォルト一時表領域を使用します。非CDBまたはPDB内のデフォルト以外の一時表領域を使用していたユーザーは、クローンPDB内の同じローカル一時表領域を引き続き使用します。「CDB内表領域の管理の概要」を参照してください。
リモートPDBのクローニング時、ソースCDBに存在するが、ターゲットCDBには存在しない、ユーザーが作成した共通ユーザーには、共通して付与された権限がありません。ただし、ターゲットCDBに共通ユーザーが存在し、PDBの共通ユーザーと同じ名前である場合、後者は前者にリンクされ、ターゲットCDBの共通ユーザーに付与された権限を持ちます。
ターゲットCDBに同じ名前の共通ユーザーがない場合、ユーザー・アカウントはターゲットPDBでロックされます。ロックされたこれらの各ユーザーに関して、次のオプションがあります。
PDBをクローニングし、ルートに接続し、同じ名前で共通ユーザーを作成します。PDBを読取り/書込みモードでオープンすると、ユーザーに共通して付与されているロールや権限の相違点が解決され、ユーザーをロック解除できます。ユーザーに対してローカルに付与されている権限やロールは、このプロセス中も変更されません。
PDBに新しいローカル・ユーザーを作成し、Data Pumpを使用しロックされたユーザーのデータを新しいローカル・ユーザーのスキーマにエクスポート/インポートできます。
ユーザーをロックしたままにできます。
ユーザーを削除できます。
関連項目:
共通ユーザーおよびローカル・ユーザーの詳細は、『Oracle Database概要』を参照してください。
ローカル・ユーザーの作成の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
CDBでのOracle Data Pumpの使用の詳細は、『Oracle Databaseユーティリティ』を参照してください。
切断されたPDBをCDBに接続することで、PDBを作成できます。
この手法では、切断されたPDBを接続します。この手法では、PDBを記述しているXMLメタデータ・ファイル、およびPDBに関連付けられたファイルを使用して、CDBに接続します。
XMLメタデータ・ファイルは、PDBのファイルの場所を指定し、CREATE
PLUGGABLE
DATABASE
文のUSING
句でXMLメタデータ・ファイルを指定します。図38-6は、この手法で新しいPDBがどのように作成されるかを示しています。
切断されたPDBは、そのPDBについて記述したXMLファイルおよびPDBのファイル(データファイルやウォレット・ファイルなど)で構成されています。CREATE
PLUGGABLE
DATABASE
文を使用して、切断されたPDBを接続できます。そのためには、PDBを記述しているXMLファイルを指定するUSING
句を含める必要があります。
ソースCDBは、PDBが切断されたCDBです。ターゲットCDBは、PDBを接続するCDBです。ソースCDBとターゲットCDBは、同じCDBにすることも異なるCDBにすることもできます。
切断されたPDBに接続する場合は、表38-5の質問に対処する必要があります。この表では、様々な要因に基づいて指定する必要があるCREATE
PLUGGABLE
DATABASE
の句について説明しています。
表38-5 切断されたPDBを接続する場合の句
句 | 質問 | はい | いいえ |
---|---|---|---|
|
同じPDBを接続して作成した1つ以上のPDBを含むCDBにPDBを接続しますか。 |
|
|
|
ディレクトリ・オブジェクトに絶対パスが使用されている場合、
|
絶対パスを指定する |
|
|
|
サービスの新しい名前とそれが置換するサービス名を指定する |
|
|
XMLファイルの内容は、ソース・ファイルの場所を正確に記述していますか。 |
|
|
|
単一ディレクトリ内のすべてのソース・ファイルが新しいファイル名を持ち、複数の |
ソース・ファイルへの完全絶対パスで |
|
|
ファイルを新しい場所にコピーまたは移動しますか。 |
次のいずれかの手法を使用して、ターゲットの場所を指定します。
「新しいPDBのファイルの場所」を参照してください。 |
|
|
PDBが使用できる記憶域の量を制限しますか。 |
適切な制限を使用して |
|
|
ターゲットの場所に一時ファイルがある場合、それを再利用しますか。 |
|
ターゲットの場所に新しい一時ファイルと同じ名前のファイルがないことを確認します。 |
|
新しいPDBに含める表領域および新しいPDBから除外する表領域を指定しますか。 この機能は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。 |
|
|
logging_clause |
新しいPDBに表領域のロギング属性を指定しますか。 この機能は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。 |
logging_clauseを含めます。 |
logging_clauseを省略します。 |
AS
CLONE
句およびSOURCE_FILE_NAME_CONVERT
句は、切断されたPDBに接続する場合にのみ使用できますが、表38-5で説明しているその他の句は一般的な句です。一般的な句の詳細は、「CREATE PLUGGABLE DATABASE文」を参照してください。
切断されたPDBを接続する前に、前提条件を満たす必要があります。
切断されたPDBを接続するには、次の要件が満たされている必要があります。
「PDBの準備」で説明している前提条件を満たします。
PDBを記述しているXMLファイルは、CDBにアクセスできる場所に存在する必要があります。
USING
句でXMLファイルを指定する必要があります。
PDBのXMLファイルが使用できないか見つからない場合は、DBMS_PDB.RECOVER
プロシージャを使用して、PDBのデータファイルでXMLファイルを生成できます。このプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
PDB (データファイルやウォレット・ファイルなど)に関連付けられたファイルは、CDBにアクセスできる場所に存在している必要があります。
ソースCDBとターゲットCDBのプラットフォームは、次の要件を満たしている必要があります。
endiannessが同じである必要があります。
ソース・プラットフォームにインストールされているデータベース・オプションは、ターゲット・プラットフォームにインストールされているデータベース・オプションと同じまたはそのサブセットである必要があります。
切断されたPDBが含まれたCDBおよびターゲットCDBには、互換性のあるキャラクタ・セットおよび各国語キャラクタ・セットが含まれている必要があります。互換性のために、キャラクタ・セットおよび各国語キャラクタ・セットは、『Oracle Databaseグローバリゼーション・サポート・ガイド』で指定されている要件をすべて満たす必要があります。
これらの要件が満たされているかどうかを判断するために、DBMS_PDB.CHECK_PLUG_COMPATIBILITY
ファンクションを使用できます。次の手順のステップ2では、このファンクションの使用方法を示しています。
注意:
透過的データ暗号化を使用して暗号化されたデータが含まれたPDBを接続する場合は、『Oracle Database Advanced Securityガイド』を参照してください。
Database Vaultに対応したPDBを接続する場合は、『Oracle Database Vault管理者ガイド』の手順に従ってください。
PDBをプラグインする手順は、次のとおりです。
SQL*Plusで、現在のコンテナがPDBをプラグインするCDBのルートであることを確認します。
「現在のコンテナについて」および「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が切断されていない場合は、切断します。
「CDBからのPDBの切断」を参照してください。
CREATE
PLUGGABLE
DATABASE
文を実行し、USING
句でXMLファイルを指定します。他の句が必要な場合はそれらを指定します。
「切断された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ファイルを使用して、salespdb
という名前の切断されたPDBを接続します。
例38-27 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-28 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-29 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-30 COPY、PATH_PREFIXおよびFILE_NAME_CONVERTの各句を使用して切断されたPDBを接続する方法
この例では、次の要因を想定しています。
新しいPDBは、CDB内に既存のPDBを作成するために使用された同じ切断されたPDBには基づいていません。したがって、AS
CLONE
句は必要ありません。
PDBの相対ディレクトリ・オブジェクト・パスは、特定のディレクトリへの相対パスとして扱われる必要があります。したがって、PATH_PREFIX
句が必要です。この例では、PDBの相対ディレクトリ・オブジェクト・パスは、/disk2/oracle/salesディレクトリおよびそのサブディレクトリへの相対パスとして扱われる必要があります。
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-31 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-32 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);
関連項目:
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
切断されたPDBの接続後に、ユーザーと表領域に関する特定のルールが適用されます。
切断されたPDBの接続後、次の内容が適用されます。
ソースPDBのデフォルト一時表領域を使用していたPDBのユーザーは、ターゲットPDBのデフォルト一時表領域を使用します。ソースPDB内のデフォルト以外の一時表領域を使用していたユーザーは、ターゲットPDB内の同じローカル一時表領域を引き続き使用します。「CDB内表領域の管理の概要」を参照してください。
ソースCDBに存在するが、ターゲットには存在しない、ユーザーが作成した共通ユーザーには、権限は共通して付与されていません。ただし、ターゲットCDBに共通ユーザーが存在し、PDBの共通ユーザーと同じ名前である場合、後者は前者にリンクされ、ターゲットCDBの共通ユーザーに付与された権限を持ちます。
ターゲットCDBに同じ名前の共通ユーザーがない場合、ユーザー・アカウントはターゲットPDBでロックされます。ロックされたこれらの各ユーザーに関して、次のオプションがあります。
PDBをクローニングし、ルートに接続し、同じ名前で共通ユーザーを作成します。PDBを読取り/書込みモードでオープンすると、ユーザーに共通して付与されているロールや権限の相違点が解決され、ユーザーをロック解除できます。ユーザーに対してローカルに付与されている権限やロールは、このプロセス中も変更されません。
PDBに新しいローカル・ユーザーを作成し、Data Pumpを使用しロックされたユーザーのデータを新しいローカル・ユーザーのスキーマにエクスポート/インポートできます。
ユーザーをロックしたままにできます。
ユーザーを削除できます。
関連項目:
共通ユーザーおよびローカル・ユーザーの詳細は、『Oracle Database概要』を参照してください。
CDBにおける共通ユーザーおよびローカル・ユーザーの作成方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
CDBでのOracle Data Pumpの使用の詳細は、『Oracle Databaseユーティリティ』を参照してください。
非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のドキュメントを参照してください。
DBMS_PDB
パッケージを非CDBで使用して、非CDBをCDBに接続できます。
この手法では、DBMS_PDB.DESCRIBE
プロシージャを使用して非CDBからPDBを作成します。
非CDBでDBMS_PDB.DESCRIBE
プロシージャを実行して、非CDBのデータベース・ファイルを記述するXMLファイルを生成します。XMLファイルが生成された後、切断されたPDBを接続するのと同じ方法で、非CDBを接続できます。具体的には、CREATE
PLUGGABLE
DATABASE
文でUSING
句を指定します。非CDBがCDBに接続された場合、その非CDBはPDBになります。
注意:
この手法を使用するには、非CDBがOracle Database 12cの非CDBである必要があります。
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を作成できるようにするには、その前に削除する必要があります。
関連項目:
PDBをCDBから切断できます。
PDBを切断すると、CDBへのPDBの関連付けが解除されます。PDBを異なるCDBに移動する場合や、PDBを使用する必要がなくなった場合は、PDBを切断します。
PDBを切断するには、ルートに接続し、ALTER
PLUGGABLE
DATABASE
文を使用して、切断後のPDBに関するメタデータが含まれるXMLファイルを指定します。このSQL文によってXMLファイルが作成され、このXMLファイルには、ターゲットCDBでCREATE
PLUGGABLE
DATABASE
文を使用してPDBに接続できるようにするのに必要な情報が含められます。
PDBは切断する前にクローズする必要があります。PDBをCDBから切断すると、切断されたPDBはマウント・モードになります。この切断操作によって、PDBのデータファイルに対して、PDBが正常に切断されたなどの、記録対象となるなんらかの変更が加えられます。依然としてCDBの一部であるため、切断されたPDBはCDB全体のRMANバックアップに含まれています。このような方法によるバックアップは、切断されたPDBが将来必要になった場合に備えてアーカイブするのに便利です。
PDBをCDBから完全に除去するために、PDBを削除できます。切断されたPDBに対してサポートされている唯一の操作は、PDBの削除です。PDBを再度同じCDBに接続できるようにするには、CDBから削除しておく必要があります。PDBは、CDBに接続している場合にのみ使用できます。
関連項目:
PDBのクローズの詳細は、「PDBのオープン・モードの変更」を参照してください
初期化パラメータおよび切断されたPDBの詳細は、「ALTER SYSTEM文を使用したPDBの変更」を参照してください
共通ユーザーおよびローカル・ユーザーの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
PDBを切断する場合は、前提条件を満たす必要があります。
次の前提条件を満たしている必要があります。
現在のユーザーにはSYSDBA
またはSYSOPER
管理権限が必要であり、その権限は共通で付与されているか、またはPDBでローカルに付与されている必要があります。ユーザーは、接続時にAS
SYSDBA
またはAS
SYSOPER
を使用して権限を行使する必要があります。
PDBは、少なくとも1回はオープンしている必要があります。
PDBはクローズされている必要があります。Oracle Real Application Clusters (Oracle RAC)環境では、PDBがすべてのインスタンスでクローズされている必要があります。
注意:
透過的データ暗号化で暗号化されているデータが含まれたPDBを切断する場合は、『Oracle Database Advanced Securityガイド』の指示に従います。
PDBを切断する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがルートであることを確認します。
「現在のコンテナについて」および「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
UNPLUG
INTO
句を使用してALTER
PLUGGABLE
DATABASE
文を実行し、切断するPDB、およびPDBのXMLメタデータ・ファイルの名前と場所を指定します。
例38-33 PDB salespdbの切断
次のALTER
PLUGGABLE
DATABASE
文により、PDB salespdb
が切断され、salespdb.xmlメタデータ・ファイルが/oracle/data/ディレクトリに作成されます。
ALTER PLUGGABLE DATABASE salespdb UNPLUG INTO '/oracle/data/salespdb.xml';
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で、現在のコンテナがルートであることを確認します。
「現在のコンテナについて」および「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
DROP
PLUGGABLE
DATABASE
文を実行し、削除するPDBを指定します。
例38-34 データファイルは保持したままPDB salespdbを削除する方法
DROP PLUGGABLE DATABASE salespdb KEEP DATAFILES;
例38-35 PDB salespdbおよびそのデータファイルを削除する方法
DROP PLUGGABLE DATABASE salespdb INCLUDING DATAFILES;
関連項目:
『Oracle Database SQL言語リファレンス』
RMANの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。