7 PDBまたは非CDBのクローニング
ローカルPDB、リモートPDBまたは非CDBをクローニングすることで、PDBを作成できます。
この章のトピックは、次のとおりです:
- PDBのクローニングについて
ソースPDBまたは非CDBからPDBをクローニングするには、CREATE PLUGGABLE DATABASE
文を使用します。 - ローカルPDBのクローニング: 基本的なステップ
ローカルPDBのクローンは、CREATE PLUGGABLE DATABASE
を実行して、FROM
句でソースPDBを指定することで作成できます。 - ローカルPDBのクローニング: 例
次の例では、様々な要因に基づき、pdb1
という名前のローカル・ソースPDBを、pdb2
という名前のターゲットPDBにクローニングします。 - リモートPDBのクローニング: 基本的なステップ
PDBはリモートPDBをクローニングすることで作成できます。クローニング操作後、ソースとターゲットPDBは異なる場所にあります。 - リモートPDBまたは非CDBのクローニング: 例
これらの例では、様々な要因に基づき、リモートPDBまたは非CDBをクローニングします。 - PDBのクローニング後
PDBのクローニング後に、ユーザーと表領域に関する特定のルールが適用されます。 - スナップショット・コピーPDBのマテリアライズ
MATERIALIZE
句を指定したALTER PLUGGABLE DATABASE
文を実行して、スナップショット・コピーPDBをマテリアライズできます。スナップショット・コピーPDBをマテリアライズすると、すべてのデータ・ブロックがコピーされます。
親トピック: PDBおよびアプリケーション・コンテナの作成および削除
PDBのクローニングについて
ソースPDBまたは非CDBからPDBをクローニングするには、CREATE PLUGGABLE DATABASE
文を使用します。
この手法では、ソースPDBまたは非CDBを新しいPDBとしてクローニングし、そのクローンをCDBに自動的に接続します。この手法を使用するには、ソースを指定するFROM
句を含める必要があります。ソースは、クローニングする既存のPDBまたは非CDBです。ターゲットPDBはソースのクローンです。ソースは次のいずれかです。
-
ローカルPDB
-
リモートCDB内のPDB
-
非CDB
CREATE PLUGGABLE DATABASE
文では、ソースに関連付けられているファイルを新しい場所にコピーし、そのファイルをターゲットPDBに関連付けます。CDBがARCHIVELOG
モードおよびローカルUNDOモードの場合、ソースPDBは読取り/書込みモードでオープンでき、クローニング・プロセス中に機能します。この手法は、ホット・クローニングと呼ばれます。
ノート:
PDBをクローニングするときに、ソース・データベースに暗号化されたデータまたはキーストア・セットがある場合、CREATE PLUGGABLE DATABASE ... FROM
SQL文のkeystore_password
句によって識別されるキーストアを含めることによって、キーストアのパスワードを提供する必要があります。このパスワードは、ソース・データベースが自動ログイン・ソフトウェア・キーストアを使用している場合であっても指定する必要があります。ソース・データベースに暗号化データまたはキーストアがあるかどうかを判別するには、DBA_ENCRYPTED_COLUMNS
データ・ディクショナリ・ビューに問い合せます。
クローニングの一般的な用途は、テストPDBの作成です。クローニングを使用すると、PDBまたは非CDBのクローンを1つ以上作成し、孤立した状況で安全にテストできます。たとえば、新しいアプリケーションまたは変更されたアプリケーションを、本番PDBで使用する前に、クローニングPDBでテストできます。
この項では、次の項目について説明します。
- ローカルPDBのクローニングについて
クローニングの最も簡単な形式では、PDBをCDBから同じCDBにコピーします。 - リモートPDBのクローニングについて
ソースがリモートCDB内のPDBである場合は、データベース・リンクを使用してPDBをローカルCDBにクローニングする必要があります。 - 非CDBのクローニングについて
ソースが非CDBである場合は、非CDBへのデータベース・リンクをFROM
句で指定する必要があります。 - アプリケーションPDBのクローニングについて
すべてのクローニングの使用例で、CREATE PLUGGABLE DATABASE
文をアプリケーション・ルートで実行する場合、クローニングされたPDBはアプリケーション・コンテナ内に作成されます。 - リフレッシュ可能なクローンPDBについて
CREATE PLUGGABLE DATABASE ... REFRESH MODE
文は、ソースPDBをクローニングし、クローンをリフレッシュ可能に構成します。クローンPDBをリフレッシュすると、最後のREDOログの適用以降に蓄積されたREDOでクローンPDBが更新されます。 - PDBスナップショットからのPDBのクローニングについて
PDBスナップショットとは、PDBのデータベース管理Point-in-Timeコピーのことです。スナップショット・クローンPDBとは、スナップショットから作成されたPDBのことです。 - スナップショット・コピーPDBについて
スナップショット・コピーPDBは、CREATE PLUGGABLE DATABASE ... SNAPSHOT COPY
文を使用して作成されたPDBです。 - 分割ミラーによるクローンPDBについて
Oracle ASMでは、分割ミラーは親コピーからPoint-in-Timeメディア・コピーをデタッチするプロセスです。分割後、親コピーに対する更新は子コピーに影響しません。
関連項目:
暗号化データまたはキーストア・セットを持つソースのクローニングについて学習するには、『Oracle Database Advanced Securityガイド』を参照してください
親トピック: PDBまたは非CDBのクローニング
ローカルPDBのクローニングについて
クローニングの最も簡単な形式では、PDBをCDBから同じCDBにコピーします。
ノート:
PDBをPDBシード(PDB$SEED
)またはアプリケーション・シードから作成する場合に、CREATE PLUGGABLE DATABASE
文にFROM
句を含めることはできません。
次の図は、ローカルPDBをクローニングする方法を示しています。
PDBをクローニングする前に、「表5-3」のPDBのクローニングに適用される質問に対処します。この表では、様々な要因に基づいて指定するCREATE PLUGGABLE DATABASE
の句について説明しています。
Oracle Database 18c以降では、DBCAを使用してローカルPDBをクローニングできます。
関連項目:
-
シードからPDBを作成する方法を学習するには、「PDBを最初から作成」を参照してください
親トピック: PDBのクローニングについて
リモートPDBのクローニングについて
ソースがリモートCDB内のPDBである場合は、データベース・リンクを使用してPDBをローカルCDBにクローニングする必要があります。
データベース・リンクは、ローカルCDB (リモートCDBではない)に存在している必要があります。ローカルCDBのルートからCREATE PLUGGABLE DATABASE
文を発行する場合は、クローニングされるPDBを含むリモートCDBへのデータベース・リンクをFROM
句で指定する必要があります。データベース・リンクは、ローカルCDBから、リモートCDBのルートまたはリモート・ソースPDBのいずれかに接続します。
次の図は、ソースPDBがリモートである場合に、この手法で新規PDBがどのように作成されるかを示しています。
親トピック: PDBのクローニングについて
非CDBのクローニングについて
ソースが非CDBである場合は、非CDBへのデータベース・リンクをFROM
句で指定する必要があります。
次の図は、ソースがリモート非CDBである場合に、この手法で新しいPDBがどのように作成されるかを示しています。
親トピック: PDBのクローニングについて
アプリケーションPDBのクローニングについて
すべてのクローニングの使用例で、CREATE PLUGGABLE DATABASE
文をアプリケーション・ルートで実行する場合、クローニングされたPDBはアプリケーション・コンテナ内に作成されます。
ソースPDBのアプリケーション名およびバージョンは、アプリケーション・コンテナのアプリケーション名およびバージョンと一致する必要があります。
次の図に、この手法でローカル・ソース・アプリケーションPDBをクローニングすることで新しいアプリケーションPDBをアプリケーション・コンテナに作成する方法を示します。ソースPDBは、ローカルCDBルートに接続されたPDB、リモートCDBルートに接続されたPDBまたはリモート・アプリケーション・ルートに接続されたアプリケーションPDBにすることができます。
関連項目:
親トピック: PDBのクローニングについて
リフレッシュ可能なクローンPDBについて
CREATE PLUGGABLE DATABASE ... REFRESH MODE
文は、ソースPDBをクローニングし、クローンをリフレッシュ可能に構成します。クローンPDBをリフレッシュすると、最後のREDOログの適用以降に蓄積されたREDOでクローンPDBが更新されます。
この項では、次の項目について説明します。
- リフレッシュ可能なクローンPDBの目的
本番PDBのクローニング操作は時間がかかる場合があります。 - 自動および手動リフレッシュ・モード
設定した間隔で自動的にリフレッシュするようにクローンPDBを構成するか、またはALTER PLUGGABLE DATABASE REFRESH
文により手動でリフレッシュできます。 - リフレッシュ可能なクローンPDBの要件
リフレッシュ可能なクローンPDBを作成するには、データベース・リンクが必要です。データベース・リンクは、同じCDBまたは別のCDBを指し示すことができます。
親トピック: PDBのクローニングについて
リフレッシュ可能なクローンPDBの目的
本番PDBのクローニング操作は時間がかかる場合があります。
システム上でのドラッグを回避するためにPDBを頻繁にクローニングしないと、クローン・データは古くなります。リフレッシュ可能なクローンPDBによってこの問題が解決します。リフレッシュ可能なクローンが古い場合は、最新のREDOを使用して迅速にリフレッシュできます。本番PDBの「最終マスター」のリフレッシュ可能なクローンを保持し、開発およびテスト用に「最終マスター」のスナップショット・クローンを取得するのが一般的な方法です。
ALTER PLUGGABLE DATABASE ... SWITCHOVER
文を使用して、ソースとクローンPDBのロールを置き換えることができます。この機能は、次の場合に有効です。
-
計画済スイッチオーバー
ソースPDBをホストするCDBは、クローンPDBをホストするCDBよりもオーバーヘッドが非常に多くなる可能性があります。ロード・バランシングをアーカイブするには、ロールを置き換えて、クローンを新しいソースPDBにし、ソースPDBを新しいクローンにできます。
-
計画外スイッチオーバー
ソースPDBで不測の失敗が発生することがあります。この場合、クローンPDBを新しいソースPDBにして、通常の操作を再開できます。
関連項目:
-
ALTER PLUGGABLE DATABASE ... SWITCHOVER
についてさらに学習するには、『Oracle Database SQL言語リファレンス』を参照してください
親トピック: リフレッシュ可能なクローンPDBについて
自動および手動リフレッシュ・モード
設定した間隔で自動的にリフレッシュするようにクローンPDBを構成するか、またはALTER PLUGGABLE DATABASE REFRESH
文により手動でリフレッシュできます。
REFRESH MODE
句は、CREATE PLUGGABLE DATABASE ... FROM
文でのみサポートされています。この句を使用して、次のいずれかのオプションを指定できます。
-
デフォルトの
REFRESH MODE NONE
を指定して、リフレッシュ可能でないPDBを作成します。ALTER PLUGGABLE DATABASE
文にREFRESH MODE NONE
句を含め、PDBを読取り/書込みモードでオープンすることにより、リフレッシュ可能なクローンPDBを通常のPDBに変更できます。通常のPDBはリフレッシュ可能なクローンPDBに変更できません。リフレッシュ可能なクローンPDBが通常のPDBに変換された後は、リフレッシュ可能なクローンPDBに戻すことができません。 -
REFRESH MODE MANUAL
を指定して、手動でリフレッシュする必要のあるリフレッシュ可能PDBを作成します。 -
REFRESH MODE EVERY number_of_minutes MINUTES
を指定して、指定した時間(分単位)の経過後に自動的にリフレッシュされるリフレッシュ可能PDBを作成します。自動リフレッシュを使用するリフレッシュ可能PDBを手動でリフレッシュすることもできます。
ノート:
-
リフレッシュ可能PDBを作成する場合、PDBに
REMOTE_RECOVERY_FILE_DEST
初期化パラメータを設定できます。この初期化パラメータは、ソースPDBがデータベース・リンク上で使用可能でない場合に、リフレッシュ操作中にアーカイブ・ログ・ファイルを読み取るディレクトリを指定します。 -
ソースPDBに新しいデータファイルが作成された場合は、CDBで
PDB_FILE_NAME_CONVERT
初期化パラメータを設定して、データファイルのパスをソースPDBからクローンPDBに変換する必要があります。
例7-1 自動リフレッシュを指定したREFRESH MODE句
このリフレッシュ・モード句では、リフレッシュ可能なPDBが2時間(120分)おきに自動的にリフレッシュされることを指定します。
REFRESH MODE EVERY 120 MINUTES
関連項目:
親トピック: リフレッシュ可能なクローンPDBについて
リフレッシュ可能なクローンPDBの要件
リフレッシュ可能なクローンPDBを作成するには、データベース・リンクが必要です。データベース・リンクは、同じCDBまたは別のCDBを指し示すことができます。
リフレッシュ可能なクローンPDBは、次のいずれかの状態である必要があります。
-
クローズ
リフレッシュ可能PDBは、リフレッシュの実行時にクローズする必要があります。自動リフレッシュが試行されたときにクローズされていない場合、リフレッシュは次のスケジュール済リフレッシュまで延期されます。ユーザーが手動リフレッシュの実行を試行したときにクローズされていない場合は、エラーがレポートされます。
-
読取り専用モードでオープン
ソースPDBでは行われていない同期されていない変更がリフレッシュ可能なPDBで行われないように、リフレッシュ可能なPDBは読取り専用モードにしておく必要があります。リフレッシュ可能なPDBはクローン・マスターとして機能することが意図されているため、リフレッシュされた時点でソースPDBが正確に反映される必要があります。
親トピック: リフレッシュ可能なクローンPDBについて
PDBスナップショットからのPDBのクローニングについて
PDBスナップショットとは、PDBのデータベース管理Point-in-Timeコピーのことです。スナップショット・クローンPDBとは、スナップショットから作成されたPDBのことです。
Oracle Database 19c以降、PDBスナップショットの動作は、CLONEDB
初期化パラメータの設定によって決まります。
-
CLONEDB=TRUE
読取り/書込みモードまたは読取り専用モードのPDBのスナップショットを取得できます。最初のPDBのスナップショットには元のPDBファイルのフル・コピーが含まれていますが、同じPDBの後続のスナップショットにはスパース・ファイルが含まれます。
-
CLONEDB=FALSE
読取り専用PDBのスナップショットのみを取得できます。すべてのスナップショットが、ソースPDBファイルのフル・コピーになります。この場合、PDBスナップショットに基づいてクローンPDBを作成すると、そのクローンPDBの存続期間中、ソースPDBは読取り専用のままにしておく必要があります。
ノート:
各種エディションおよびサービスでサポートされる機能の詳細は、『Oracle Databaseライセンス情報ユーザー・マニュアル』を参照してください。
PDBスナップショット・カルーセル
PDBスナップショット・カルーセルは、最大8個のスナップショットのライブラリです。カルーセルによって、特定のSCNまたは時点にPDBの「ホット・クローン」を実行できます。ユースケースでは、カルーセルからスナップショット(通常は最新のスナップショット)をリストアし、必要なSCNまたはタイムスタンプにリカバリします。
PDBスナップショットからのPDBのクローニング
CREATE PLUGGABLE DATABASE
文のUSING SNAPSHOT
句は、既存のPDBスナップショットからアクティブなPDBを作成します。使用可能なPDBスナップショットを確認するには、DBA_PDB_SNAPSHOTS
データ・ディクショナリ・ビューを問い合せます。
スナップショットからPDBをクローニングするには、次のいずれかの値をUSING SNAPSHOT
句で指定します。
-
PDBスナップショット名
-
次の形式のPDBスナップショットのSCN
USING SNAPSHOT AT SCN scn
-
次の形式のPDBスナップショットのタイムスタンプ
USING SNAPSHOT AT TIME timestamp
PDBスナップショットがスパース・コピーである場合(つまり、CLONEDB=TRUE
時に作成されたものであり、ソースPDBの最初に取得されたスナップショットでない場合)、このスナップショットからクローニングされたPDBもスパースになります。
関連項目:
-
USING SNAPSHOT
句の構文およびセマンティクスについては、『Oracle Database SQL言語リファレンス』を参照してください -
各種エディションおよびサービスでサポートされる機能の詳細は、『Oracle Databaseライセンス情報ユーザー・マニュアル』を参照
親トピック: PDBのクローニングについて
スナップショット・コピーPDBについて
スナップショット・コピーPDBは、CREATE PLUGGABLE DATABASE ... SNAPSHOT COPY
文を使用して作成されたPDBです。
この項では、次の項目について説明します。
- スナップショット・コピーPDBと標準クローンの違い
スナップショット・コピーPDBと、USING SNAPSHOT
句を使用して作成されたPDBスナップショットは異なるタイプのスナップショットです。 - スナップショット・コピーPDBの記憶域要件
CREATE PLUGGABLE DATABASE ... FROM sourcepdb
でSNAPSHOT COPY
句を指定するときには、ソースPDBのすべてのデータファイルが同一の記憶域タイプで存在している必要があります。
親トピック: PDBのクローニングについて
スナップショット・コピーPDBと標準クローンの違い
スナップショット・コピーPDBと、USING SNAPSHOT
句を使用して作成されたPDBスナップショットは異なるタイプのスナップショットです。
スナップショット・コピーPDBには、ソース・データ・ファイルの完全なコピーは含まれていません。かわりに、基礎となるファイル・システムの記憶域レベルのスナップショットが作成され、そのスナップショットからクローンPDBが作成されます。
標準のクローンPDBとは異なり、スナップショット・コピーPDBは記憶域スナップショットに依存しています。そのため、このPDBはCDBルートから切断することも、アプリケーション・ルートに接続することもできません。また、そのPDBが基づいている記憶域スナップショットを削除することもできません。そのかわりに、スナップショット・コピーPDBをマテリアライズする必要があります。これにより、非スパース・ファイルによる完全PDBに変換します。
対照的に、USING SNAPSHOT
句は、マテリアライズが不要なスタンドアロンのPDBを作成します。USING SNAPSHOT
句とSNAPSHOT COPY
句の両方を使用して、PDBスナップショットに基づくスナップショット・コピーPDBは作成できないことに注意してください。ただし、USING SNAPSHOT
を使用してスタンドアロンのクローンPDBを作成し、そのスタンドアロンPDBからSNAPSHOT COPY
PDBを作成できます。
スナップショットのコピーPDBの記憶域要件
CREATE PLUGGABLE DATABASE ... FROM sourcepdb
でSNAPSHOT COPY
句を指定するときには、ソースPDBのすべてのデータファイルが同一の記憶域タイプで存在している必要があります。
記憶域要件は、CLONEDB
初期化パラメータの設定によって異なります。
-
CLONEDB=FALSE
ソースPDBファイルの基礎となるファイル・システムでは、記憶域スナップショットをサポートする必要があります。そのようなファイル・システムとして、Oracle Automatic Storage Management Cluster File System (Oracle ACFS)およびDirect NFS Client記憶域などがあります。Oracle Exadataは、スパースASMグリッド・ディスクを使用して構成されたASMでスナップショット・コピー機能をサポートします。
-
CLONEDB=TRUE
ソースPDBファイルの基礎となるファイル・システムには、Direct NFSが有効化されていてスパース・ファイルをサポートしている任意のローカル・ファイル・システム、ネットワーク・ファイル・システム(NFS)またはクラスタ化ファイル・システムを使用できます。ほとんどのUNIXシステム(Oracle ACFSとZFSを含む)は、これらの要件を満たしています。ただし、
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
は、キーストアのパスワードです。
-
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 System Softwareユーザーズ・ガイド』を参照してください
親トピック: スナップショット・コピーPDBについて
分割ミラーによるクローンPDBについて
Oracle ASMでは、分割ミラーは親コピーからPoint-in-Timeメディア・コピーをデタッチするプロセスです。分割後、親コピーに対する更新は子コピーに影響しません。
Oracle Database 18c以降では、親コピーは、記憶域ボリュームではなく、PDBであることが可能です。分割ミラーによるクローンPDBは親と同じメディア上に存在します。主要なユースケースでは、Oracle ASM環境でテストおよび開発のPDBを迅速にプロビジョニングします。
ノート:
分割ミラーによるクローンPDBには、Oracle ASMの柔軟性および拡張ディスク・グループが必要です。
ミラー・リフレッシュによって、親PDBからの変更で分割ミラーによるクローンPDBをリフレッシュします。実際には、この操作は、ミラー分割を削除してから新しいミラー分割を取得するのと同じです。
分割ミラーによるクローンPDBを作成するための基本的な手順は次のとおりです。
-
SQL*Plusを起動し、CDBルートに接続します。
-
ALTER PLUGGABLE DATABASE ... PREPARE MIRROR COPY
文を発行して、クローニング元のPDBを準備します。 -
CREATE PLUGGABLE DATABASE ... USING MIRROR COPY
文を発行して、親からクローンPDBを作成します。
分割ミラーによるクローンPDBを削除するには、ALTER PLUGGABLE DATABASE ... DROP MIRROR COPY
を入力します。
V$ASM_DBCLONE_INFO
ビューには、ソースPDB、クローニングされたPDB、およびそのファイル・グループ間の関係が表示されます。
親トピック: PDBのクローニングについて
ローカルPDBのクローニング: 基本的なステップ
ローカルPDBのクローンは、CREATE PLUGGABLE DATABASE
を実行して、FROM
句でソースPDBを指定することで作成できます。
前提条件
次の前提条件を満たしている必要があります。
-
「PDB作成の一般的な前提条件」で説明している前提条件を満たします。
-
現行ユーザーは、ルートおよびソースPDBの両方で
CREATE PLUGGABLE DATABASE
システム権限を持っている必要があります。 -
ソースPDBはクローズできません。
-
CDBがローカルUNDOモードでない場合、ソースPDBは読取り専用オープン・モードである必要があります。この要件は、CDBがローカルUNDOモードの場合は適用されません。
-
CDBが
ARCHIVELOG
モードでない場合、ソースPDBは読取り専用オープン・モードである必要があります。この要件は、CDBがARCHIVELOG
モードの場合は適用されません。 -
アプリケーションPDBを作成している場合、アプリケーションPDBはアプリケーション・コンテナと同じ文字セットおよび各国語文字セットである必要があります。
CDBのデータベース文字セットがAL32UTF8の場合、アプリケーション・コンテナの文字セットおよび各国語文字セットはCDBと異なっていても構いません。ただし、アプリケーション・コンテナ内のすべてのアプリケーションPDBには、アプリケーション・コンテナと同じ文字セットおよび各国語文字セットが必要です。
ノート:
REFRESH MODE
句を使用してローカルPDBのリフレッシュ可能なクローンを作成できるのは、データベース・リンクが同じCDBにループ・バックしている場合のみです。
ローカルPDBをクローニングするには:
-
SQL*Plusで、現在のコンテナがCDBルートまたはアプリケーション・ルートであることを確認します。
現在のコンテナがCDBルートの場合、PDBはCDBに作成されます。現在のコンテナがアプリケーション・ルートの場合、アプリケーションPDBはアプリケーション・コンテナ内に作成されます。
-
CREATE PLUGGABLE DATABASE
文を実行し、ソースPDBをFROM
句で指定します。必要に応じて、他の句を指定します。ローカルPDBのクローニング後、ソースPDBとターゲットPDBは同じCDBに存在します。新しいPDBはマウント・モードになっていて、そのステータスは
NEW
になります。PDBのオープン・モードは、V$PDBS
ビューのOPEN_MODE
列を問い合せることで確認できます。CDB_PDBS
またはDBA_PDBS
ビューのSTATUS
列を問い合せて、PDBのステータスを表示できます。PDBの新しいデフォルト・サービスが作成されます。サービスの名前はPDBと同じになり、このサービスを使用してPDBにアクセスできます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。
-
新しいPDBを読取り/書込みモードでオープンします。
Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。 -
新しいPDBのバックアップを作成します。
PDBは、バックアップしないとリカバリできません。
ノート:
PDBの作成時にエラーが返された場合は、作成されたPDBがUNUSABLE
状態である可能性があります。PDBの状態は、CDB_PDBS
またはDBA_PDBS
ビューを問い合せることで確認できます。PDB作成のエラーについてさらに学習するには、アラート・ログを確認してください。使用不可のPDBのみを削除できます。また、使用不可のPDBを削除してからでないと、同じ名前のPDBを作成できません。
関連項目:
-
PDBのバックアップ方法を学習するには、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください
親トピック: PDBまたは非CDBのクローニング
ローカルPDBのクローニング: 例
次の例では、様々な要因に基づき、pdb1
という名前のローカル・ソースPDBを、pdb2
という名前のターゲットPDBにクローニングします。
各例で、新しいPDBが属するルートはCREATE PLUGGABLE DATABASE
文の実行時の現在のコンテナによって決まります。
-
現在のコンテナがCDBルートの場合、データベースではCDBルートにPDBが作成されます。
-
現在のコンテナがアプリケーション・コンテナ内のアプリケーション・ルートの場合、データベースではアプリケーション・ルート内にアプリケーションPDBが作成されます。
この項では、次の項目について説明します。
- 句を使用しないローカルPDBのクローニング: 例
この例では、PDBをクローニングする最も簡単な方法を示しています。 - DBCAを使用したローカルPDBのクローニング: 例
この例では、DBCAのサイレント・モードを使用してPDBをクローニングします。ホット・クローニングがサポートされます。 - PATH_PREFIX句を使用したローカルPDBのクローニング: 例
この例では、PATH_PREFIX
、FILE_NAME_CONVERT
およびSERVICE_NAME_CONVERT
句を使用してローカルPDBをクローニングする方法を説明しています。 - STORAGE句を使用したローカルPDBのクローニング: 例
この例では、FILE_NAME_CONVERT
、STORAGE
およびSERVICE_NAME_CONVERT
句を使用してローカルPDBをクローニングします。 - NO DATA句を使用したローカルPDBのクローニング: 例
この例では、PDBのデータ・モデル定義をクローニングしますが、PDBのデータはクローニングしません。 - PDBスナップショットからのPDBのクローニング: シナリオ
このシナリオでは、CREATE PLUGGABLE DATABASE ... USING SNAPSHOT
を実行することで、PDBスナップショットから新しいPDBを作成します。 - スナップショット・コピーPDBの作成: 例
この例では、SNAPSHOT COPY
句を使用してスナップショット・コピーPDBを作成します。
親トピック: PDBまたは非CDBのクローニング
句を使用しないローカルPDBのクローニング: 例
この例では、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;
関連項目:
-
Oracle Managed Filesの詳細は、『Oracle Database管理者ガイド』を参照してください
-
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください
親トピック: ローカルPDBのクローニング: 例
DBCAを使用したローカルPDBのクローニング: 例
この例では、DBCAのサイレント・モードを使用してPDBをクローニングします。ホット・クローニングがサポートされます。
この例では、次の要因を想定しています。
-
ソースCDBは、SIDが
orcl
の単一インスタンス・データベースです。 -
ソースPDBは
pdb1
です。クローニング操作中、pdb1
はオープンのままにします。これは、ローカルUNDOおよびARCHIVELOG
モードがCDBで有効になっていることを意味します。それ以外の場合、DBCAはクローン操作中にPDBをクローズし、確認を受け取った後に、ソースPDBを読取り専用モードでオープンします。 -
新しいPDBは
pdb2
です。 -
DBCAを非対話型モードで実行しています。
次のコマンドは、pdb1
PDBからpdb2
PDBをクローニングします。
./dbca -silent
-createpluggabledatabase
-sourcedb orcl
-createpdbfrom PDB
-pdbName pdb2
-sourcepdb pdb1
関連項目:
DBCAのコマンド・リファレンスは、『Oracle Database管理者ガイド』を参照してください
親トピック: ローカルPDBのクローニング: 例
PATH_PREFIX句を使用したローカルPDBのクローニング: 例
この例では、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のデータファイルの場所を表示するには、「例19-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;
親トピック: ローカルPDBのクローニング: 例
STORAGE句を使用したローカルPDBのクローニング: 例
この例では、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のデータファイルの場所を表示するには、例19-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');
親トピック: ローカルPDBのクローニング: 例
NO DATA句を使用したローカルPDBのクローニング: 例
この例では、PDBのデータ・モデル定義をクローニングしますが、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(*) ---------- 60001215
表には、6000万超の行があります。
-
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スナップショットからのPDBのクローニング: シナリオ
このシナリオでは、CREATE PLUGGABLE DATABASE ... USING SNAPSHOT
を実行して、PDBスナップショットから新しいPDBを作成します。
想定
この例では、次の要因を想定しています。
-
8個の日次スナップショットを含むPDBスナップショット・カルーセルが存在し、スナップショットには曜日、日、作成された時間が後に続く名前が付けられます(例:
pdb1_mon_2_1201
、pdb1_tue_3_1201
、pdb1_wed_4_1201
)。 -
新しいPDBは
pdb1_wed_4_1201
という名前のスナップショットのクローンで、これは先週の水曜日、その月の4日の午前12時1分に取得されたpdb1
のスナップショットです。 -
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スナップショットからPDBをクローニングするには:
-
SQL*Plusで、現在のコンテナがCDBルートまたはアプリケーション・ルートであることを確認します。
現在のコンテナがCDBルートの場合、PDBはCDBに作成されます。現在のコンテナがアプリケーション・ルートの場合、アプリケーションPDBはアプリケーション・コンテナ内に作成されます。
-
CREATE PLUGGABLE DATABASE
文を実行します。次の文は、
pdb1_wed_4_1201
という名前のPDBのスナップショットからpdb1_copy
PDBをクローニングします。CREATE PLUGGABLE DATABASE pdb1_copy FROM pdb1 USING SNAPSHOT pdb1_wed_4_1201;
関連項目:
親トピック: ローカルPDBのクローニング: 例
スナップショット・コピーPDBの作成: 例
この例では、SNAPSHOT COPY
句を使用してスナップショット・コピーPDBを作成します。
この例では、次の要因を想定しています。
-
新しいスナップショット・コピーPDBは
pdb1_snap3
という名前のPDBスナップショットに基づいて作成され、このPDBスナップショットは、特定の時点とSCNにおけるpdb1
のコピーです。 -
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_snap3
PDBスナップショットからpdb1_snap_copy
PDBがクローニングされます。
CREATE PLUGGABLE DATABASE pdb1_snap_copy FROM pdb1 USING SNAPSHOT pdb1_snap3 SNAPSHOT COPY;
pdb1_snap_copy
は、作成された後にpdb1_snap3
PDBスナップショットに依存します。したがって、pdb1_snap_copy
が存在する場合は、pdb1_snap3
を削除できません。ただし、ALTER PLUGGABLE DATABASE ... MATERIALIZE
文を実行して、pd1_snap_copy
をスナップショット・コピーPDBから通常のPDBに変換できます。PDBのマテリアライズとは、pdb1_snap_copy
がpdb1_snap3
に依存しなくなり、pdb1_snap3
が削除可能になることを意味します。
親トピック: ローカルPDBのクローニング: 例
リモートPDBのクローニング: 基本的なステップ
PDBは、リモートPDBをクローニングすることで作成できます。クローニング操作後、ソースとターゲットPDBは異なる場所にあります。
一般的な前提条件
次の前提条件を満たしている必要があります。
-
「PDB作成の一般的な前提条件」で説明している前提条件を満たします。
-
現行ユーザーは、ターゲットPDBが含まれるCDBのルートで
CREATE PLUGGABLE DATABASE
システム権限を持っている必要があります。 -
ソースとターゲットのプラットフォームは、次の要件を満たしている必要があります。
-
endiannessが同じである必要があります。
-
ソース・プラットフォームにインストールされているデータベース・オプションは、ターゲット・プラットフォームにインストールされているデータベース・オプションと同じか、サブセットである必要があります。
-
-
アプリケーションPDBを作成している場合、ソースPDBのアプリケーション名およびバージョンは、ターゲット・アプリケーション・コンテナのアプリケーション名およびバージョンと一致する必要があります。
文字セットの前提条件
-
PDBがクローニングされるCDBの文字セットがAL32UTF8でない場合、ソースとターゲットには互換性のある文字セットおよび各国語文字セットが必要です。PDBがクローニングされるCDBの文字セットがAL32UTF8である場合、この要件は適用されません。
-
アプリケーションPDBを作成している場合、アプリケーションPDBはアプリケーション・コンテナと同じ文字セットおよび各国語文字セットである必要があります。
CDBのデータベース文字セットがAL32UTF8の場合、アプリケーション・コンテナの文字セットおよび各国語文字セットはCDBと異なっていても構いません。ただし、アプリケーション・コンテナ内のすべてのアプリケーションPDBには、アプリケーション・コンテナと同じ文字セットおよび各国語文字セットが必要です。
ソースPDBのオープン・モードの前提条件
-
ソースPDBはクローズできません。
-
リモートCDBがローカルUNDOモードでない場合、ソースPDBは読取り専用モードでオープンしている必要があります。
「CDB UNDOモードについて」を参照してください。
-
リモートCDBが
ARCHIVELOG
モードでない場合、ソースPDBは読取り専用モードでオープンしている必要があります。 -
リフレッシュ可能なPDBを作成している場合、ソースPDBは
ARCHIVELOG
モードおよびローカルUNDOモードである必要があります。
データベース・リンクの前提条件
次の前提条件を満たしている必要があります。
-
データベース・リンクは、PDBがクローニングされるCDBからソースPDBのCDBへの接続を有効にする必要があります。データベース・リンクは、CDBのルート、アプリケーションPDB (ソースがアプリケーションPDBの場合)、またはPDBのいずれかに接続できます。
-
データベース・リンクが接続するユーザーには、
CREATE PLUGGABLE DATABASE
システム権限が必要です。 -
データベース・リンクがソースPDBのCDBのルートに接続する場合、データベース・リンクが接続するユーザーは、共通ユーザーである必要があります。
-
Oracle Data Guard環境でプライマリCDBへのPDBのリモート・クローンを実行している場合は、スタンバイCDBで
STANDBY_PDB_SOURCE_FILE_DBLINK
初期化パラメータを設定します。このパラメータは、CREATE PLUGGABLE DATABASE ... FROM dblink
で使用するデータベース・リンクの名前を指定します。スタンバイCDBでは、ソースPDBが読取り専用モードでオープンしている場合のみ、データベース・リンクで参照されるソースPDBからデータファイルのコピーを試みます。それ以外の場合は、スタンバイCDBでデータ・ファイルをOracle Managed Filesの場所にコピーする必要があります。
リモートPDBをクローニングするには:
-
SQL*Plusで、現在のコンテナがターゲットCDBのルートまたはターゲット・アプリケーション・コンテナのアプリケーション・ルートであることを確認します。
-
CREATE PLUGGABLE DATABASE
文を実行し、ソースPDBをFROM
句で指定します。必要に応じて、他の句を指定します。作成したPDBはマウント・モードになり、そのステータスは
NEW
です。PDBのオープン・モードは、V$PDBS
ビューのOPEN_MODE
列を問い合せることで確認できます。CDB_PDBS
またはDBA_PDBS
ビューのSTATUS
列を問い合せて、PDBのステータスを表示できます。PDBの新しいデフォルト・サービスが作成されます。サービスの名前はPDBと同じになり、このサービスを使用してPDBにアクセスできます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。
ノート:
PDBの作成時にエラーが返された場合は、作成されたPDBが
UNUSABLE
状態である可能性があります。CDB_PDBS
またはDBA_PDBS
ビューを問い合せてPDBの状態を確認したり、アラート・ログをチェックしてPDBの作成エラーについてさらに学習できます。使用不可のPDBは削除することのみができ、使用不可のPDBと同じ名前のPDBを作成できるようにするには、その前に削除する必要があります。 -
新しいPDBを読取り/書込みモードでオープンします。
Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。 -
PDBをバックアップします。
PDBは、バックアップしないとリカバリできません。
関連項目:
-
PDBのバックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください
-
Oracle Data Guard環境でのPDBの接続についてさらに学習するには、『Oracle Data Guard概要および管理』を参照してください
-
文字セットの互換性に関する要件について学習するには、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください
-
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください
親トピック: PDBまたは非CDBのクローニング
リモートPDBまたは非CDBのクローニング: 例
これらの例では、様々な要因に基づき、リモートPDBまたは非CDBをクローニングします。
各例で、新しいPDBが属するルートはCREATE PLUGGABLE DATABASE
文の実行時の現在のコンテナによって決まります。
-
現在のコンテナがCDBルートの場合、新しいPDBはCDBルートに作成されます。
-
現在のコンテナがアプリケーション・コンテナ内のアプリケーション・ルートの場合、新しいPDBはアプリケーション・ルート内にアプリケーションPDBとして作成されます。
この項では、次の項目について説明します。
- 句を使用しないリモートPDBのクローニング: 例
この例では、様々な要因に基づき、pdb1
という名前のリモート・ソースPDBを、pdb2
という名前のターゲットPDBにクローニングします。 - リモート非CDBのクローニング: 例
この例では、様々な要因に基づき、mydb
という名前のリモート・ソース非CDBを、pdb2
という名前のターゲットPDBにクローニングして新しいPDBを作成します。 - リフレッシュ可能なクローンの作成: 例
この例では、様々な要因に基づき、リモートpdb1
をターゲットpdb2
にクローニングします。
親トピック: PDBまたは非CDBのクローニング
句を使用しないリモート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;
関連項目:
-
Oracle Managed Filesの詳細は、『Oracle Database管理者ガイド』を参照してください
-
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください
親トピック: リモートPDBまたは非CDBのクローニング: 例
リモート非CDBのクローニング: 例
次の例では、様々な要因に基づき、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;
関連項目:
Oracle Managed Filesの詳細は、『Oracle Database管理者ガイド』を参照してください
親トピック: リモートPDBまたは非CDBのクローニング: 例
リフレッシュ可能なクローンの作成: 例
この例では、様々な要因に基づき、リモートpdb1
をターゲット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;
関連項目:
-
Oracle Managed Filesの詳細は、『Oracle Database管理者ガイド』を参照してください
親トピック: リモートPDBまたは非CDBのクローニング: 例
PDBのクローニング後
PDBのクローニング後に、ユーザーと表領域に関する特定のルールが適用されます。
PDBのクローニング後、次の内容が適用されます。
-
ソース非CDBまたはPDBのデフォルト一時表領域を使用していたPDBのユーザーは、クローンPDBのデフォルト一時表領域を使用します。非CDBまたはPDB内のデフォルト以外の一時表領域を使用していたユーザーは、クローニングされたPDB内の同じローカル一時表領域を引き続き使用します。
-
リモートPDBのクローニング時、ソースCDBに存在するが、ターゲットCDBには存在しない、ユーザーが作成した共通ユーザー・アカウントには、共通して付与された権限がありません。ただし、ターゲットCDBに共通ユーザーが存在し、PDBの共通ユーザーと同じ名前である場合、後者は前者にリンクされ、ターゲットCDBの共通ユーザーに付与された権限を持ちます。
クローニングまたは接続されたPDBにターゲットCDBに存在しない共通ユーザー・アカウントが存在し、このユーザーがPDB内のオブジェクトを所有していない場合、Oracle Databaseでは同期ステップ中にユーザーが削除されます。それ以外の場合、ユーザー・アカウントはターゲットPDBでロックされます。ロックされたアカウントに関して、次のオプションがあります。
-
PDBをクローニングし、ルートに接続し、同じ名前で共通ユーザー・アカウントを作成します。PDBを読取り/書込みモードでオープンすると、ユーザー・アカウントに共通して付与されているロールや権限の相違点が解決され、アカウントをロック解除できます。ユーザー・アカウントに対してローカルに付与されている権限やロールは、このプロセス中も変更されません。
-
PDBに新しいローカル・ユーザー・アカウントを作成し、データ・ポンプを使用して、ロックされたユーザーのデータを新しいローカル・ユーザーのスキーマにエクスポート/インポートします。
-
ユーザー・アカウントはロックされたままにします。
-
ユーザー・アカウントを削除します。
-
関連項目:
-
共通ユーザーおよびローカル・ユーザーの詳細は、『Oracle Database概要』を参照してください
-
ローカル・ユーザーの作成の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください
-
CDBでのOracle Data Pumpの使用の詳細は、『Oracle Databaseユーティリティ』を参照してください
親トピック: PDBまたは非CDBのクローニング
スナップショット・コピーPDBのマテリアライズ
MATERIALIZE
句を指定したALTER PLUGGABLE DATABASE
文を実行して、スナップショット・コピーPDBをマテリアライズできます。スナップショット・コピーPDBをマテリアライズすると、すべてのデータ・ブロックがコピーされます。
スナップショット・コピーPDBを作成する場合、ソースPDBに依存しています。この依存関係があるため、ソースPDBを削除できません。
スナップショット・コピーPDBをマテリアライズすると、スパース・ファイルを使用するスナップショット・コピーPDBは、スパース・ファイルを使用しない完全PDBに変換されます。したがって、ソースPDBに依存しなくなるため、削除が可能になります。
ノート:
USING SNAPSHOT
句を使用して作成されたPDBスナップショットと、SNAPSHOT COPY
句を使用して作成されたスナップショット・コピーPDBは、2つの異なるタイプのスナップショットなので混同しないでください。USING SNAPSHOT
句では、マテリアライズが不要な完全なPDBが作成されます。SNAPSHOT COPY
句では、基になるPDBスナップショットを削除する場合に、マテリアライズが必要なスパースPDBが作成されます。
PDBスナップショットをマテリアライズするには:
-
SQL*Plusで、現在のコンテナがマテリアライズされるスナップショット・コピーPDBであることを確認します。
-
MATERIALIZE
句を指定してALTER PLUGGABLE DATABASE
文を実行します。
例7-2 スナップショット・コピーPDBのマテリアライズ
次のSQL文は、スナップショット・コピーPDBをマテリアライズします。
ALTER PLUGGABLE DATABASE MATERIALIZE;
関連項目:
-
スナップショット・コピーPDBの詳細は、「スナップショット・コピーPDBについて」を参照してください
親トピック: PDBまたは非CDBのクローニング