4.7.2 別のコンテナ・データベース内のプラガブル・データベースのシン・クローニング

データベース・リンクとともに、CREATE PLUGGABLE DATABASE SQLコマンドを使用すると、別のコンテナ・データベース(CDB)内にある既存のプラガブル・データベース(PDB)の書込み可能なスナップショット・コピー(クローン)を作成できます。たとえば、次のコマンドでは、pdb1cという名前のpdb1のクローンを作成します。

SQL> CREATE PLUGGABLE DATABASE pdb1c
     FROM pdb1@CDB1-link SNAPSHOT COPY;

この例では、クローニングされたPDB (pdb1c)は、SQLコマンドを処理するCDB内に存在します。元の(ソース) PDB (pdb1)は、データベース・リンク(CDB1-link)で参照されるCDB内に存在します。

両方のCDBで同じExascaleボールトを使用する場合、PDBスナップショット・コピー操作では、ネイティブのExascaleクローニング機能が自動的に使用され、基礎となるOracle Databaseファイルがシン・プロビジョニングされます。

シン・クローニングされたPDBデータ・ファイルは、基礎となるソースPDBデータ・ファイルと同じExascaleボールト内に存在し、Exascaleではリダイレクト・オンライト手法を使用してクローニングされたデータ・ファイルを作成および保守します。その結果、基礎となるデータ・ファイルのサイズに関係なく、クローニング操作は即時実行されます。また、クローンは非常に領域効率に優れています。クローニングされたデータ・ファイルは、最初は追加領域を消費せず、物理ストレージ領域は、新しいデータが書き込まれた際にのみ割り当てられます。

Oracle Database内では、クローニングされたファイルは通常のデータ・ファイルと同様に機能し、DBA_DATA_FILESなどの標準のOracle Databaseディクショナリ・ビューに表示されます。また、V$EXA_FILE Oracle Databaseディクショナリ・ビューで、様々なExascale固有のファイルの詳細を確認できます。

Exascale内では、ESCLI lssnapshotsコマンドを使用すると、クローニングされたデータ・ファイルとその基礎となるソース・ファイル間のアソシエーションを表示できます。

ここで紹介される手法を使用して、Oracle Data Guardスタンバイ・データベースに存在するPDBをクローニングすることもできます。この手法を使用すると、領域効率の高いテスト・データベースおよび開発データベースをプライマリ・データベースから分離できます。

スタンバイ・データベースからPDBをクローニングするには、クローンの作成中にスタンバイ・データベースでREDO適用プロセスを短時間停止する必要があります。次に例を示します

DGMGRL> edit database STANDBY set state='apply-off’;
SQL> CREATE PLUGGABLE DATABASE pdb1test
     FROM pdb1@STANDBY-link SNAPSHOT COPY;
DGMGRL> edit database STANDBY set state='apply-on’;

この例では、クローニングされたPDB (pdb1test)は、SQLコマンドを処理するCDB内に存在します。元の(ソース) PDB (pdb1)は、データベース・リンク(STANDBY-link)で参照されるスタンバイ・データベース内に存在します。前のケースと同様に、Exascaleシン・クローンを使用するには、SQLコマンドを処理するCDBで、基礎となるソースPDBデータ・ファイルを格納する同じExascaleボールトを使用する必要があります。

ノート:

ソースPDBがOracle Data Guardのプライマリ・データベースであるかスタンバイ・データベースであるかに関係なく、シン・プロビジョニングされたPDBクローンをプライマリ・データベースに作成すると、対応するスタンバイPDBデータ・ファイルには、スタンバイ・データベースでExascaleストレージが使用されていても、データの完全な(シン・プロビジョニングされていない)コピーが含まれます。これを回避するために、CREATE PLUGGABLE DATABASE SQLコマンドにSTANDBYS=NONEを含めることで、PDBクローンがスタンバイ・データベースに伝播されることを防止できます。