9.7.8 PDB用のスパース・テスト・マスターの作成

この手順では、Oracle Multitenant Databaseのプラガブル・データベース(PDB)用に階層型スナップショット・ツリーまたはスパース・テスト・マスターを手動で作成します。

参照用のdailyスナップショットを作成する間、テスト・マスターは閉じられている必要があります。停止時間はごく短い(5分未満)です。Oracle GoldenGateなどのレプリケーション・メカニズムを使用して、本番PDBでスパース・テスト・マスターを最新の状態に維持できます。PDBを使用したOracle GoldenGateの構成の詳細は、『Oracle GoldenGate Oracleインストレーションおよびセットアップ・ガイド』マルチテナント・コンテナ・データベースでのOracle GoldenGateの構成に関する項を参照してください。次の例では、Oracle GoldenGateを使用していると想定しています。

ステップ1: PROD PDBからの最初のテスト・マスターPDBの作成

これは、テスト・マスターPDBをインスタンス化する従来のPDBのクローニング操作です。クローニングが完了したら、Oracle GoldenGateを構成して、本番のPRODPDB1 PDBから変更を抽出し、これらの変更をテスト・マスターTMPDB1 PDBにレプリケートします。

  1. PRODコンテナ・データベース(CDB)のルートで次のコマンドを実行します。

    PRODCDB> alter pluggable database prodpdb1 close;
    
    PRODCDB> alter pluggable database prodpdb1 open read only;
  2. テスト・マスターCDBのルートから次のコマンドを実行します。

    TMCDB> create database link PROD_DBLINK
    connect to system identified by password using 'PROD_CDB';
    
    TMCDB> create pluggable database TMPDB1
    from PRODPDB1@PROD_DBLINK;
    
    TMCDB> alter pluggable database TMPDB1 open;
    
  3. PRODPDB1 PDBで行われた変更がTMPDB1 PDBに抽出、レプリケートおよび適用されるよう、Oracle GoldenGateを構成します。ExtractおよびReplicatを構成し、抽出プロセスを開始した後、PRODPDB1 PDBを読取り/書込みモードで開きます。

    ノート:

    Oracle GoldenGateが構成され、抽出プロセスが開始されるまで、PRODPDB1 PDBを変更用に開くことはできません。
    PRODCDB> alter pluggable database PRODPDB1 close;
    PRODCDB> alter pluggable database PRODPDB1 open;

このとき、テスト・マスターにはPRODPDB1のフル・コピーがあり、TMPDB1PRODPDB1で行われたデータの変更をすべて受け取ります。

ノート:

Oracle GoldenGateでは、CREATE TABLESPACEまたはADD DATAFILEのようなデータ・ディレクトリの変更をレプリケートしません。スキーマの変更のみ、PRODPDB1からTMPDB1にレプリケートされます。

図9-19 PRODPDB1プラガブル・データベースから作成されるTMPDB1

図9-19の説明が続きます
「図9-19 PRODPDB1プラガブル・データベースから作成されるTMPDB1」の説明

TMPDB1は読取り/書込みモードで開くことができますが、Oracle GoldenGateを通じて受け取る必要がある変更はPRODPDB1のみのため、読取り専用のままにしてください。

TMPDB1からスナップショットを作成するには、テスト・マスターPDBを読取り専用モードで開く必要があります。スナップショットを作成するテスト・マスターPDB、およびソースにより最新の状態に維持されるテスト・マスターPDBを提供するには、2つのPDBが必要です。次のステップは、これを達成する方法を示します。

ステップ2: 読取り専用のdailyスナップショットの作成およびTMPDB1 PDBの新しいスパース・テスト・マスターPDBへの移動

このステップでは、テスト・マスターとして動作する読取り専用のスナップショットPDBを作成します。その後、この読取り専用のスナップショットPDBから毎日、読取り/書込み用のPDBを作成できます。主なステップは次のとおりです。

  • プライベートの読取り/書込みクライアントが使用可能な読取り専用の(daily)スナップショットPDBを作成します。

  • 読取り専用のdailyスナップショットPDBを指す新しいスパースTMPDB1 PDBを作成します。また、新しいTMPDB1 PDBは、PRODPDB1から変更を受け入れ、適用します。

TMPDB1 PDBに接続し、次のコマンドを実行します。

TMCDB> alter session set container = CDB$ROOT;

# Stop the Oracle GoldenGate replicat process at the Test Master database.  This allows 
# all changes made at PRODPDB1 to continue to be extracted and then applied to  
# TMPDB1 when the replicat process is restarted.

# Close the test master PDB.
TMCDB> alter pluggable database TMPDB1 close;

# Write the test master PDB metadata to an XML file.
TMCDB> alter pluggable database TMPDB1 unplug into 
       '/home/oracle/snapshot/TMPDB1_monday.XML';

# Drop the test master PDB, but keep the data files.
TMCDB> drop pluggable database TMPDB1 keep datafiles;

# Create a TMPDB1_MONDAY PDB using the XML file you just created.
#Use the NOCOPY clause to reuse the original data files.

TMCDB> create pluggable database TMPDB1_MONDAY using 
       '/home/oracle/snapshot/TMPDB1_monday.XML' nocopy;

# Open the new TMPDB1_MONDAY PDB. The PDB must be opened
# once in read/write mode to complete the creation process.

