CREATE PLUGGABLE DATABASE
目的
CREATE
PLUGGABLE
DATABASE
文を使用すると、プラガブル・データベース(PDB)を作成できます。
この句で実行できるタスクは、次のとおりです。
-
シードをテンプレートとして使用したPDBの作成
create_pdb_from_seed
句を使用すると、マルチテナント・コンテナ・データベース(CDB)内のシードをテンプレートとして使用して、PDBを作成できます。シードに関連付けられた各ファイルが新しい場所にコピーされ、その後これらのファイルが新しいPDBに関連付けられます。 -
既存のPDBまたはCDB以外のクローニングによるPDBの作成
create_pdb_clone
句を使用すると、既存のPDBまたはCDB以外をコピーし、その後このコピーをCDBに接続することによって、PDBを作成できます。既存のPDBまたはCDB以外に関連付けられたファイルは新しい場所にコピーされ、このコピーされたファイルが新しいPDBに関連付けられます。 -
CDBへの切断されたPDBまたは非CDBの接続によるPDBの作成
create_pdb_from_xml
句を使用すると、XMLメタデータ・ファイルを使用して、切断されているPDBまたは非CDBをCDBに接続できます。 -
別のPDBを参照することによるプロキシPDBの作成。プロキシPDBは、参照先PDBへのフル機能アクセスを提供します。
create_pdb_clone
句を使用して、AS
PROXY
FROM
を指定すると、プロキシPDBを作成できます。 -
アプリケーション・コンテナ、アプリケーション・シードまたはアプリケーションPDBの作成
create_pdb_from_seed
、create_pdb_clone
またはcreate_pdb_from_xml clause
を使用します。アプリケーション・コンテナを作成するには、AS
APPLICATION
CONTAINER
句を指定する必要があります。アプリケーション・シードを作成するには、AS
SEED
句を指定する必要があります。
ノート:
新しいPDBがCDBで確立されるときに、新しいPDBによって提供されるサービスの名前が既存のサービス名と競合することがあります。競合が発生する可能性があるネームスペースは、そのCDBへのアクセスを可能にするリスナーのネームスペースです。このネームスペース内で、非CDBのデフォルト・サービス名、CDBのデフォルト・サービス名、PDBのデフォルト・サービス名およびユーザー定義サービス名の間で競合が発生することがあります。たとえば、同じコンピュータ・システム上に存在する複数のCDBが同じリスナーを使用しており、新たに確立されるPDBに含まれるサービス名がこれらのCDB内の別のPDBに含まれるサービス名と同じである場合、競合が発生します。
PDBを作成すると、競合する可能性のあるサービス名に新しい名前を指定できます。「service_name_convert」句を参照してください。PDBを作成した後でサービス名の競合が見つかった場合は、既存のサービス名との競合を引き起こすPDBに対する操作は試行しないでください。競合する名前がPDBのデフォルト・サービス名である場合は、そのPDBの名前を変更する必要があります。競合する名前がPDB内のユーザー作成サービス名である場合は、そのサービスを削除し、そのサービスのかわりに、競合しない名前を使用して、同じプロパティを持つ同じ用途のサービスを別に作成します。
関連項目:
-
PDBの概要は、『Oracle Database概要』を参照してください。
-
PDBの管理の詳細は、『Oracle Database管理者ガイド』を参照してください。
-
PDBの変更および削除の詳細は、「ALTER PLUGGABLE DATABASE」および「DROP PLUGGABLE DATABASE」を参照してください。
前提条件
CDBに接続している必要があります。CDBをオープンし、READ
WRITE
モードにしておく必要があります。
PDBまたはアプリケーション・コンテナを作成する場合は、現在のコンテナがルートである必要があります。また、共通に付与されているCREATE
PLUGGABLE
DATABASE
システム権限が必要です。
アプリケーション・シードまたはアプリケーションPDBを作成する場合は、現在のコンテナがアプリケーション・ルートである必要があり、アプリケーション・コンテナをオープンしてREAD
WRITE
モードにしておく必要があります。また、CREATE
PLUGGABLE
DATABASE
システム権限(共通に付与されている権限か、そのアプリケーション・コンテナでローカルに付与されている権限のいずれか)が必要です。
create_pdb_clone
句を指定するには:
-
src_pdb_name
が同じCDB内のPDBを指す場合は、新規PDBを作成するCDBのルートおよびクローンの作成元にするPDBにおけるCREATE
PLUGGABLE
DATABASE
システム権限が必要になります。 -
src_pdb_name
がリモート・データベース内のPDBまたはCDB以外を指す場合は、新規PDBを作成するCDBのルートにおけるCREATE
PLUGGABLE
DATABASE
システム権限が必要になります。また、src_pdb_name
が指すPDBまたはCDB以外におけるCREATE
PLUGGABLE
DATABASE
システム権限を、リモート・ユーザーが保有している必要があります。
PDB作成の前提条件の詳細は、Oracle Multitenant管理者ガイドを参照してください。
構文
create_pluggable_database::=
(create_pdb_from_seed::=、create_pdb_clone::=、create_pdb_from_xml::=)
create_pdb_from_seed::=
(pdb_dba_roles::=、parallel_pdb_creation_clause::=、default_tablespace::=、file_name_convert::=、service_name_convert::=、pdb_storage_clause::=、path_prefix_clause::=、tempfile_reuse_clause::=、user_tablespaces_clause::=、standbys_clause::=、logging_clause::=、create_file_dest_clause::=)
pdb_dba_roles::=
parallel_pdb_creation_clause::=
default_tablespace::=
file_name_convert::=
service_name_convert::=
path_prefix_clause::=
tempfile_reuse_clause::=
user_tablespaces_clause::=
standbys_clause::=
logging_clause::=
create_file_dest_clause::=
create_pdb_clone::=
(parallel_pdb_creation_clause::=、default_tablespace::=、pdb_storage_clause::=、file_name_convert::=、service_name_convert::=、path_prefix_clause::=、tempfile_reuse_clause::=、user_tablespaces_clause::=、standbys_clause::=、logging_clause::=、create_file_dest_clause::=、keystore_clause::=、pdb_refresh_mode_clause::=)
keystore_clause::=
pdb_refresh_mode_clause::=
create_pdb_from_xml::=
(source_file_name_convert::=、source_file_directory::=、file_name_convert::=、service_name_convert::=、default_tablespace::=、pdb_storage_clause::=、path_prefix_clause::=、tempfile_reuse_clause::=、user_tablespaces_clause::=、standbys_clause::=、logging_clause::=、create_file_dest_clause::=)
source_file_name_convert::=
source_file_directory::=
セマンティクス
pdb_name
作成するPDBの名前を指定します。名前は、「データベース・オブジェクトのネーミング規則」に指定されている要件を満たしている必要があります。PDB名の最初の文字は英数字にする必要があります。残りの文字には英数字またはアンダースコア(_
)を使用できます。
PDB名はCDB内で一意にする必要があります。また、そのインスタンスが特定のリスナーを介してアクセスされるすべてのCDBのスコープ内で一意にする必要があります。
AS APPLICATION CONTAINER
この句を指定すると、アプリケーション・コンテナを作成できます。
関連項目:
アプリケーション・コンテナの作成ステップの詳細は、『Oracle Database管理者ガイド』を参照してください。
AS SEED
この句を指定すると、アプリケーション・シードを作成できます。データベースによってシードにapplication_container_name
$SEED
形式の名前が付けられます。
アプリケーション・コンテナは最大1つのアプリケーション・シードを持つことができます。アプリケーション・シードはオプションですが、存在する場合は、アプリケーション・コンテナの要件を満たすアプリケーションPDBを迅速に作成するために使用できます。アプリケーション・シードにより、そこから作成されるアプリケーションPDBを瞬時にプロビジョニングできます。
関連項目:
アプリケーション・シードの作成ステップの詳細は、『Oracle Database管理者ガイド』を参照してください。
create_pdb_from_seed
この句を使用すると、CDB内のシードをテンプレートとして使用して、PDBを作成できます。
関連項目:
シードを使用したPDBの作成ステップの詳細は、『Oracle Database管理者ガイド』を参照してください。
ADMIN USER
この句を使用して、PDBに対する管理タスクを実行するために必要な権限を持つ管理ユーザーを作成できます。admin_user_name
に、作成するユーザーの名前を指定します。IDENTIFIED BY
句を使用すると、admin_user_name
のパスワードを指定できます。PDBにローカル・ユーザーが作成され、このユーザーにPDB_DBA
ローカル・ロールが付与されます。
pdb_dba_roles
この句を使用すると、PDB_DBA
ロールに1つ以上のロールを付与できます。この句を使用して、PDBの管理ユーザーが必要とする権限を付与してください。role
には、事前定義されたロールを指定します。事前定義されているロールのリストは、『Oracle Databaseセキュリティ・ガイド』を参照してください。
また、GRANT
文を使用して、PDBの作成後にPDB_DBA
ロールにロールを付与することもできます。PDB_DBA
ロールに適切な権限を付与するまでは、SYS
ユーザーおよびSYSTEM
ユーザーがPDB上で管理タスクを実行できます。
parallel_pdb_creation_clause
この句はCDBに、パラレル実行サーバーを使用して新しいPDBのデータファイルを新しい場所にコピーするよう指示します。これにより、PDBの作成が高速化されることがあります。
PARALLEL
PARALLEL
を指定すると、CDBは使用するパラレル実行サーバーの数を自動的に選択します。COMPATIBLE
初期化パラメータが12
.2
以上に設定されている場合、これがデフォルトです。
PARALLEL integer
integerを使用して、使用するパラレル実行サーバーの数を指定します。現在のデータベースのロードおよび使用可能なパラレル実行サーバーの数によっては、CDBはこの設定を無視できます。0または1を指定した場合、CDBはPDBの作成をパラレル化しません。これにより、PDBの作成時間が長くなることがあります。
default_tablespace
この句を指定すると、smallfile表領域が作成され、これがPDBのデフォルトの永続表領域として設定されます。デフォルトの表領域は、Oracle Databaseによって、別の永続表領域が指定されていないSYSTEM
以外のユーザーに割り当てられます。default_tablespace
句のセマンティクスは、CREATE
DATABASE
文と同じです。詳細は、「CREATE
DATABASE
」の「default_tablespace」を参照してください。
pdb_storage_clause
-
MAXSIZE
を使用すると、PDB内のすべての表領域で使用可能にする記憶域の容量を、size_clause
で指定した値に制限できます。この制限には、PDBに属する表領域のデータファイルと一時ファイルのサイズも含まれます。MAXSIZE
UNLIMITED
を指定すると、容量は無制限になります。 -
MAX_AUDIT_SIZE
を使用して、PDBからあふれた統合監査OS (.bin
形式)ファイルで使用できる記憶域の量を、size_clause
で指定された値に制限します。MAX_AUDIT_SIZE
UNLIMITED
を指定すると、容量は無制限になります。 -
MAX_DIAG_SIZE
を使用して、PDBで使用できる自動診断リポジトリ(ADR)の診断(トレース・ファイルおよびインシデント・ダンプ)用の記憶域の量を、size_clause
で指定された値に制限します。MAX_DIAG_SIZE
UNLIMITED
を指定すると、容量は無制限になります。
この句を省略するかSTORAGE
UNLIMITED
を指定すると、PDBの記憶域には制限がなくなります。これは、STORAGE
(MAXSIZE
UNLIMITED
MAX_AUDIT_SIZE
UNLIMITED
MAX_DIAG_SIZE
UNLIMITED
)を指定することと同じになります。
file_name_convert
この句を使用して、PDBのファイル(データファイルやウォレット・ファイルなど)の名前をデータベースでどのように作成するかを決定できます。
-
filename_pattern
には、シードに関連付けられたファイル名(シードを使用してPDBを作成する場合)、ソースPDBに関連付けられたファイル名(PDBをクローニングする場合)またはXMLファイル内にリストされたファイル名(PDBをCDBに接続する場合)に含まれる文字列を指定します。 -
replacement_filename_pattern
には、置換文字列を指定します。
新規PDBに関連付けられたファイル名の生成時に、filename_pattern
がreplacement_filename_pattern
で置換されます。
Oracle Managed Filesで管理されているファイルまたはディレクトリと一致するファイル名のパターンは指定できません。
FILE_NAME_CONVERT
=
NONE
を指定できます。これは、この句を省略した場合と同じになります。この句を省略すると、データベースはまずOracle管理ファイルを使用してファイル名を生成しようとします。Oracle Managed Filesを使用している場合は、PDB_FILE_NAME_CONVERT
初期化パラメータを使用してファイル名が生成されます。このパラメータが設定されていないと、エラーが発生します。
service_name_convert
この句を使用して、ソースPDBのサービス名に基づいて新しいPDBのユーザー定義サービス名を変更します。新しいPDBのサービス名がCDB内の既存のサービス名と競合する場合は、プラグイン違反が発生することがあります。この句を使用すると、これらの違反を回避できます。
-
service_name
には、PDBシード(アプリケーション・シードを使用してアプリケーション・コンテナにPDBを作成する場合)またはソースPDB (PDBをクローニングする場合またはPDBをCDBに接続する場合)内のサービス名を指定します。 -
replacement_service_name
には、このサービスの置換名を指定します。
Oracle Databaseでは、作成されるPDBのサービスに置換サービス名を使用します。
SERVICE_NAME_CONVERT
=
NONE
を指定できます。これは、この句を省略した場合と同じになります。
service_name_convertの制限事項
service_name_convert
句には、次の制限事項があります。
-
PDBのデフォルトのサービス名は変更できません。デフォルト・サービスの名前はPDBと同じになります。
-
CDBシードにはユーザー定義サービスがないため、
create_pdb_from_seed
句を使用して、CDBシードからPDBを作成する場合は、この句を指定できません。ただし、create_pdb_from_seed
句を使用して、アプリケーション・シードからアプリケーションPDBを作成する場合は、この句を指定できます。
path_prefix_clause
この句を使用して、PDBに関連付けられたディレクトリ・オブジェクトのファイル・パスを、指定したディレクトリまたはそのサブディレクトリに確実に制限できます。また、この句により、PDBに関連付けられているファイル(CREATE
PFILE
文で作成されたファイル)は指定されたディレクトリ(PDBのOracle XMLリポジトリ)およびOracleウォレットのエクスポート・ディレクトリに制限されます。PDBの作成後は、この句を変更することはできません。この句は、Oracle Managed Filesによって作成されたファイルには影響しません。
-
path_name
には、オペレーティング・システムのディレクトリの絶対パス名を指定します。一重引用符が必要です。その結果、パス名の大/小文字が区別されます。Oracle Databaseでは、PDBに関連付けられているすべてのファイル・パスの接頭辞としてpath_name
が使用されます。相対パスが付加されたときに結果として生成されるパス名が正しい書式で形成されるように
path_name
を指定してください。たとえば、UNIXシステムでは、次に示すようにpath_name
の最後にフォワード・スラッシュ(/
)を使用するようにしてください。PATH_PREFIX = '/disk1/oracle/dba/salespdb/'
-
directory_object_name
には、CDBルート(CDB$ROOT
)に存在するディレクトリ・オブジェクトの名前を指定します。ディレクトリ・オブジェクトは、PATH_PREFIX
に使用する絶対パスを指します。 -
PATH_PREFIX
=
NONE
を指定すると、PDBに関連付けられてたディレクトリ・オブジェクトの相対パスが絶対パスとして処理され、特定のディレクトリに制限されなくなります。
path_prefix_clause
の省略は、PATH_PREFIX
=
NONE
の指定と同じです。
path_prefix_clause
がPDBに指定されると、PATH_PREFIX
文字列がPDBのすべてのローカル・ディレクトリ・オブジェクトに接頭辞として常に追加されるため、既存のディレクトリ・オブジェクトが適切に機能しない場合があります。path_prefix_clause
は、ユーザーが作成したディレクトリ・オブジェクトにのみ適用されます。これは、Oracleが提供するディレクトリ・オブジェクトには適用されません。
tempfile_reuse_clause
PDBを作成すると、一時ファイルが新しいPDBと関連付けられます。PDBの作成方法によっては、一時ファイルはすでに存在し、使用されている場合もあります。
TEMPFILE
REUSE
を指定すると、新しいPDBに関連付けられている一時ファイルがすでに存在する場合は、それをフォーマットして再利用できます。この句を指定しており、一時ファイルが存在しない場合は、データベースで一時ファイルが作成されます。
TEMPFILE
REUSE
を指定しない場合、新しいPDBに関連付ける一時ファイルがすでに存在すると、データベースからエラーが戻され、PDBは作成されません。
user_tablespaces_clause
この句を使用すると、新しいPDBで使用可能な表領域を指定できます。SYSTEM
、SYSAUX
およびTEMP
表領域はすべてのPDBで使用可能であり、この句に指定することはできません。
この句を使用すると、複数のスキーマのデータを異なるPDBに分けることができます。たとえば、非CDBをPDBに移動する場合、その非CDBに多数のスキーマがあって、それぞれ異なるアプリケーションをサポートしているとき、非CDBで各スキーマが別個の表領域を使用していたとすると、この句を使用して各スキーマに属するデータを別個のPDBに分けることができます。
-
tablespace
を指定して、新しいPDBで表領域を使用可能にします。表領域を複数指定する場合は、カンマ区切りのリストにします。 -
ALL
を指定して、新しいPDBですべての表領域を使用可能にします。これはデフォルトです。 -
ALL
EXCEPT
を指定して、指定された表領域を除くすべての表領域を新しいPDBで使用可能にします。 -
NONE
を指定して、SYSTEM
、SYSAUX
およびTEMP
表領域のみ新しいPDBで使用可能にします。
CDBの互換性レベルが12.2
以上の場合、この句によって除外される表領域は新しいPDBにオフラインで作成され、これらにデータファイルは関連付けられません。CDBの互換性レベルが12.2
未満の場合、この句で除外される表領域は新しいPDBでオフラインとなり、このような表領域に属するデータファイルはすべて無名でオフラインとなります。
{ SNAPSHOT COPY | NO DATA }
これらの句は、create_pdb_clone
句でPDBをクローニングする場合にのみ適用されます。非CDBをクローニングする場合には適用されません。デフォルトでは、PDBのクローニングに指定された設定に応じて、新しいPDBで使用可能な各表領域が作成されます。これらの句により、これらの設定を次のようにオーバーライドできます。
-
SNAPSHOT
COPY
- 記憶域スナップショットを使用して表領域をクローニングします。 -
NO
DATA
- 表領域のデータ・モデル定義をクローニングしますが、表領域のデータはクローニングしません。
{ COPY | MOVE | NOCOPY }
これらの句は、create_pdb_from_xml
句でPDBを接続する場合に適用されます。デフォルトでは、PDBの接続に指定された設定に応じて、新しいPDBで使用可能な各表領域が作成されます。これらの句により、これらの設定を次のようにオーバーライドできます。
-
COPY
- 表領域のファイルを新しい場所にコピーします。 -
MOVE
- 表領域のファイルを新しい場所に移動します。 -
NOCOPY
- 表領域のファイルを新しい場所にコピーまたは移動しません。
standbys_clause
この句を使用して、新しいPDBを1つ以上のスタンバイCDBに含めるかどうかを指定します。PDBをスタンバイCDBに含める場合、スタンバイ・リカバリ中に、スタンバイCDBはPDBのデータファイルを探します。データファイルが見つからない場合、スタンバイ・リカバリが停止するため、リカバリが再開する前にデータファイルを正しい場所にコピーする必要があります。
-
cdb_name
を指定して、新しいPDBを指定したスタンバイCDBに含めます。カンマ区切りのリストで、複数のスタンバイCDB名を指定できます。 -
ALL
を指定して、すべてのスタンバイCDBの新しいPDBを含めます。これはデフォルトです。 -
ALL
EXCEPT
を指定して、新しいPDBを指定したスタンバイCDB以外のすべてのスタンバイCDBに含めます。 -
NONE
を指定して、すべてのスタンバイCDBの新しいPDBを除外します。PDBがすべてのスタンバイCDBから除外される場合、PDBのデータファイルは名前がなく、すべてのスタンバイCDBでオフラインとマークされます。PDBのデータファイルがスタンバイに見つからない場合、スタンバイ・リカバリは停止しません。PDBの作成後に新しいスタンバイCDBをインスタンス化する場合、新しいスタンバイCDBのリカバリ用のPDBを明示的に無効化する必要があります。
データファイルを正しい場所にコピーし、PDBをオンラインにし、リカバリ用に有効とマークすることによって、スタンバイCDBから除外した後にスタンバイCDBのPDBを有効化できます。
logging_clause
この句を使用して、PDB内で作成する表領域のデフォルトのロギング属性を指定します。ロギング属性は、特定のDML操作がREDOログ・ファイルで記録されるかどうか(LOGGING
またはNOLOGGING
)を制御します。デフォルトはLOGGING
です。
表領域を作成する場合、CREATE
TABLESPACE
文のlogging_clauseを指定して、デフォルトのロギング属性をオーバーライドできます。
この句の詳細は、「logging_clause」を参照してください。
create_file_dest_clause
デフォルトでは、新しく作成されたPDBは、ルートからOracle Managed Files設定を継承します。ルートがOracle Managed Filesを使用する場合、PDBもOracle Managed Filesを使用します。PDBは、Oracle Managed Filesのベース・ファイル・システム・ディレクトリをルートと共有し、PDBのGUIDで名前が付けられた固有のサブディレクトリがあります。ルートがOracle Managed Filesを使用しない場合、PDBもOracle Managed Filesを使用しません。
この句を使用すると、デフォルトの動作をオーバーライドできます。PDBのOracle Managed Filesを有効化または無効化できます。PDBのファイルの別のベース・ファイル・システム・ディレクトリまたはOracle ASMディスク・グループを指定します。
-
NONE
を指定して、PDBのOracle Managed Filesを無効化します。 -
directory_path_name
またはdiskgroup_name
を指定して、PDBのOracle Managed Filesを有効化します。directory_path_name
を指定して、PDBのファイルのベース・ファイル・システム・ディレクトリを指定します。オペレーティング・システム・ディレクトリの完全パス名を指定します。ディレクトリが存在する必要があり、Oracleプロセスにはディレクトリに対する適切な権限が必要です。一重引用符が必要です。その結果、パス名の大/小文字が区別されます。diskgroup_name
を指定して、PDBのファイルのデフォルトのOracle ASMディスク・グループを指定します。
NONE
以外の値を指定する場合、データベースはPDBのSCOPE=SPFILE
を使用したDB_CREATE_FILE_DEST
初期化パラメータを暗黙的に設定します。
HOSTおよびPORT
これらの句は、プロキシPDBから参照するPDBを作成する場合にのみ役立ちます。このタイプのPDBは、参照先PDBと呼ばれます。
参照先PDBを作成する場合:
-
リスナーの名前がPDBのホスト名と異なる場合は、
HOST
句を指定する必要があります。hostname
には、リスナーの完全修飾ドメイン名を指定します。hostname
は一重引用符で囲みます。たとえば、'myhost.example.com'
です。Oracle Real Application Clusters (Oracle RAC)環境では、PDBのいずれかのホストを
hostname
に指定できます。 -
リスナーのポート番号が1521でない場合は、
PORT
句を指定する必要があります。number
には、リスナーのポート番号を指定します。
プロキシPDBは、データベース・リンクを使用して、その参照先PDBとの通信を確立します。通信が確立した後、プロキシPDBでは、データベース・リンクを使用しないで参照先PDBと直接通信します。プロキシPDBが正常に機能するためには、参照先PDBのリスナーのホスト名およびポート番号が正しい必要があります。
関連項目:
プロキシPDBの作成の詳細は、「create_pdb_clone
」の「AS PROXY FROM」句を参照してください。
create_pdb_clone
この句を使用すると、ソースとターゲットPDBのクローニングによって、新しいPDBを作成できます。ソースは、ローカルCDBのPDB、リモートCDBのPDB、非CDBのいずれでもかまいません。ターゲットPDBはソースのクローンです。
ソースがローカルCDBのPDBである場合、ソースPDBを接続または切断できます。ソースがリモートCDBのPDBである場合、ソースPDBを接続する必要があります。
ソースがCDB以外またはリモートCDBのPDBである場合、ソースおよびターゲットPDBを含むCDBは次の要件を満たす必要があります。
-
エンディアン形式が同じであること。
-
互換性のある文字セットおよび各国語文字セットが設定されていること。これは次のことを意味します。
-
ソース文字セット内の各文字がローカルCDBの文字セットで使用可能であること。
-
ソースの文字セット内の各文字のコード・ポイント値がローカルCDBの文字セットのコード・ポイント値と同じであること。
-
-
これらには、同じセットのデータベース・オプションがインストールされている必要があります。
ソース非CDBまたはPDBのデフォルト一時表領域を使用していたPDBのユーザーは、新しいPDBのデフォルト一時表領域を使用します。非CDBまたはPDB内のデフォルト以外の一時表領域を使用していたユーザーは、新しいPDB内の同じローカル一時表領域を引き続き使用します。
関連項目:
既存のPDBのクローニングによるPDBの作成ステップの詳細は、『Oracle Database管理者ガイド』を参照してください。
FROM
この句を使用して、ソースPDBまたはCDB以外を指定します。ソースに関連付けられた各ファイルが新しい場所にコピーされ、その後これらのファイルが新しいPDBに関連付けられます。
ソースPDB または非CDBはクローズできません。次のようにオープンできます。
-
ソースPDB (ソースCDB)またはソース非CDBを含むCDBが
ARCHIVELOG
モードおよびローカルUNDOモードの場合、ソースPDBまたはソース非CDBはREAD
WRITE
モードでオープンでき、クローニング操作中に完全に機能します。このことは、ホットPDBクローニングと呼ばれます。 -
ソースCDBまたはソース非CDBが
ARCHIVELOG
モードでない場合、ソースPDBまたは非CDBはREAD
ONLY
でオープンする必要があります。
ソースPDBまたは非CDBを次のように指定します。
-
ソースがローカルCDBのPDBである場合、
src_pdb_name
を使用して、ソースPDBの名前を指定します。src_pdb_name
にはPDB$SEED
は指定できません。かわりに、create_pdb_from_seed句を使用することによって、シードをテンプレートとして使用してPDBを作成します。 -
ソースがリモートCDBのPDBである場合、
src_pdb_name
を使用してソースPDBの名前を指定し、dblink
を使用してリモートCDBに接続するために使用するデータベース・リンクの名前を指定します。 -
ソースがCDB以外の場合、
NON$CDB@
dblink
を指定します。dblink
は、CDB以外に接続するために使用するデータベース・リンクの名前です。
AS PROXY FROM
この句を使用すると、参照PDBと呼ばれる別のPDBを参照してプロキシPDBを作成できます。参照先PDBは、プロキシPDBと同じCDBまたは別のCDBに存在できます。ローカル・プロキシPDBは参照PDBと同じCDBに含まれており、リモート・プロキシPDBは参照PDBとは異なるCDBに含まれています。
src_pdb_name
@
dblink
に、参照PDBを指定します。
関連項目:
プロキシPDBの作成ステップの詳細は、『Oracle Database管理者ガイド』を参照してください。
default_tablespace
この句を使用すると、PDBのデフォルトの永続表領域を指定できます。デフォルトの表領域は、Oracle Databaseによって、別の永続表領域が指定されていないSYSTEM
以外のユーザーに割り当てられます。ソースPDBまたは非CDBにtablespaceがすでに存在している必要があります。この表領域はすでに存在するため、create_pdb_clone
句でPDBを作成する場合は、DATAFILE
句またはextent_management_clause
を指定できません。
pdb_storage_clause
この句を使用して、新規PDBの記憶域制限値を指定します。この句のセマンティクスの詳細は、「pdb_storage_clause」を参照してください。
file_name_convert
この句を使用して、新しいPDBのファイルの名前をデータベースでどのように作成するかを決定できます。この句のセマンティクスの詳細は、「file_name_convert」を参照してください。
service_name_convert
この句を使用して、データベースで新しいPDBのサービス名を変更する方法を決定します。この句のセマンティクスの詳細は、「service_name_convert::=」を参照してください。
path_prefix_clause
この句を使用して、PDBに関連付けられたすべてのディレクトリ・オブジェクト・パスを、指定したディレクトリまたはそのサブディレクトリに確実に制限できます。この句のセマンティクスの詳細は、「path_prefix_clause」を参照してください。
tempfile_reuse_clause
TEMPFILE
REUSE
を指定すると、新しいPDBに関連付けられている一時ファイルがすでに存在する場合は、それをフォーマットして再利用できます。このセマンティクスの詳細は、「tempfile_reuse_clause」を参照してください。
SNAPSHOT COPY
PDBをクローニングする場合のみ、SNAPSHOT
COPY
を指定できます。CDB以外をクローニングする場合、この句はサポートされていません。ソースPDBは、ローカルCDBとリモートCDBのどちらに存在してもかまいません。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文を使用してキーストアに格納されている必要があります。
SNAPSHOT
COPY
句を使用してソースPDBのクローンを作成する場合は、クローンが存在するかぎり、次の制限がソースPDBに適用されます。
-
切断できません。
-
削除できません。
SNAPSHOT
COPY
句を使用して作成したPDBのクローンは、切断できません。削除のみ可能です。SNAPSHOT
COPY
句を使用して作成したクローンを切断しようとすると、エラーが発生します。
Oracle Real Application Clusters (Oracle RAC)環境でSNAPSHOT
COPY
句を使用して作成されたPDBの場合、PDBのファイルにアクセスする必要がある各ノードは、マウントされている必要があります。LinuxまたはUNIXプラットフォームで実行されているOracle RACデータベースには、基礎となるNFSボリュームがマウントされている必要があります。Oracle RACデータベースがWindowsプラットフォームで実行され、かつ、共有記憶域にDirect NFSを使用している場合は、作成したボリュームexport
およびmount
のエントリを含むすべてのノード上のoranfstab
ファイルを更新する必要があります。
記憶域クローンには、新しいPDBのGUIDを使用して名前およびタグが付けられます。DBA_PDB_HISTORY
ビューのCLONETAG
列を問い合せて、記憶域クローンのクローン・タグを表示できます。
keystore_clause
ソース・データベースに暗号化データまたはキーストア・セットがある場合は、この句を指定します。keystore_password
には、そのキーストアのパスワードを指定します。ソース・データベースで自動ログイン・ソフトウェア・キーストアを使用している場合でも、このパスワードを入力する必要があります。ソース・データベースに暗号化データがあるかどうかを確認するには、DBA_ENCRYPTED_COLUMNS
データ・ディクショナリ・ビューまたはV$ENCRYPTED_TABLESPACES
動的パフォーマンス・ビューを問い合せます。
pdb_refresh_mode_clause
REFRESH
MODE
句は、PDBをクローニングする場合にのみ適用されます。ソースPDBはリモートCDBに含まれている必要があります。つまり、FROM
src_pdb_name
@
dblink
句を使用してソースPDBを指定する必要があります。
この句を使用すると、PDBのリフレッシュ・モードを指定できます。この句を使用すると、リフレッシュ可能PDBを作成できます。ソースPDBの変更は、リフレッシュ可能PDBに手動または自動で伝播できます。この操作はリフレッシュと呼ばれます。次のリフレッシュ・モードを指定できます。
-
MANUAL
- このモードでは、ALTER
PLUGGABLE
DATABASE
REFRESH
文を発行してリフレッシュ可能PDBをいつでも手動でリフレッシュできます。 -
EVERY
number
MINUTES
- このモードは、リフレッシュ可能PDBをnumber
の間隔(分単位)でリフレッシュするようデータベースに指示します。このモードでは、ALTER
PLUGGABLE
DATABASE
REFRESH
文を発行していつでもPDBを手動でリフレッシュすることもできます。 -
NONE
- このモードを指定した場合、クローンPDBはリフレッシュ可能PDBではありません。データベースでPDBを自動的にリフレッシュすることはできず、PDBを手動でリフレッシュすることもできません。このモードを指定した場合、後からPDBをリフレッシュ可能PDBに変更できません。これはデフォルトです。
リフレッシュ可能PDBは、READ
ONLY
モードでのみオープンできます。リフレッシュが発生するには、リフレッシュ可能PDBをクローズする必要があります。クローズされていない場合、手動リフレッシュを実行しようとするとエラーが発生します。クローズされていない場合、データベースで自動リフレッシュが試行されると、リフレッシュは次回のスケジュール・リフレッシュまで延期されます。
関連項目:
-
PDBの手動リフレッシュの詳細は、「
ALTER
PLUGGABLE
DATABASE
」の「REFRESH」を参照してください。 -
PDBのリフレッシュ・モードの変更の詳細は、「
ALTER
PLUGGABLE
DATABASE
」の「pdb_refresh_mode_clause」を参照してください。 -
リフレッシュ可能PDBの詳細は、『Oracle Database管理者ガイド』を参照してください。
RELOCATE
RELOCATE
句を使用すると、あるCDBから別のCDBにPDBを再配置できます。データベースはソースPDBをターゲットPDBにクローニングした後で、ソースPDBを削除します。また、データベースはPDBに関連付けられているファイルを新しい場所に移動させます。この操作によって、最小の停止時間で最も迅速にPDBを再配置できます。PDBの停止時間はほとんど、PDBのファイルを古い場所から新しい場所にコピーするのに要する時間です。再配置操作中、ソースPDBはREAD
WRITE
モードでオープンでき、すべての機能を利用できます。
create_pdb_clone
句では、FROM
src_pdb_name
@
dblink
構文を使用して、ソースPDBの場所を指定する必要があります。src_pdb_name
には、ソースPDBの名前を指定します。dblink
には、ソースPDBの場所を示すデータベース・リンクを指定します。データベース・リンクは、PDBが再配置されるCDBに作成する必要があります。これは、リモートCDBのルートまたはリモートPDBのいずれかに接続できます。
関連項目:
PDBを再配置するステップの詳細は、『Oracle Database管理者ガイド』を参照してください。
NO DATA
PDBをクローニングする場合のみ、NO
DATA
句が適用されます。この句は、PDBのデータではなくソースPDBのデータ・モデル定義のクローニングを指定します。ソースPDBのディクショナリ・データはクローニングされますが、ソースPDBのユーザーが作成した表および索引データはすべて破棄されます。
NO DATA句の制限事項
NO
DATA
句には、次の制限事項があります。
-
CDB以外をクローニングする場合、
NO
DATA
を指定できません。 -
ソースPDBにクラスタ表、クラスタ化表、アドバンスト・キューイング(AQ)表、索引構成表または抽象データ型列が含まれる場合、
NO
DATA
を指定できません。
HOSTおよびPORT
これらの句は、プロキシPDBから参照するPDBを作成する場合にのみ役立ちます。このタイプのPDBは、参照先PDBと呼ばれます。これらの句のセマンティクスの詳細は、「HOSTおよびPORT」を参照してください。
create_pdb_from_xml
この句を使用すると、切断されたPDBまたは非CDB(ソース・データベース)をCDB(ターゲットCDB)に接続することによって、PDBを作成できます。ソース・データベースが切断されたPDBである場合は、ターゲットCDBから切断されたものでも、別のCDBから切断されたものでもかまいません。
ソース・データベースとターゲットCDBが次の要件を満たしている必要があります。
-
エンディアン形式が同じであること。
-
互換性のある文字セットおよび各国語文字セットが設定されていること。これは次のことを意味します。
-
ソース・データベースの文字セット内の各文字がターゲットCDBの文字セットで使用可能であること。
-
ソース・データベースの文字セット内の各文字のコード・ポイント値がターゲットCDBの文字セットのコード・ポイント値と同じであること。
-
-
これらには、同じセットのデータベース・オプションがインストールされている必要があります。
関連項目:
-
CDBへの切断されたPDBの接続によるPDBの作成ステップおよび非CDBを使用したPDBの作成ステップの詳細は、『Oracle Database管理者ガイド』を参照してください。
-
DBMS_PDB
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
AS CLONE
この句は、同じデータファイル・セットを使用して作成されたPDBがターゲットCDBにすでに含まれている場合にのみ指定します。ソース・ファイルは切断されたPDBとして維持され、再使用可能です。また、AS
CLONE
句を指定すると、DBIDやGUIDなどの新しい識別子が新しいPDB用に確実に生成されるようになります。
USING
この句を使用すると、接続しているソース・データベースに関する情報を含むファイルを指定できます。filename
には、ファイルのフルパス名を指定します。次のいずれかの方法でこのファイルを取得できます。
-
ソース・データベースが切断されたPDBである場合、ファイルは
ALTER
PLUGGABLE
DATABASE
のpdb_unplug_clause
によって次のように作成されています。-
ファイル名が拡張子.xmlで終わる場合は、PDBに関するメタデータを含むXMLファイルです。この場合、XMLメタデータ・ファイルとPDBのデータファイルはCDBにアクセスできる場所にある必要があります。
-
ファイル名が拡張子.pdbで終わる場合は、PDBアーカイブ・ファイルです。これは、PDBに関するメタデータを含むXMLファイルとPDBのデータファイルを含む、圧縮されたファイルです。PDBアーカイブ・ファイルは、CDBにアクセスできる場所に存在する必要があります。.pdbアーカイブ・ファイルを使用する場合は、PDBの接続時にこのファイルが抽出され、PDBのファイルは.pdbアーカイブ・ファイルと同じディレクトリに配置されます。したがって、
source_file_directory
句は必要ありません。
-
-
ソース・データベースが非CDBの場合、
DBMS_PDB
パッケージを使用してXMLメタデータ・ファイルを作成する必要があり、XMLメタデータ・ファイルとソース非CDBのデータファイルがCDBにアクセスできる場所にある必要があります。
関連項目:
-
ALTER
PLUGGABLE
DATABASE
のpdb_unplug_clause -
DBMS_PDB
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
source_file_name_convert
XMLファイルの内容がソース・ファイルの場所を正確に記述していない場合にのみ、この句を指定してください。ソース・データベースを接続するために使用する必要があるファイルが、XMLファイルに指定されている場所に今ではもう存在しない場合は、この句を使用して、指定されているファイル名を実際のファイル名にマップします。
-
filename_pattern
には、XMLファイルで指定されたファイルの場所の文字列を指定します。 -
replacement_filename_pattern
には、PDBを作成するために使用する必要のあるファイルが含まれる実際の場所の文字列を指定します。
ソース・データベース・ファイルの検索時に、filename_pattern
がreplacement_filename_pattern
に置換されます。
Oracle Managed Filesで管理されているファイルまたはディレクトリと一致するファイル名のパターンは指定できません。
PDBの作成に使用する必要のあるファイルが、XMLファイルで指定された場所に存在するときには、この句を省略してもかまいません。また、SOURCE_FILE_NAME_CONVERT=NONE
を指定することもできます。
source_file_directory
XMLファイルの内容がソース・ファイルの場所を正確に記述しておらず、かつソース・ファイルがすべて単一ディレクトリに存在する場合にのみ、この句を指定してください。この句は、大量のデータ・ファイルがあり、source_file_name_convert
句を使用した各ファイルの置換ファイル名パターンの指定が現実的でない場合に便利です。
-
directory_path_name
には、ソース・ファイルを含むディレクトリの絶対パスを指定します。切断されたPDBのXMLファイルに基づいて適切なファイルを検索するためにディレクトリがスキャンされます。
この句は、Oracle Managed Filesを使用する構成とOracle Managed Filesを使用しない構成に対して指定できます。
PDBの作成に使用する必要のあるファイルが、XMLファイルで指定された場所に存在するときには、この句を省略してもかまいません。また、SOURCE_FILE_DIRECTORY=NONE
を指定することもできます。
COPY
XMLファイルにリストされたファイルを新しい場所にコピーして、新規PDB用に使用する場合は、COPY
を指定します。これはデフォルトです。オプションのfile_name_convert
句を使用して、新しいファイル名でパターンの置換を使用することができます。この句のセマンティクスの詳細は、「file_name_convert」を参照してください。
MOVE
XMLファイルにリストされたファイルを新しい場所にコピーではなく移動して、新規PDB用に使用する場合は、MOVE
を指定します。オプションのfile_name_convert
句を使用して、新しいファイル名でパターンの置換を使用することができます。この句のセマンティクスの詳細は、「file_name_convert」を参照してください。
service_name_convert
この句を使用して、データベースで新しいPDBのサービス名を変更する方法を決定します。この句のセマンティクスの詳細は、「service_name_convert::=」を参照してください。
default_tablespace
この句を使用すると、PDBのデフォルトの永続表領域を指定できます。デフォルトの表領域は、Oracle Databaseによって、別の永続表領域が指定されていないSYSTEM
以外のユーザーに割り当てられます。tablespace
がすでにソース・データベースに存在している必要があります。この表領域はすでに存在するため、create_pdb_from_xml
句でPDBを作成する場合は、DATAFILE
句またはextent_management_clause
を指定できません。
pdb_storage_clause
この句を使用して、新規PDBの記憶域制限値を指定します。この句のセマンティクスの詳細は、「pdb_storage_clause」を参照してください。
path_prefix_clause
この句を使用して、PDBに関連付けられたすべてのディレクトリ・オブジェクト・パスを、指定したディレクトリまたはそのサブディレクトリに確実に制限できます。この句のセマンティクスの詳細は、「path_prefix_clause」を参照してください。
tempfile_reuse_clause
TEMPFILE
REUSE
を指定すると、新しいPDBに関連付けられている一時ファイルがすでに存在する場合は、それをフォーマットして再利用できます。このセマンティクスの詳細は、「tempfile_reuse_clause」を参照してください。
HOSTおよびPORT
これらの句は、プロキシPDBから参照するPDBを作成する場合にのみ役立ちます。このタイプのPDBは、参照先PDBと呼ばれます。これらの句のセマンティクスの詳細は、「HOSTおよびPORT」を参照してください。
例
シードを使用したPDBの作成: 例
次の文は、CDBのシードをテンプレートとして使用することで、PDB salespdb
を作成します。管理ユーザーsalesadm
が作成され、このユーザーにdba
ロールが付与されます。永続表領域が割り当てられていないSYSTEM
以外のユーザーには、デフォルト表領域sales
が割り当てられます。新しいPDBのファイル名は、シードのファイル名の/disk1/oracle/dbs/pdbseed/
を/disk1/oracle/dbs/salespdb/
に置換することによって構成されます。sales
に属するすべての表領域は2Gを超えてはいけません。salespdb
に関連付けられているすべてのディレクトリ・オブジェクト・パスの場所が、/disk1/oracle/dbs/salespdb/
ディレクトリに制限されます。
CREATE PLUGGABLE DATABASE salespdb
ADMIN USER salesadm IDENTIFIED BY password
ROLES = (dba)
DEFAULT TABLESPACE sales
DATAFILE '/disk1/oracle/dbs/salespdb/sales01.dbf' SIZE 250M AUTOEXTEND ON
FILE_NAME_CONVERT = ('/disk1/oracle/dbs/pdbseed/',
'/disk1/oracle/dbs/salespdb/')
STORAGE (MAXSIZE 2G)
PATH_PREFIX = '/disk1/oracle/dbs/salespdb/';
既存のPDBからのPDBのクローニング: 例
次の文は、PDB salespdb
をクローニングすることによって、PDB newpdb
を作成します。PDB newpdb
とsalespdb
は同じCDB内に存在します。記憶域の制限値を明示的に指定していないため、newpdb
の容量には制限がなくなります。ファイルは/disk1/oracle/dbs/salespdb/
から/disk1/oracle/dbs/newpdb/
にコピーされます。newpdb
に関連付けられているすべてのディレクトリ・オブジェクト・パスの場所が、/disk1/oracle/dbs/newpdb/
ディレクトリに制限されます。
CREATE PLUGGABLE DATABASE newpdb FROM salespdb FILE_NAME_CONVERT = ('/disk1/oracle/dbs/salespdb/', '/disk1/oracle/dbs/newpdb/') PATH_PREFIX = '/disk1/oracle/dbs/newpdb';
CDBへのPDBの接続: 例
次の文は、以前に切断されたPDB salespdb
をCDBに接続します。salespdb
について記述するメタデータの詳細は、XMLファイル/disk1/usr/salespdb.xml
に格納されています。XMLファイルでは、ファイルの現在の場所が正確に記述されていません。したがって、SOURCE_FILE_NAME_CONVERT
句は、ファイルが/disk1/oracle/dbs/salespdb/
ではなく/disk2/oracle/dbs/salespdb/
にあることを示すために使用されます。NOCOPY
句は、ファイルがすでに適切な場所に存在することを示します。sales
に属するすべての表領域は2Gを超えてはいけません。ターゲットの場所に、XMLファイルで指定されている一時ファイルと同じ名前のファイルがあります。したがって、TEMPFILE
REUSE
句が必要です。
CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml' SOURCE_FILE_NAME_CONVERT = ('/disk1/oracle/dbs/salespdb/', '/disk2/oracle/dbs/salespdb/') NOCOPY STORAGE (MAXSIZE 2G) TEMPFILE REUSE;