7 PDBまたは非CDBのクローニング
ローカルPDB、リモートPDBまたは非CDBをクローニングすることで、PDBを作成できます。
- PDBまたは非CDBクローニングについて
クローニングとは、ソースPDBまたは非CDBから新しいPDBを作成することです。 - ローカルPDBのクローニング
ローカルPDBのクローンは、CREATE PLUGGABLE DATABASE
文を実行して、FROM
文でローカルPDBを指定することで作成できます。 - リモートPDBのクローニング
ローカルPDBのクローンは、CREATE PLUGGABLE DATABASE
文を実行し、FROM
文でリモートPDBへのデータベースへのリンクを指定することで作成できます。 - 非CDBのクローニング
非CDBのクローニング手順は、リモートPDBのクローニング手順と非常によく似ています。 - リフレッシュ可能なクローンPDBについて
CREATE PLUGGABLE DATABASE ... REFRESH MODE
文は、ソースPDBをクローニングし、クローンをリフレッシュ可能に構成します。クローンPDBをリフレッシュすると、最後のREDOログの適用以降に蓄積されたREDOでクローンPDBが更新されます。 - PDBスナップショットからのPDBのクローニング
PDBスナップショットからPDBを作成するには、CREATE PLUGGABLE DATABASE … USING SNAPSHOT
文を実行します。 - スナップショット・コピーPDBの作成およびマテリアライズ
PDBは基礎となる記憶域のスナップショットからクローニングできます。PDBファイルはスパースですが、それらのファイルをマテリアライズしてスタンドアロンPDBを作成できます。 - 分割ミラーによるクローンPDBの作成
Oracle ASMでは、分割ミラーとは親コピーからPoint-in-Timeメディア・コピーをデタッチするプロセスのことです。分割後、親コピーに対する更新は子コピーに影響しません。
親トピック: PDBおよびアプリケーション・コンテナの作成および削除
PDBまたは非CDBのクローニングについて
クローニングとは、ソースPDBまたは非CDBから新しいPDBを作成することです。
一般的なユースケースは開発テストです。PDBまたは非CDBの1つ以上のクローンを作成して、それらのクローンを分離して安全にテストできます。たとえば、新しいアプリケーションまたは変更されたアプリケーションを、本番PDBで使用する前に、クローニングPDBでテストできます。
- クローニングの仕組み
この手法では、ソースPDBまたは非CDBから新しいPDBを作成します。このプロセスでは、新しいPDBを自動的にCDBに接続します。 - PDBクローニングのユーザー・インタフェース
すべての形式のPDBクローニングに、CREATE PLUGGABLE DATABASE
文を使用します。
関連項目:
暗号化データまたはキーストア・セットを持つソースのクローニングについて学習するには、『Oracle Database Advanced Securityガイド』を参照してください
親トピック: PDBまたは非CDBのクローニング
クローニングの仕組み
この手法では、ソースPDBまたは非CDBから新しいPDBを作成します。このプロセスでは、新しいPDBを自動的にCDBに接続します。
この手法を使用するには、CREATE PLUGGABLE DATABASE
文でソースを指定する必要があります。ソースは次のいずれかです。
-
ローカルPDB
-
リモートCDB内のPDB
-
非CDB
ターゲットPDBは、ソースPDBまたは非CDBのコピーです。このコピーのことをクローンPDBと呼びます。
CREATE PLUGGABLE DATABASE
文では、ソースに関連付けられているファイルを新しい場所にコピーし、そのファイルをターゲットPDBに関連付けます。CDBがARCHIVELOG
モードおよびローカルUNDOモードの場合、ソースPDBは読取り/書込みモードでオープンでき、クローニング・プロセス中に機能します。この手法は、ホット・クローニングと呼ばれます。
ノート:
PDBをクローニングするときに、ソース・データベースに暗号化されたデータまたはキーストア・セットがある場合、CREATE PLUGGABLE DATABASE ... FROM
SQL文のkeystore_password
句によって識別されるキーストアを含めることによって、キーストアのパスワードを提供する必要があります。このパスワードは、ソース・データベースが自動ログイン・ソフトウェア・キーストアを使用している場合であっても指定する必要があります。ソース・データベースに暗号化データまたはキーストアがあるかどうかを判別するには、DBA_ENCRYPTED_COLUMNS
データ・ディクショナリ・ビューに問い合せます。
すべてのクローニングのシナリオで、CREATE PLUGGABLE DATABASE
文をアプリケーション・ルートで実行するときには、アプリケーション・コンテナ内にクローンPDBを作成します。ソースPDBのアプリケーション名およびバージョンは、アプリケーション・コンテナのアプリケーション名およびバージョンと一致する必要があります。
次の図に、この手法でローカル・ソース・アプリケーションPDBをクローニングすることで新しいアプリケーションPDBをアプリケーション・コンテナに作成する方法を示します。ソースPDBは、ローカルCDBルートに接続されたPDB、リモートCDBルートに接続されたPDBまたはリモート・アプリケーション・ルートに接続されたアプリケーションPDBにすることができます。
関連項目:
親トピック: PDBまたは非CDBのクローニングについて
PDBクローニングのユーザー・インタフェース
すべての形式のPDBクローニングに、CREATE PLUGGABLE DATABASE
文を使用します。
クローニングの際には、FROM
句でソースPDBを指定する必要があります。次の表に、最も重要な句のまとめを示します。
表7-1 PDBクローニングのためのCREATE PLUGGABLE DATABASEオプション
句 | クローニング操作 | 関連項目 |
---|---|---|
|
PDBレベルのスナップショットからクローンを作成します( ノート: |
|
|
リフレッシュ可能クローンPDBを作成します。 |
|
|
記憶域管理スナップショットからスナップショット・コピーPDBを作成します( スナップショット・コピーPDBには、ソース・データ・ファイルの完全なコピーは含まれていません。かわりに、基礎となるファイル・システムの記憶域レベルのスナップショットが作成され、そのスナップショットからクローンPDBが作成されます。 標準のクローンPDBとは異なり、スナップショット・コピーPDBは記憶域スナップショットに依存しています。そのため、スナップショット・コピーPDBは、CDBルートから切断することも、アプリケーション・ルートに接続することもできません。また、そのPDBが基づいている記憶域スナップショットを削除することもできません。そのかわりに、スナップショット・コピーPDBをマテリアライズする必要があります。これにより、非スパース・ファイルによる完全PDBに変換します。 |
|
|
mirror_nameで指定されているASM記憶域ミラーを分割することで、新しいPDBを作成します。準備済ミラー・コピーからは1つのPDBのみを分割できます。追加の分割を作成する場合は、新しいミラー・コピーを準備する必要があります。 |
関連項目:
-
CREATE PLUGGABLE DATABASE
句についてさらに学習するには、『Oracle Database SQL言語リファレンス』を参照
親トピック: PDBまたは非CDBのクローニングについて
ローカルPDBのクローニング
ローカルPDBのクローンは、CREATE PLUGGABLE DATABASE
文を実行して、FROM
文でローカルPDBを指定することで作成できます。
- ローカルPDBのクローニングについて
クローニングの最も簡単な形式では、PDBをCDBから同じCDBにコピーします。 - ローカルPDBのクローニング: 基本的なステップ
ローカルPDBのクローンは、CREATE PLUGGABLE DATABASE
を実行して、FROM
句でソースPDBを指定することで作成できます。 - ローカルPDBのクローニング後
ローカルPDBのクローニング後には、ユーザーと表領域に関する特定のルールが適用されます。 - ローカルPDBのクローニング: 例
次の例では、様々な要因に基づき、pdb1
という名前のローカル・ソースPDBを、pdb2
という名前のターゲットPDBにクローニングします。
親トピック: 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のクローニング: 基本的なステップ
ローカル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のクローニング
ローカルPDBのクローニング後
ローカルPDBのクローニング後には、ユーザーと表領域に関する特定のルールが適用されます。
ソースPDBのデフォルト一時表領域を使用していた新しいPDBのユーザーは、新しいPDBのデフォルト一時表領域を使用します。PDB内のデフォルト以外の一時表領域を使用していたユーザーは、クローニングされたPDB内の同じローカル一時表領域を引き続き使用します。
関連項目:
親トピック: ローカルPDBのクローニング
ローカル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のクローニング: 例
この例では、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
文を実行し、FROM
文でリモートPDBへのデータベースへのリンクを指定することで作成できます。
- リモートPDBのクローニングについて
ソースがリモートCDB内のPDBである場合は、データベース・リンクを使用してPDBをローカルCDBにクローニングする必要があります。 - リモートPDBのクローニング: 基本的なステップ
PDBはリモートPDBをクローニングすることで作成できます。クローニング操作後、ソースとターゲットPDBは異なる場所にあります。 - リモートPDBのクローニング後
リモートPDBのクローニング後には、ユーザーおよび表領域に関する特定のルールが適用されます。 - リモートPDBのクローニング: 例
これらの例では、様々な要因に基づき、リモートPDBまたは非CDBをクローニングします。
親トピック: PDBまたは非CDBのクローニング
リモートPDBのクローニングについて
ソースがリモートCDB内のPDBである場合は、データベース・リンクを使用してPDBをローカルCDBにクローニングする必要があります。
データベース・リンクは、ローカルCDB (リモートCDBではない)に存在している必要があります。ローカルCDBのルートからCREATE PLUGGABLE DATABASE
文を発行する場合は、クローニングされるPDBを含むリモートCDBへのデータベース・リンクをFROM
句で指定する必要があります。データベース・リンクは、ローカルCDBから、リモートCDBのルートまたはリモート・ソースPDBのいずれかに接続します。
次の図は、ソースPDBがリモートである場合に、この手法で新規PDBがどのように作成されるかを示しています。
Oracle Database 19c以降では、サイレント・モードでDBCAを使用してリモートPDBをクローニングできます。
親トピック: リモート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には、アプリケーション・コンテナと同じ文字セットおよび各国語文字セットが必要です。
ノート:
Oracle Multitenantでは、あるコンテナのLOBに対する異なる文字セットのコンテナによるデータ・リンク、拡張データ・リンクまたはCONTAINERS()
句を使用したアクセスはサポートされません。たとえば、CDBルートとsalespdb
の文字セットが異なる場合、CDBルートで実行されるCONTAINERS()
問合せはsalespdb
のLOBにアクセスできません。
ソースPDBのオープン・モードの前提条件
-
ソースPDBはクローズできません。
-
リモートCDBがローカルUNDOモードでない場合、ソースPDBは読取り専用モードでオープンしている必要があります。
「CDB UNDOモードについて」を参照してください。
-
リモートCDBが
ARCHIVELOG
モードでない場合、ソースPDBは読取り専用モードでオープンしている必要があります。 -
リフレッシュ可能なPDBを作成している場合、ソースPDBは
ARCHIVELOG
モードおよびローカルUNDOモードである必要があります。
データベース・リンクの前提条件
次の前提条件を満たしている必要があります。
-
データベース・リンクで、宛先CDB (PDBのクローニング先のCDB)からソースCDB内のPDBへの接続が有効である必要があります。
-
データベース・リンクでは、共通ユーザーとしてソースCDBのルートに、または共通ユーザーかローカル・ユーザーとしてソースPDBに接続できます。ソースPDBとしては、標準PDBまたはアプリケーションPDBのどちらかを使用できます。
-
データベース・リンクで指定されたユーザー・アカウントには、次のいずれかの権限が必要です。
-
ソースPDBに共通またはローカルで付与されている
CREATE PLUGGABLE DATABASE
権限 -
SYSOPER
権限
-
-
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のクローニング
リモートPDBのクローニング後
リモートPDBのクローニング後には、ユーザーと表領域に関する特定のルールが適用されます。
リモートPDBのクローニング後、次の内容が適用されます。
-
ソースPDBのデフォルト一時表領域を使用していた新しいPDBのユーザーは、新しいPDBのデフォルト一時表領域を使用します。PDB内のデフォルト以外の一時表領域を使用していたユーザーは、クローニングされたPDB内の同じローカル一時表領域を引き続き使用します。
-
ソースCDBに存在していてターゲットCDBには存在しないユーザー作成の共通ユーザー・アカウントには、一般に権限は付与されていません。ただし、ターゲットCDBに共通ユーザー・アカウントが存在していて、PDBの共通ユーザー・アカウントと同じ名前である場合、後者は前者にリンクされ、ターゲットCDBの共通ユーザー・アカウントに付与された権限を持ちます。
クローニングまたは接続されたPDBにターゲットCDBに存在しない共通ユーザー・アカウントが存在し、このユーザーがPDB内のオブジェクトを所有していない場合、Oracle Databaseでは同期ステップ中にユーザーが削除されます。それ以外の場合、ユーザー・アカウントはターゲットPDBでロックされます。ロックされたアカウントに関して、次のオプションがあります。
-
PDBをクローニングし、ルートに接続し、同じ名前で共通ユーザー・アカウントを作成します。PDBを読取り/書込みモードでオープンすると、ユーザー・アカウントに共通して付与されているロールや権限の相違点が解決され、アカウントをロック解除できます。ユーザー・アカウントに対してローカルに付与されている権限やロールは、このプロセス中も変更されません。
-
PDBに新しいローカル・ユーザー・アカウントを作成し、データ・ポンプを使用して、ロックされたユーザーのデータを新しいローカル・ユーザーのスキーマにエクスポート/インポートします。
-
ユーザー・アカウントはロックされたままにします。
-
ユーザー・アカウントを削除します。
-
関連項目:
-
ローカル・ユーザーの作成の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください
-
CDBでのOracle Data Pumpの使用の詳細は、『Oracle Databaseユーティリティ』を参照してください
親トピック: リモートPDBのクローニング
リモートPDBのクローニング: 例
これらの例では、様々な要因に基づき、リモートPDBまたは非CDBをクローニングします。
各例で、新しいPDBが属するルートはCREATE PLUGGABLE DATABASE
文の実行時の現在のコンテナによって決まります。
-
現在のコンテナがCDBルートの場合、新しいPDBはCDBルートに作成されます。
-
現在のコンテナがアプリケーション・コンテナ内のアプリケーション・ルートの場合、新しいPDBはアプリケーション・ルート内にアプリケーションPDBとして作成されます。
- 句を使用しないリモートPDBのクローニング: 例
この例では、様々な要因に基づき、pdb1
という名前のリモート・ソースPDBを、pdb2
という名前のターゲットPDBにクローニングします。 - DBCAを使用したリモートPDBのクローニング: 例
この例では、DBCAを使用して、リモートCDBからローカルCDBにpdb1
という名前のPDBをクローニングし、クローニング先でclonepdb1
という名前に変更します。
親トピック: リモート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;
関連項目:
-
Oracle Managed Filesの詳細は、『Oracle Database管理者ガイド』を参照してください
-
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください
親トピック: リモートPDBのクローニング: 例
DBCAを使用したリモートPDBのクローニング: 例
この例では、DBCAを使用して、リモートCDBからローカルCDBにpdb1
という名前のPDBをクローニングし、クローニング先でclonepdb1
という名前に変更します。
前提条件
この例では、次のことを前提としています。
-
ローカル・データベースのユーザーには、ルート・コンテナでの
CREATE PLUGGABLE DATABASE
権限が付与されている。 -
リモートCDBはローカルUNDOモードになっている。
-
リモートCDBとローカルCDBは、
ARCHIVELOG
モードになっている。 -
データベース・リンクの接続先リモートCDBの共通ユーザーには、
CREATE PLUGGABLE DATABASE
、SESSION
およびSYSOPER
権限が付与されている。 -
ローカルCDBとリモートCDBは、同じオプションでインストールされている。
想定
この例では、次のことを前提としています。
-
クローンPDBを格納するCDBのホスト上でDBCAを実行しています。ローカルCDBの名前は、
loccdb1
です。 -
リモート(ソース) CDBの名前は
remcdb1
で、ホストremcdb1host
に存在しています。リモートCDBのインスタンス名は、reminst
です。 -
クローニングされるPDBであるリモートPDBの名前は、
rempdb1
です。 -
共通ユーザー
c##adminuser_remcdb1
がremcdb1
に存在しています。 -
管理ユーザー
locSYS
には、loccdb1
(PDBのクローニング先のCDB)に対するSYSDBA
権限が付与されています。 -
管理ユーザー
remSYS
にはremcdb1
(クローニングするPDBを格納しているCDB)に対するSYSDBA
権限が付与されています。 -
loccdb1
へのクローニング後、PDBの名前はclonepdb1
に変更します。
次のsilentコマンドでは、rempdb1
をloccdb1
にクローニングします。
./dbca -silent
-createPluggableDatabase
-createFromRemotePDB
-sourceDB remcdb1
-remotePDBName rempdb1
-remoteDBConnString remcdb1host:1521/reminst
-remoteDBSYSDBAUserName remSYS
-remoteDBSYSDBAUserPassword remsyspwd
-dbLinkUsername c##adminuser_remcdb1
-dbLinkUserPassword pwd4dblinkusr
-sysDBAUserName locSYS
-sysDBAPassword locsyspwd
-pdbName clonepdb1
関連項目:
DBCAコマンドの構文およびセマンティクスは、『Oracle Database管理者ガイド』を参照
親トピック: リモートPDBのクローニング: 例
非CDBのクローニング
非CDBのクローニング手順は、リモートPDBのクローニング手順と非常によく似ています。
- 非CDBのクローニングについて
ソースが非CDBである場合は、非CDBへのデータベース・リンクをFROM
句で指定する必要があります。 - 非CDBのクローニング: 基本的なステップ
PDBは、非CDBをクローニングすることで作成できます。 - リモート非CDBのクローニング: 例
この例では、様々な要因に基づき、mydb
という名前のリモート・ソース非CDBを、pdb2
という名前のターゲットPDBにクローニングして新しいPDBを作成します。
親トピック: PDBまたは非CDBのクローニング
非CDBのクローニングについて
ソースが非CDBである場合は、非CDBへのデータベース・リンクをFROM
句で指定する必要があります。
次の図は、ソースがリモート非CDBである場合に、この手法で新しいPDBがどのように作成されるかを示しています。
親トピック: 非CDBのクローニング
非CDBのクローニング: 基本的なステップ
PDBは、非CDBをクローニングすることで作成できます。
一般的な前提条件
次の前提条件を満たしている必要があります。
-
「PDB作成の一般的な前提条件」で説明している前提条件を満たします。
ノート:
ソースの非CDBのバックアップを使用して新しいPDBをリカバリできるようにするには、クローニングの前に
DBMS_PDB.EXPORTRMANBACKUP
を使用する必要があります。 -
現行ユーザーは、ターゲットPDBが含まれるCDBのルートで
CREATE PLUGGABLE DATABASE
システム権限を持っている必要があります。 -
ソースとターゲットのプラットフォームは、次の要件を満たしている必要があります。
-
endiannessが同じである必要があります。
-
ソース・プラットフォームにインストールされているデータベース・オプションは、ターゲット・プラットフォームにインストールされているデータベース・オプションと同じか、サブセットである必要があります。
-
-
CDBと非CDBでOracle Database 12cリリース1 (12.1.0.2)以上が実行されている必要があります。
-
CDBと非CDBで同じOracle Databaseリリースが実行されている必要があります。
-
新しく作成したPDBのデータ・ブロック・サイズはCDBと一致している必要があります。
-
非CDBが
NOARCHIVELOG
モードになっている場合は、読取り専用モードでオープンする必要があります。非CDBがARCHIVELOG
モードになっている場合は、読取り専用または読取り/書込みでオープンできます。
文字セットの前提条件
-
CDBの文字セットがAL32UTF8でない場合、ソースとターゲットには互換性のある文字セットおよび各国語文字セットが必要です。PDBがクローニングされるCDBの文字セットがAL32UTF8である場合、この要件は適用されません。
-
アプリケーションPDBを作成している場合、アプリケーションPDBはアプリケーション・コンテナと同じ文字セットおよび各国語文字セットである必要があります。
CDBのデータベース文字セットがAL32UTF8の場合、アプリケーション・コンテナの文字セットおよび各国語文字セットはCDBと異なっていても構いません。ただし、アプリケーション・コンテナ内のすべてのアプリケーションPDBには、アプリケーション・コンテナと同じ文字セットおよび各国語文字セットが必要です。
ノート:
Oracle Multitenantでは、あるコンテナのLOBに対する異なる文字セットのコンテナによるデータ・リンク、拡張データ・リンクまたはCONTAINERS()
句を使用したアクセスはサポートされません。たとえば、CDBルートとsalespdb
の文字セットが異なる場合、CDBルートで実行されるCONTAINERS()
問合せはsalespdb
のLOBにアクセスできません。
データベース・リンクの前提条件
次の前提条件を満たしている必要があります。
-
データベース・リンクで、ターゲットCDBからソース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の場所にコピーする必要があります。
リモート非CDBをクローニングするには:
-
SQL*Plusで、現在のコンテナがターゲットCDBのルートまたはターゲット・アプリケーション・コンテナのアプリケーション・ルートであることを確認します。
-
CREATE PLUGGABLE DATABASE
文を実行し、FROM
句でソース非CDBを指定します。必要に応じて、他の句を指定します。作成した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を作成できるようにするには、その前に削除する必要があります。 -
ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
スクリプトを実行します。このスクリプトは、PDBを初めてオープンする前に実行する必要があります。noncdb_to_pdb.sql
スクリプトを実行するには、次のステップを実行します。-
新しく作成したPDBにコンテナを設定します。
現在のユーザーには
SYSDBA
管理権限が必要であり、その権限は共通で付与されているか、またはPDBでローカルに付与されている必要があります。ユーザーは、接続時にAS SYSDBA
を使用して権限を行使する必要があります。 -
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は、バックアップしないとリカバリできません。
関連項目:
-
非CDBからPDBをクローニングする詳細な例は、My Oracle Supportノート1928653.1を参照
-
PDBのバックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください
-
文字セットの互換性に関する要件について学習するには、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください
-
PDB_FILE_NAME_CONVERT
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください
親トピック: 非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管理者ガイド』を参照してください
親トピック: 非CDBのクローニング
リフレッシュ可能なクローンPDBについて
CREATE PLUGGABLE DATABASE ... REFRESH MODE
文は、ソースPDBをクローニングし、クローンをリフレッシュ可能に構成します。クローンPDBをリフレッシュすると、最後のREDOログの適用以降に蓄積されたREDOでクローンPDBが更新されます。
- リフレッシュ可能なクローンPDBの目的
本番PDBのクローニング操作には長い時間がかかる場合があります。 - 自動および手動リフレッシュ・モード
設定した間隔で自動的にリフレッシュするようにクローンPDBを構成するか、またはALTER PLUGGABLE DATABASE REFRESH
文により手動でリフレッシュできます。 - リフレッシュ可能なクローンPDBの要件
リフレッシュ可能なクローンPDBを作成するには、データベース・リンクが必要です。データベース・リンクは、同じCDBまたは別のCDBを指し示すことができます。 - リフレッシュ可能なクローンPDBの作成: シナリオ
このシナリオでは、pdb1
という名前のリモートPDBからpdb1_ref_cln
という名前のリフレッシュ可能なクローンを作成します。
親トピック: PDBまたは非CDBのクローニング
リフレッシュ可能なクローンPDBの目的
本番PDBのクローニング操作には長い時間がかかる場合があります。
システム上でのドラッグを避けるためPDBをあまりクローニングしないと、クローニングしたデータが古くなります。リフレッシュ可能なクローンPDBによってこの問題が解決します。リフレッシュ可能クローンPDBが古くなっている場合は、それをクローズしてから、最新のREDOでリフレッシュできます。リフレッシュ可能クローンPDBは、リフレッシュされていない場合は、読取り専用でオープンできます。本番PDBの最終マスターのリフレッシュ可能クローンを保持し、PDBレベルのスナップショットを取得してから、開発およびテスト用にそれらの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に変換する必要があります。 -
表領域暗号化アルゴリズムへの変更(AES128からAES256への変更など)は、ソースPDBでアルゴリズムが変更された後はリフレッシュ可能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の作成: シナリオ
このシナリオでは、pdb1
という名前のリモートPDBからpdb1_ref_cln
という名前のリフレッシュ可能なクローンを作成します。
クローンPDBはソース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モードである必要があります。
リフレッシュ可能なクローンPDBを作成するには:
-
SQL*Plusで、現在のコンテナがCDBルートまたはアプリケーション・ルートであることを確認します。
現在のコンテナがCDBルートの場合、PDBはCDBに作成されます。現在のコンテナがアプリケーション・ルートの場合、アプリケーションPDBはアプリケーション・コンテナ内に作成されます。
-
CREATE PLUGGABLE DATABASE
文を実行します。次の文では、
pdb1
からpdb1_ref_cln
を作成します。CREATE PLUGGABLE DATABASE pdb1_ref_cln FROM pdb1@pdb1_link REFRESH MODE EVERY 60 MINUTES;
関連項目:
親トピック: リフレッシュ可能なクローンPDBについて
PDBスナップショットからのPDBのクローニング
PDBスナップショットからPDBを作成するには、CREATE PLUGGABLE DATABASE … USING SNAPSHOT
文を実行します。
- PDBスナップショットからのPDBのクローニングについて
PDBスナップショットはPDBのPoint-in-Timeコピーです。スナップショットの作成中に、ソースPDBを読取り専用または読取り/書込みでオープンできます。PDBスナップショットからのクローンは、フルであり、スタンドアロンのPDBです。 - PDBスナップショットからのPDBのクローニング: シナリオ
このシナリオでは、CREATE PLUGGABLE DATABASE ... USING SNAPSHOT
を実行することで、PDBスナップショットから新しいPDBを作成します。
親トピック: PDBまたは非CDBのクローニング
PDBスナップショットからのPDBのクローニングについて
PDBスナップショットはPDBのPoint-in-Timeコピーです。スナップショットの作成中に、ソースPDBを読取り専用または読取り/書込みでオープンできます。PDBスナップショットからのクローンは、フルであり、スタンドアロンのPDBです。
親トピック: PDBスナップショットからのPDBのクローニング
PDBスナップショットからのPDBのクローニング: シナリオ
このシナリオでは、CREATE PLUGGABLE DATABASE ... USING SNAPSHOT
を実行して、PDBスナップショットから新しいPDBを作成します。
想定
この例では、次の要因を想定しています。
-
ソースPDB
salespdb
の8個の日次スナップショットを含むPDBスナップショット・カルーセルが存在しています。スナップショットには作成時の曜日、日付および時刻にちなんだ名前が付けられています(例:pdb1_mon_2_1201
、pdb1_tue_3_1201
、pdb1_wed_4_1201
など)。 -
ソースの
salespdb
が読取り/書込みモードであった場合は、すべてのスナップショットが作成されています。 -
新しい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 ... USING SNAPSHOT
文を実行します。次の文は、
pdb1_wed_4_1201
という名前のPDBのスナップショットからpdb1_copy
PDBをクローニングします。CREATE PLUGGABLE DATABASE pdb1_copy FROM pdb1 USING SNAPSHOT pdb1_wed_4_1201;
関連項目:
-
各種エディションおよびサービスでサポートされる機能の詳細は、『Oracle Databaseライセンス情報ユーザー・マニュアル』を参照
親トピック: PDBスナップショットからのPDBのクローニング
スナップショット・コピーPDBの作成およびマテリアライズ
PDBは、基礎となる記憶域のスナップショットからクローニングできます。PDBファイルはスパースですが、それらのファイルをマテリアライズしてスタンドアロンPDBを作成できます。
- スナップショット・コピーPDBについて
スナップショット・コピーPDBは、CREATE PLUGGABLE DATABASE ... FROM ... SNAPSHOT COPY
文を実行することで作成できます。ソースPDBは、FROM
句で指定します。 - スナップショット・コピーPDBの作成: シナリオ
このシナリオでは、CREATE PLUGGABLE DATABASE
でSNAPSHOT COPY
句を指定することで、スナップショット・コピーPDBを作成します。 - スナップショット・コピーPDBのマテリアライズ
MATERIALIZE
句を指定したALTER PLUGGABLE DATABASE
文を実行して、スナップショット・コピーPDBをマテリアライズできます。スナップショット・コピーPDBをマテリアライズすると、すべてのデータ・ブロックがコピーされます。
親トピック: PDBまたは非CDBのクローニング
スナップショット・コピーPDBについて
スナップショット・コピーPDBは、CREATE PLUGGABLE DATABASE ... FROM ... SNAPSHOT COPY
文を実行することで作成できます。ソースPDBは、FROM
句で指定します。
スナップショット・コピーにより、クローンの作成に必要な時間が短縮されます。これは、ソース・データ・ファイルの完全なコピーが含まれていないためです。さらに、スナップショット・コピーPDBは、ソースPDBの領域よりもわずかな領域しか占有しません。
記憶域クローンには、ターゲットPDBのGUIDを使用して名前およびタグが付けられます。記憶域クローンのクローン・タグを表示するには、DBA_PDB_HISTORY.CLONETAG
列を問い合せます。
- スナップショットのコピーPDBの記憶域要件
CREATE PLUGGABLE DATABASE ... FROM srcpdb ... SNAPSHOT COPY
を使用する場合は、ソースPDBのデータ・ファイルが、同じ記憶域タイプで存在している必要があります。 - スナップショット・コピーPDBの制限
スナップショット・コピーPDBの基になっている記憶域スナップショットは削除できません。
親トピック: スナップショット・コピーPDBの作成およびマテリアライズ
スナップショットのコピーPDBの記憶域要件
CREATE PLUGGABLE DATABASE ... FROM srcpdb ... SNAPSHOT COPY
を使用する場合は、ソースPDBのデータ・ファイルが、同じ記憶域タイプで存在している必要があります。
CREATE PLUGGABLE DATABASE ... FROM ... SNAPSHOT COPY
コマンドの動作は、次のルールに基づいて決まります。
-
ファイル・システムで記憶域管理スナップショットがサポートされている場合、スナップショット・コピーPDBは、基礎となるファイル・システムの記憶域レベル・コピーに基づいています。スナップショット・コピーPDBには、スパース・ファイルが含まれています。copy-on-writeテクノロジを使用すると、ディスク上の記憶域がさらに必要になるのは変更されたブロックのみとなります。
-
ファイル・システムで記憶域スナップショットがサポートされていない場合、アルゴリズムは次のようになります。
-
ストレージ・システムでOracle Exadataスパース・ディスク・グループが使用されている場合は、Oracle Databaseによってスナップショット・コピーPDBが作成されます。ただし、そのスナップショット・コピーPDBの存続期間中は、ソースPDBが読取り専用のままである必要があります。
-
ストレージ・システムでOracle Exadataスパース・ディスク・グループが使用されない場合、動作は次のようになります。
-
CLONEDB=true
の場合、ソースPDBファイルの基礎になるファイル・システムは、任意のローカル・ファイル・システム、ネットワーク・ファイル・システム(NFS)またはOracle ACFSなどのクラスタ化ファイル・システムになります。ネットワーク・ファイル・システムを使用する場合は、CDBに対してDirect NFSを有効にする必要があります。ファイル・システムはスパース・ファイルをサポートする必要があります。ほとんどのUNIXシステムは、これらの要件を満たしています。CLONEDB=true
の場合、ソースPDBのオープン・モードには次のような影響があります。-
ソースPDBが読取り専用モードでオープンされている場合、Oracle Databaseでは、copy-on-writeテクノロジを使用してスナップショット・コピーPDBが作成されます。スナップショット・コピーPDBには、完全コピーではなく、スパース・ファイルが含まれています。
-
ソースPDBが読取り/書込みモードでオープンされていない場合は、Oracle Databaseによってエラーが発行されます。
-
-
CLONEDB=false
の場合は、Oracle Databaseによってエラーが発行されます。
-
-
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 ACFSの詳細は、Oracle Automatic Storage Management Cluster File System管理者ガイドを参照してください。
-
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の制限
スナップショット・コピーPDBの基になっている記憶域スナップショットは削除できません。
スナップショット・コピーPDBをCDBルートまたはアプリケーション・コンテナから切断することはできません。スナップショット・コピーPDBを切断しようとすると、エラーが発生します。ただし、スナップショット・コピーPDBのマテリアライズは可能です。マテリアライズによってスタンドアロンPDBにすると、削除できるようになります。
ノート:
USING SNAPSHOT
句を使用して作成されたPDBとSNAPSHOT COPY
句を使用して作成されたPDBとでは、プロパティが異なります。1つのCREATE PLUGGABLE DATABASE
コマンドで両方の句を指定することはできません。CREATE PLUGGABLE DATABASE … FROM … USING SNAPSHOT
句では、スタンドアロンの完全PDBが作成されます。これには、マテリアライズは不要です。CREATE PLUGGABLE DATABASE … FROM … SNAPSHOT COPY
句ではスパースPDBが作成されます。これは、基になっている記憶域レベル・スナップショットを削除する場合にはマテリアライズする必要があります。
親トピック: スナップショット・コピーPDBについて
スナップショット・コピーPDBの作成: シナリオ
このシナリオでは、CREATE PLUGGABLE DATABASE
でSNAPSHOT COPY
句を指定することで、スナップショット・コピーPDBを作成します。
想定
このシナリオでは、次の要因を想定しています。
-
新しいスナップショット・コピーPDBは、
pdb1
というPDBから作成されます。 -
基礎となるファイル・システムでは、記憶域スナップショットがサポートされています。したがって、
CLONEDB
初期化パラメータを設定する必要はありません。 -
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を作成するには:
-
SQL*Plusで、現在のコンテナがCDBルートまたはアプリケーション・ルートであることを確認します。
現在のコンテナがCDBルートの場合、PDBはCDBに作成されます。現在のコンテナがアプリケーション・ルートの場合、アプリケーションPDBはアプリケーション・コンテナ内に作成されます。
-
CREATE PLUGABBLE DATABASE … SNAPSHOT COPY
文を実行します。次の文は、
pdb1
からpdb1_snap_copy
PDBをクローニングします。CREATE PLUGGABLE DATABASE pdb1_snap_copy FROM pdb1 SNAPSHOT COPY;
pdb1_snap_copy
が存在するかぎり、pdb1_snap_copy
の基になっている記憶域スナップショットは削除できません。
スナップショット・コピーPDBのマテリアライズ
MATERIALIZE
句を指定したALTER PLUGGABLE DATABASE
文を実行して、スナップショット・コピーPDBをマテリアライズできます。スナップショット・コピーPDBをマテリアライズすると、すべてのデータ・ブロックがコピーされます。
スナップショット・コピーPDBをマテリアライズすると、スナップショット・コピーPDB(スパース・ファイルを使用する)は、完全PDB(スパース・ファイルを使用しない)に変換されます。マテリアライズされたPDBは、ソースPDBに依存しなくなり、削除や別のオープン・モードへの変更が可能です。
たとえば、pd1_snap_copy
がスナップショット・コピーPDBである場合は、ALTER PLUGGABLE DATABASE MATERIALIZE
コマンドを実行することで、それをマテリアライズしてスタンドアロンPDBにできます。マテリアライズ後は、pdb1_snap_copy
は記憶域レベルのスナップショットに依存しなくなり、削除できるようになります。
PDBスナップショットをマテリアライズするには:
-
SQL*Plusで、現在のコンテナがマテリアライズされるスナップショット・コピーPDBであることを確認します。
-
MATERIALIZE
句を指定してALTER PLUGGABLE DATABASE
文を実行します。
例7-2 スナップショット・コピーPDBのマテリアライズ
次のSQL文は、スナップショット・コピーPDBをマテリアライズします。
ALTER PLUGGABLE DATABASE MATERIALIZE;
関連項目:
-
スナップショット・コピーPDBについてさらに学習するには、「スナップショット・コピーPDBについて」を参照してください。
-
すべてのスナップショット・クローンPDBを削除した後にソースPDBのデータ・ファイル権限を元に戻す方法を学習するには、My Oracle Supportノート2627975.1を参照してください。
親トピック: スナップショット・コピーPDBの作成およびマテリアライズ
分割ミラーによるクローンPDBの作成
Oracle ASMでは、分割ミラーは親コピーからPoint-in-Timeメディア・コピーをデタッチするプロセスです。分割後、親コピーに対する更新は子コピーに影響しません。
Oracle Database 18c以降では、親コピーは、記憶域ボリュームではなく、PDBであることが可能です。分割ミラーによるクローンPDBは親と同じメディア上に存在します。主要なユースケースでは、Oracle ASM環境でテストおよび開発のPDBを迅速にプロビジョニングします。
ノート:
分割ミラーによるクローンPDBには、Oracle ASMの柔軟性および拡張ディスク・グループが必要です。
ミラー・リフレッシュによって、親PDBからの変更で分割ミラーによるクローンPDBをリフレッシュします。実際には、この操作は、ミラー分割を削除してから新しいミラー分割を取得するのと同じです。
分割ミラーによるクローンPDBを削除するには、ALTER PLUGGABLE DATABASE ... DROP MIRROR COPY
を入力します。
分割ミラーによるクローンPDBを作成するには:
-
SQL*Plusを起動し、CDBルートに接続します。
-
ソースPDBは、
ALTER PLUGGABLE DATABASE ... PREPARE MIRROR COPY
文を発行することで準備します。 -
CREATE PLUGGABLE DATABASE ... FROM ... USING MIRROR COPY
文を発行して、ソースPDBからクローンPDBを作成します。 -
必要に応じて、
V$ASM_DBCLONE_INFO
ビューを問い合せて、ソースPDB、クローニングされたPDB、およびそのファイル・グループ間の関係を確認します。
関連項目:
- 分割ミラーによるクローンPDBを作成または削除する方法を学習するには、『Oracle Automatic Storage Management管理者ガイド』を参照してください
-
V$ASM_DBCLONE_INFO
についてさらに学習するには、『Oracle Databaseリファレンス』を参照してください
親トピック: PDBまたは非CDBのクローニング