TMCDB> alter pluggable database TMPDB1_MONDAY open;
TMCDB> alter pluggable database TMPDB1_MONDAY close;
TMCDB> alter pluggable database TMPDB1_MONDAY open read only;

# Create the new TMPDB1 PDB to receive changes from PRODPDB1. This PDB
# must have the same name as the original test master PDB to ensure no
# changes are required to the Oracle GoldenGate configuration.

TMCDB> create pluggable database TMPDB1 from TMPDB1_MONDAY
        create_file_dest='+SPARSE'
        snapshot copy;

# Open the new TMPDB1 PDB. The PDB must be opened once in read/write 
# mode to complete the PDB creation process.

TMCDB> alter pluggable database TMPDB1 open;
TMCDB> alter pluggable database TMPDB1 close;
TMCDB> alter pluggable database TMPDB1 open read only;


# Restart the Oracle GoldenGate replicat process to the new TMPDB1
# PDB. The Oracle GoldenGate replicat process now applies changes from  
# PRODPDB1 to the TMPDB1 snapshot and all changes are written to 
# sparse files.

次の図は、TMPDB1_MONDAYから作成されるTMPDB1を示しています。オリジナルのTMPDB1は、前述のDROP PLUGGABLE DATABASE/CREATE PLUGGABLE DATABASEのステップでTMPDB1_Mondayという名前に変更されています。新しいTMPDB1は、TMPDB1に対して変更が行われるまで、TMPDB1_Mondayとまったく同じに見えるスパース・スナップショット・プラガブル・データベースです。Oracle GoldenGateは新しいTMPDB1スナップショットにREDOを適用します。Replicat構成への変更は必要ありません。

図9-20 TMPDB1_MONDAYから作成されるTMPDB1

図9-20の説明が続きます
「図9-20 TMPDB1_MONDAYから作成されるTMPDB1」の説明

ステップ3:TMPDB1_MONDAYからの読取り/書込みスナップショットの作成

TMPDB1ではなく、TMPDB1_MONDAYからスナップショットを作成します。これにより、TMPDB1 PDBは、PRODPDB1から変更を受け取り、適用できます。

TMPDB1_MONDAY PDBに接続し、次のコマンドを実行します。

TMCDB> alter session set container = cdb$ROOT;

TMCDB> create pluggable database TEST_MONDAY_JIM from TMPDB1_MONDAY
   create_file_dest='+SPARSE'
   snapshot copy;

TMCDB> alter pluggable database TEST_MONDAY_JIM open;

次の図は、TMPDB1_MONDAYから作成されるTEST_MONDAY_JIMスナップショットPDBを示しています。TEST_MONDAY_JIMではTMPDB1_MONDAYが親として使用されるため、スナップショットPDBに変更が追加されるまで、TMPDB1_MONDAY_JIM内のすべてのデータはTMPDB1_MONDAYのデータと同じです。Oracle GoldenGateは引き続きREDOを受け取り、TMPDB1に適用します。

図9-21 TMPDB1_MONDAYから作成されるTEST_MONDAY_JIM

図9-21の説明が続きます
「図9-21 TMPDB1_MONDAYから作成されるTEST_MONDAY_JIM」の説明

別のテスト・マスターおよびスナップショットを作成する必要がある場合は、ステップ2を繰り返す必要があります。たとえば、火曜日にテスト・マスターを作成するには、次を実行します。

TMPDB1 PDBのSQL*Plusセッションを開始します。

TMCDB> alter session set container = CDB$ROOT;

# Stop the Oracle GoldenGate replicat process from applying changes to
# TMPDB1

# Close the test master PDB
TMCDB> alter pluggable database TMPDB1 close;

# Write the test master PDB metadata to an XML file
TMCDB> alter pluggable database TMPDB1 unplug into 
'/home/oracle/snapshots/TMPDB1_tuesday.XML';

# Drop the test master PDB, but keep the data files
TMCDB> drop pluggable database TMPDB1 keep datafiles;

# Create a TMPDB1_TUESDAY PDB from the XML file
TMCDB> create pluggable database TMPDB1_TUESDAY using 
'/home/oracle/snapshot/TMPDB1_tuesday.XML' nocopy;

# Open the new TMPDB1_TUESDAY PDB
TMCDB> alter pluggable database TMPDB1_TUESDAY open;
TMCDB> alter pluggable database TMPDB1_TUESDAY close;
TMCDB> alter pluggable database TMPDB1_TUESDAY open read only;

# Create the new TMPDB1 PDB as a snapshot PDB
TMCDB> create pluggable database TMPDB1 from TMPDB1_TUESDAY
   create_file_dest='+SPARSE'
   snapshot copy;

# Open the TMPDB1 PDB
TMCDB> alter pluggable database TMPDB1 open;
TMCDB> alter pluggable database TMPDB1 close;
TMCDB> alter pluggable database TMPDB1 open read only;

# Restart the Oracle GoldenGate replicat process to apply changes to
# the new TMPDB1

前述のステップ3と同様、TMPDB1_TUESDAYから読取り/書込みスナップショットPDBを作成できます。フル・データベースのスパース・テスト・マスターと同様、このプロセスを合計9回まで繰り返すことができます。その後は、新しいTMPDB1テスト・マスターを作成するか、オリジナルのTMPDB1を削除して再度作成し、新しい階層型スナップショット・ツリーを構築する必要があります。