プライマリ・コンテンツに移動
Oracle® Databaseバックアップおよびリカバリ・ユーザーズ・ガイド
12c リリース1 (12.1)
B71297-08
目次へ移動
目次
索引へ移動
索引

前
次

25 データベースの複製

この章では、DUPLICATEコマンドを使用して、独立して機能するデータベース・コピーを作成する方法について説明します。

この章の内容は次のとおりです。

RMANデータベースの複製の概要

データベースを複製するには、DUPLICATEコマンドを使用して、ソース・データベースにあるすべてのデータまたはそのサブセットをコピーします。複製データベース(コピー先のデータベース)は、ソース・データベース(コピー元のデータベース)から完全に独立して機能します。

この項の内容は、次のとおりです。

データベースの複製の目的

複製データベースは様々な目的で有効であり、ほとんどの場合、テストに使用されます。複製データベースでは、次のタスクを実行できます。

  • バックアップ手順およびリカバリ手順のテスト

  • Oracle Databaseの新しいリリースへのアップグレードのテスト

  • データベースのパフォーマンスにアプリケーションが与える影響のテスト

  • スタンバイ・データベースの作成

  • レポートの生成

たとえば、host1上の本番データベースをhost2上に複製し、host1上の本番データベースを通常どおりに実行したまま、host2上の複製データベースを使用してこのデータベースのリストアおよびリカバリを練習できます。

DUPLICATEコマンドではなくオペレーティング・システムのユーティリティを使用してデータベースをコピーした場合、コピーしたデータベースのDBIDは元のデータベースと同じになります。このコピーしたデータベースを元のデータベースと同じリカバリ・カタログに登録するには、DBNEWIDユーティリティを使用してDBIDを変更する必要があります(『Oracle Databaseユーティリティ』を参照)。これに対して、DUPLICATEコマンドを実行すると、複製データベースに対して異なるDBIDが自動的に割り当てられるため、複製データベースをソース・データベースと同じリカバリ・カタログに登録できます。

DUPLICATEコマンドを使用すると、まったく同じ機能を持つデータベースのコピーを作成したり、大きく異なる目的で使用されるフィジカル・スタンバイ・データベースを作成できます。スタンバイ・データベースはプライマリ・データベースのコピーで、プライマリ・データベースのアーカイブREDOログ・ファイルを使用して継続的に更新できます。 プライマリ・データベースにアクセスできない場合は、スタンバイ・データベースへのフェイルオーバーを実行し、それを新しいプライマリ・データベースにすることができます。ただし、データベース・コピーはこの用途には使用できません。データベース・コピーは、フェイルオーバーでの使用を目的としていないため、スタンバイの様々なリカバリ・オプションおよびフェイルオーバー・オプションをサポートしていません

関連項目:

DUPLICATEコマンドを使用したスタンバイ・データベースの作成方法は、『Oracle Data Guard概要および管理』を参照してください。

データベースの複製の基本的な概念

ソース・ホストは、ソース・データベースをホストするコンピュータです。ソース・データベース・インスタンスは、ソース・データベースに関連付けられたインスタンスを表します。

宛先ホストは、複製データベースをホストするコンピュータを表します。ソース・ホストと宛先ホストは、同じコンピュータである場合も異なるコンピュータである場合もあります。複製のプロセスでは、複製データベースに関連付けられたデータベース・インスタンスを補助インスタンスと呼びます。

注意:

同じソース・データベースを使用して同時データベース複製操作を実行することは、サポートされていません。

データベースの複製方法

RMANでは、2種類の基本的な複製がサポートされます。アクティブなデータベースの複製およびバックアップベースの複製です。RMANは、次の接続を使用しているかどうかにかかわらず、バックアップベースの複製を実行できます。

  • ターゲット

  • リカバリ・カタログ

アクティブなデータベースを複製する場合、両方への接続が必要です。

図25-1は、2つの複製方法のディシジョン・ツリーを示します。

RMANを使用したアクティブなデータベースの複製について

アクティブなデータベースの複製の場合、RMANは、ソース・データベース・インスタンスにTARGETとして、補助インスタンスにAUXILIARYとして接続します。その後、データベースはRMANによってネットワークを介して補助インスタンスにコピーされます。ソース・データベースのバックアップは必要ありません。

RMANは、アクティブなデータベースの複製に必要なファイルを、イメージ・コピーまたはバックアップ・セットとして転送できます。

注意:

バックアップ・セットを使用した、アクティブなデータベース複製の実行は、Oracle Database 12cリリース1 (12.1)以上で使用可能です。

図25-2に、アクティブなデータベースの複製を示します。

図25-2 アクティブなデータベースの複製

図25-2の説明は次にあります。
「図25-2 アクティブなデータベースの複製」の説明

イメージ・コピーを使用してアクティブなデータベースの複製が実行されると、RMANがソース・データベースとの接続を確立後、そのソース・データベースから必要なデータベース・ファイルが補助データベースに転送されます。イメージ・コピーの使用には、ソース・データベースで追加のリソースが必要になる場合があります。この方法は、アクティブなデータベースの複製のプッシュベースの方法と呼ばれます。

RMANがバックアップ・セットを使用してアクティブなデータベース複製を実行すると、ソース・データベースおよび補助データベースとの接続が確立されます。その後、補助データベースはOracle Net Servicesを介してソース・データベースに接続し、ソース・データベースから必要なデータベース・ファイルを取得します。このようなアクティブなデータベースを複製する方法は、プルベースの方法とも呼ばれます。

アクティブなデータベース複製にバックアップ・セットを使用すると、特定の機能を利用することができます。RMANは、バックアップの作成時に未使用ブロックの圧縮を使用できるため、ネットワークを介してトランスポートされるバックアップのサイズが削減されます。マルチセクション・バックアップを使用することで、バックアップ・セットをソース・データベース上でパラレルに作成できます。また、ソース・データベースで作成されるバックアップ・セットを暗号化することもできます。

アクティブなデータベース複製にバックアップ・セットとイメージ・コピーのどちらを使用するかを判断する要因

補助チャネルが割り当てられないか、または割り当てられる補助チャネルの数がターゲット・チャネルの数より少ない場合、RMANはイメージ・コピーのみを使用してアクティブなデータベース複製を実行します。

ターゲット・データベースへの接続がネット・サービス名を使用して確立され、次のいずれかの条件が満たされている場合、RMANはバックアップ・セットを使用してアクティブなデータベース複製を実行します。

  • DUPLICATE ... FROM ACTIVE DATABASEコマンドにUSING BACKUPSET, USING COMPRESSED BACKUPSET句またはSECTION SIZE句が含まれる場合。

  • 割り当てられた補助チャネルの数が、割り当てられたターゲット・チャネルの数と同じか、それ以上の場合。

注意:

アクティブなデータベース複製の実行には、バックアップ・セットを使用することをお薦めします。

RMANを使用したバックアップベースの複製について

バックアップベースの複製の場合、RMANでは、既存のRMANバックアップおよびコピーを使用して複製データベースを作成します。この複製方法では、相互に排他的な次の方法のいずれかを使用します。

  • ターゲット・データベース接続を行わない複製。RMANは、リカバリ・カタログからバックアップについてのメタデータを取得します。

  • ターゲット・データベース接続を行わず、リカバリ・カタログを使用しない複製。RMANは、DUPLICATEコマンドでBACKUP LOCATION句を指定して、バックアップおよびコピーが存在する場所のメタデータを取得します。

  • ターゲット・データベース接続を行う複製。RMANはターゲット・データベースの制御ファイルまたはリカバリ・カタログからバックアップのメタデータを取得します。

図25-3に、ターゲット接続を行わない場合のバックアップベースの複製を示します。RMANは、リカバリ・カタログ・データベース・インスタンスおよび補助インスタンスに接続します。転送先ホストは、複製データベースの作成に必要なRMANバックアップにアクセスできる必要があります。

図25-3 ターゲット接続を行わない場合のバックアップベースの複製

図25-3の説明は次にあります。
「図25-3 ターゲット接続を行わない場合のバックアップベースの複製」の説明

図25-4に、ターゲットまたはリカバリ・カタログ・データベース・インスタンスへの接続を行わない場合のバックアップベースの複製を示します。RMANは、転送先ホスト上の複製データベースの補助インスタンスに接続します。複製のためのすべてのバックアップまたはコピーが含まれているディスクのバックアップ場所が、転送先ホストによって使用可能である必要があります。

図25-4 ターゲット接続またはリカバリ・カタログ接続を行わない場合のバックアップベースの複製

図25-4の説明は次にあります。
「図25-4 ターゲット接続またはリカバリ・カタログ接続を行わない場合のバックアップベースの複製」の説明

図25-5に、ターゲット接続を行う場合のバックアップベースの複製を示します。RMANは、ソース・データベース・インスタンスおよび補助インスタンスに接続します。必要に応じて、RMANはリカバリ・カタログ・データベース(図では非表示)に接続できます。転送先ホストは、複製データベースの作成に必要なRMANバックアップにアクセスできる必要があります。

図25-5 ターゲット接続を行う場合のバックアップベースの複製

図25-5の説明は次にあります。
「図25-5 ターゲット接続を行う場合のバックアップベースの複製」の説明

複製データベースの内容

複製データベースには、ソース・データベースと同じ内容か、またはソース・データベース内の表領域のサブセットのみを含めることができます。たとえば、DUPLICATEコマンドのTABLESPACEオプションを使用すると、指定した表領域のみを複製でき、SKIP READONLYオプションを使用すると、複製データベースから読取り専用表領域を除外できます。

RMANによるデータベースの複製方法

バックアップベースの複製では、複製の主な作業は補助チャネルによって実行されます。これらのチャネルは、宛先ホスト上の補助インスタンスのサーバー・セッションに対応しています。アクティブなデータベース複製に使用される複製技術のタイプによって、主な作業をどのチャネルが実行するかが決まります。バックアップ・セットを使用してアクティブなデータベース複製が実行される場合、複製に関する主な作業は補助チャネルによって実行されます。イメージ・コピーが使用される場合、主な作業はターゲット・チャネルによって実行されます。

複製のための明示的な時点が提供されていない場合でも、RMANでデータベースのPoint-in-Timeリカバリを実行する必要があります。Point-in-Timeリカバリが必要なのは、ソース・データベースのオンラインREDOログ・ファイルがバックアップされておらず、複製データベースに適用できないためです。複製データベースをリカバリできるのは、ソース・データベースによってアーカイブされた最新のREDOログ・ファイルの時点までです。

RMANは、複製操作のうち、次の処理を自動化します。

  1. 次の条件を満たしている場合に、補助インスタンスのデフォルトのサーバー・パラメータ・ファイルを作成します。

    • 複製にはスタンバイ・データベースを使用しない。

    • サーバー・パラメータ・ファイルは複製されない。

    • 補助インスタンスは、サーバー・パラメータ・ファイルを使用して起動されていない。

  2. UNTIL句の要件を満たす最新の制御ファイルを、アクティブなデータベースのバックアップまたはコピーからリストアします。

  3. リストアまたはコピーされたバックアップ制御ファイルを、アクティブなデータベースからマウントします。

    注意:

    ソース・データベースの制御ファイルに無効なスレッドが含まれる場合、それらのスレッドも複製データベースで無効になります。

  4. RMANリポジトリを使用して、データファイルを補助インスタンスにリストアするためのバックアップを選択します。この手順は、バックアップベースの複製に適用されます。

  5. 複製データファイルをコピーし、増分バックアップとアーカイブREDOログ・ファイルを使用して、現在以外の時点にリストアします。

  6. 宛先ホストで補助データベース・インスタンスを停止し、NOMOUNTモードで再起動します。

  7. 新しい制御ファイルを作成します(この制御ファイルによって、新しいDBIDが作成されてデータファイルに格納されます)。

  8. RESETLOGSオプションを使用して複製データベースをオープンし、新しいデータベース用のオンラインREDOログを作成します。

    複製データベースを開かない場合は、「複製データベースの状態の指定」の説明のとおり、DUPLICATE文でNOOPEN句を使用します。

関連項目:

複製データベースにコピーされるファイルの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』DUPLICATEに関する項を参照してください。

データベースの複製の基本手順

データベースを複製する手順

この項では、データベースの複製の基本手順について説明します。詳細は、各手順のリンク先を参照してください。

  1. データベースを複製する準備をします。

    「データベースの複製の準備」を参照してください。

    Oracle Real Application Clusters (Oracle RAC)データベースの複製では、補助データベースのCLUSTER_DATABASE初期化パラメータをFALSEに設定します。複製完了後に、このパラメータはTRUEに再設定できます。

  2. RMANを起動し、必要なデータベース・インスタンスに接続します。
  3. アクティブなデータベース複製の場合、ソース・データベースから複製データベースへのファイル転送に使用されるバックアップ・セットを暗号化するか、圧縮するかを指定します。また、マルチセクション・バックアップを使用してバックアップ・セットをソース・データベース上でパラレルに作成するかどうかを決定します。
  4. ソース・データベースを適切な状態に設定します(必要な場合)。
  5. RMANチャネルを構成します(必要な場合)。
  6. 複製を実行します。

    「データベースの複製」を参照してください。

CDBの複製

マルチテナント・コンテナ・データベース(CDB)全体または1つ以上のプラガブル・データベース(PDB)の複製では、「データベースの複製の基本手順」に記載されている非CDBの複製手順にごくわずかな調整のみが必要です。

CDB全体または1つ以上のPDBを複製する場合:

  • 補助インスタンスをCDBとして作成する必要があります。これには、初期化パラメータ・ファイルの次の宣言でインスタンスを開始します。

    enable_pluggable_database=TRUE
    
  • 必要なインスタンスへの接続が指示されたら、SYSDBAまたはSYSBACKUP権限を持つユーザーとしてrootに接続します。両方のインスタンスで、複製を実行しているユーザーのパスワードを同じにする必要があります。

  • 補助インスタンスのために初期化パラメータ・ファイルを作成するように指示された場合は、ファイルをソース・データベースからコピーする必要があります。これによって、補助インスタンスはCDBでもあります。コピーした後に、DB_NAMEおよび様々な接続先/場所のパラメータを変更します。

ソースから宛先ホストにバックアップ・ファイルを転送する場合:

この例では、CDB全体のバックアップ・ファイルを転送します。

BACKUP COPY OF DATABASE;

次の例では、PDB pdb3のバックアップ・ファイルのみを転送します。

BACKUP COPY OF PLUGGABLE DATABASE pdb3;

PDBの複製

RMANでは、DUPLICATEコマンドを使用して、PDBを複製できます。単一のPDB、PDBのセットまたはPDB内の表領域を複製できます。

SYSDBAまたはSYSBACKUP権限を付与されたユーザーとして、CDBのルートにログインする必要があります。PDBのバックアップベースの複製を実行するには、リストされたPDBを格納しているCDBのルートとシード・データベース(PDB$SEED)をバックアップする必要があります。

PDBを複製するには、補助インスタンスをCDBとして作成する必要があります。これには、初期化パラメータ・ファイルのenable_pluggable_database=TRUE宣言でインスタンスを開始します。1つまたは複数のPDBを複製すると、root (CDB$ROOT)およびシード・データベース(PDB$SEED)も複製されます。複製されたデータベースは、root、シード・データベースおよび複製されたPDBを含む、完全に機能するCDBです。表25-1に、PDBまたはPDB内の表領域を複製するために使用できるオプションを示します。

表25-1 PDBの複製のオプション

DUPLICATEオプション 説明

PLUGGABLE DATABASE pdb_name

CDB内の指定したPDBを複製します。複数のPDBを複製する場合は、カンマ区切りのリストを使用してください。

SKIP PLUGGABLE DATABASE pdb_name

pdb_nameで指定したPDBを除き、CDB内のすべてのPDBが複製されます。除外する複数のPDBを指定する場合は、カンマ区切りのリストを使用してください。

TABLESPACE pdb_name:tablespace_name

PDB内の指定した表領域を複製します。表領域名には、その表領域が含まれるPDBの名前を接頭辞として付ける必要があります。PDBの名前を省略すると、デフォルトはrootになります。

SKIP TABLESPACE pdb_name:tablespace_name

指定したPDB内の指定した表領域を除き、CDB内のすべての表領域が複製されます。

PDBを複製する手順

  1. 「データベースの複製の基本手順」の手順1から4が完了していることを確認します。

  2. DUPLICATEコマンドに、表25-1で説明したPLUGGABLE DATABASEまたはSKIP PLUGGABLE DATABASEオプションのいずれかを付けて実行します。

    次に、PDBを複製する例を示します。

    • CDB cdb1に、PDB pdb1を複製するには、次のコマンドを使用します。

      DUPLICATE DATABASE TO cdb1 PLUGGABLE DATABASE pdb1;
      
    • データベースcdb1に、PDB pdb1pdb3およびpdb4を複製するには、次のコマンドを使用します。

      DUPLICATE DATABASE TO cdb1 PLUGGABLE DATABASE pdb1,pdb3,pdb4;
      
    • PDB pdb3を除く、CDB内のすべてのデータベースを複製するには、次のコマンドを使用します。

      DUPLICATE DATABASE TO cdb1 SKIP PLUGGABLE DATABASE pdb3;
      

PDB内の表領域を複製する手順

  1. 「データベースの複製の基本手順」の手順1から4が完了していることを確認します。
  2. DUPLICATEコマンドに、表25-1で説明したTABLESPACEオプションを付けて実行します。

    次に、PDBに含まれる表領域を複製する例を示します。

    • PDB pdb1の一部であるusers表領域を複製するには、次のコマンドを使用します。

      DUPLICATE DATABASE TO cdb1 TABLESPACE pdb1:users;
      
    • PDB pdb1と、PDB pdb2内のusers表領域を複製するには、次のコマンドを使用します。

      DUPLICATE DATABASE TO cdb1 PLUGGABLE DATABASE pdb1 TABLESPACE pdb2:users;
      

データベースの複製の準備

データベースを複製する前に、複製方法を決定し、補助データベース・インスタンスを含めてデータベース環境を準備する必要があります。詳細は、各手順のリンク先を参照してください。

次の手順で複製を準備します。

手順1: 複製方法の選択

ビジネス要件およびデータベース環境に応じて、状況に合った最適な複製方法を決定します。次の質問事項を検討してください。

  • それぞれの複製方法の前提条件を十分に理解しているかどうか。

    詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』DUPLICATEコマンドの記述に関する前提条件に関する項を参照してください。

    一部の前提条件は特定のものであり、複製方法に応じて異なります。たとえば、アクティブな複製では、ソース・インスタンスと補助インスタンスにソース・データベースと同じパスワードを使用する必要があります。一方で、ターゲット・データベースおよびリカバリ・カタログに接続しないバックアップベースの複製では、すべてのバックアップおよびデータベース・コピーが単一の場所に存在することのみが必要とされます。

  • ソース・データベースのバックアップが存在しているかどうか。

    アクティブなデータベースの複製の主なメリットとしては、ソース・データベースをバックアップする必要のないことがあげられます。アクティブな複製では、マウントされたデータベース・ファイルまたはオンラインのデータベース・ファイルがネットワークを介して補助インスタンスにコピーされます。この方法のデメリットの1つとしては、作業がネットワークのパフォーマンスに悪影響を及ぼすことがあげられます。また、別のデメリットとして、ファイルを補助ホストに転送するために必要なプロセスがソース・データベースによって実行されているため、ソース・データベースおよび本番ワークロードに影響を与えることもあげられます。

    ソース・データベースのバックアップが存在し、ネットワークへの影響を許容できない場合は、バックアップベースの複製をお薦めします。バックアップを一時記憶域にコピーし、手動で宛先ホストに転送できます。ターゲットまたはリカバリ・カタログとの接続を使用して複製が作成される場合、宛先ホストのバックアップ・ファイルは、ソース・ホスト上のバックアップ・ファイルと同じファイル仕様である必要があります。それ以外の場合、これは要件ではありません。

  • リカバリ・カタログが使用できるかどうか。

    リカバリ・カタログが存在する場合は、RMANがTARGETとしてソース・データベースに接続されていなくても、バックアップベースの複製を実行できます。この方法は、補助ホストからソース・データベースへのネットワーク接続が制限されたり、断続的に中断されるような場合に役立ちます。TARGET接続を行わない複製では、ソース・データベースは複製の影響を受けません。

  • 宛先ホストでどの程度のディスク領域が使用できるか。

    ディスク・バックアップを使用して複製を実行する場合、宛先ホストのディスク領域が問題となることがあります。たとえば、ソース・データベースが1テラバイト(TB)で、共有ディスクまたはネットワーク・ファイル・システム(NFS)を使用せずにディスク・バックアップからデータベースを複製する場合は、宛先ホストで2テラバイト(TB)以上の領域を使用できる必要があります。NFSのパフォーマンスがボトルネックとなるため、環境によっては、手動でバックアップを転送する必要があります。

  • ソース・ホストと宛先ホストの接続がLANまたはWANであるかどうか。

    アクティブなデータベースの複製のパフォーマンスは、Local Area Network (LAN)よりもWide Area Network (WAN)の方が低下する可能性があります。WANにおけるパフォーマンスの低下を許容できないときは、バックアップベースの複製のみが実行可能な選択肢となる場合があります。

  • データベースをいつ複製する予定か。

    ユーザー・アクティビティが高い時間帯にデータベースを複製する必要がある場合には、アクティブな複製によって生じるネットワーク・スループットの損失が問題となる可能性があるため、バックアップベースの複製をお薦めします。また、アクティブなデータベースの複製の場合は、補助ホストへファイルをコピーするときに必要となるRMANチャネルが、パフォーマンスに影響を与えることがあります。

アクティブなデータベース複製に対する暗号化の指定

Oracle Database 12cリリース1 (12.1)以降、RMANでは、複製する必要があるソース・データベース・ファイルの転送に、バックアップ・セットを使用できます。バックアップ・セットは、ネットワークを介して補助データベースに転送されます。セキュリティを強化するために、バックアップ・セットは暗号化できます。DUPLICATEコマンドの前にSET ENCRYPTION ALGORITHMコマンドを使用して、暗号化アルゴリズムを指定します。

アクティブなデータベースの複製を実行する前に、次のいずれかの技術を使用して適切に暗号化されていることを確認します。

  • ソース・データベースで透過的暗号化が使用される場合、「手順6: 宛先ホストへのOracleキーストアのコピー」に説明されているとおりに、ソース・データベースと補助データベース間で、暗号化キーを含むOracleキーストアを共有する必要があります。

  • ソース・データベースでパスワード暗号化が使用されている場合、バックアップの暗号化に使用するパスワードを指定する必要があります。

    次のコマンドは、暗号化パスワードをencr_pwdに設定します。

    SET ENCRYPTION ON IDENTIFIED BY encr_pwd;
    

次の例では、ネット・サービス名を使用してターゲット・データベースおよび補助データベースに接続し、アクティブなデータベースの複製を実行します。暗号化キーが含まれるキーストアはターゲット・データベースと補助データベース間で共有されています。sbuSYSBACKUP権限が付与されたユーザーです。

CONNECT TARGET "sbu@prod AS SYSBACKUP";
CONNECT AUXILIARY "sbu@dup_db AS SYSBACKUP";
SET ENCRYPTION ALGORITHM 'AES128';
DUPLICATE TARGET DATABASE TO dup_db
     FROM ACTIVE DATABASE
     PASSWORD FILE;

アクティブなデータベース複製の実行に使用するバックアップ・セットの圧縮

バックアップ・セットをアクティブなデータベース複製の実行に使用する際、ソース・データベースから宛先データベースへファイルを転送するために作成したバックアップ・セットを圧縮することができます。圧縮されたバックアップ・セットを使用すると、バックアップ・セットのサイズが最小になるため、データベース複製のパフォーマンスが向上します。アクティブなデータベースの複製に使用するバックアップ・セットの圧縮は、Oracle Database 12cリリース1 (12.1)からサポートされています。

アクティブなデータベース複製の実行に必要なデータが含まれるバックアップ・セットを圧縮するには、DUPLICATEコマンドのUSING COMPRESSED BACKUPSET句を使用します。次のコマンドは、圧縮されたバックアップ・セットを使用して、アクティブなデータベース複製を実行します。ターゲット・データベースおよび補助インスタンスには、ネット・サービス名を使用して接続されているものと想定します。

DUPLICATE TARGET DATABASE TO dup_db
     FROM ACTIVE DATABASE
     PASSWORD FILE
     USING COMPRESSED BACKUPSET;

アクティブなデータベース複製のバックアップ・セットのパラレルでの作成

RMANマルチセクション・バックアップでは、非常に大きなデータファイルをパラレルにバックアップすることによって、より高速なバックアップ・パフォーマンスを実現します。各バックアップ・ピースへ別々のチャネル書込みを行い、複数のバックアップ・ピースが作成されます。Oracle Database 12cリリース1 (12.1)から、アクティブなデータベース複製を実行するために必要なソース・ファイルの転送に、マルチセクション・バックアップ・セットを使用できます。

アクティブなデータベース複製に使用できるマルチセクション・バックアップ・セットを作成するには、DUPLICATEコマンドのSECTION SIZE句を使用します。次のコマンドは、各バックアップ・ピースのサイズに400MBを指定してマルチセクション・バックアップ・セットを作成します。ターゲット・データベースおよび補助インスタンスには、ネット・サービス名を使用して接続されているものと想定します。

DUPLICATE TARGET DATABASE TO dup_db
     FROM ACTIVE DATABASE
     PASSWORD FILE          
     SECTION SIZE 400M;

複製データベースの状態の指定

RMAN DUPLICATEコマンドを使用すると、複製データベースが作成されて、RESETLOGSモードで開かれます。DUPLICATEコマンドでNOOPEN句を使用すると、複製データベースを開く必要がないことを指定できます。

次の状況では、作成の直後に複製データベースを開かない場合があります。

  • 複製データベースを開くとエラーになる場合。

  • 複製データベースの初期化パラメータを変更する必要がある場合。

    たとえば、フラッシュバック・データベース設定を変更する必要があるか、高速増分バックアップを構成する必要があるか、またはブロック・チェンジ・トラッキングを変更する必要がある場合です。

  • アップグレード手順の一部として新しいデータベースを作成している場合。

    アップグレード中にRESETLOGSオプションを指定してデータベースを開くことはできません。NOOPEN句を使用すると、データベースを複製した後に、アップグレード・モードで開いて後続のアップグレード・スクリプトを実行できる状態にすることができます。

次のコマンドは、dupdbと呼ばれる複製データベースを作成します。NOOPEN句が使用されるため、RMANは複製データベースを作成しますが、開きません。

DUPLICATE TARGET DATABASE 
TO dupdb
FROM ACTIVE DATABASE
NOOPEN;

手順2: 複製ファイルの名前の指定方法の選択

データベースの複製時に、RMANによって、複製制御ファイル、データファイル、一時ファイルおよびオンラインREDOログ・ファイルの名前が生成されます。このため、これらのファイルの名前の指定方法を決定する必要があります。

最も簡単な複製の方法は、ソース・データベースと同じ名前を使用するように複製データベースを構成する方法です。同じ名前を使用する場合は、環境が次の要件を満たしている必要があります。

  • ソース・データベースがASMディスク・グループを使用している場合、複製データベースは同じ名前のASMディスク・グループを使用する必要があります。

  • ソース・データベース・ファイルがOracle Managed Filesの場合、補助インスタンスは、ソース・データベースと同じディレクトリの場所に、DB_CREATE_FILE_DESTを設定する必要があります。ソース・ホスト上と宛先ホスト上でディレクトリが同じであっても、Oracle Databaseは複製ファイルに対して相対ファイル名を選択します。

  • ソース・データベースのデータベース・ファイルの名前にパスが含まれている場合、そのパス名は複製データベースにあるパス名と同じである必要があります。

    注意:

    宛先ホストとソース・ホストが同じである場合、利用できるいくつかの方法の1つを使用して、複製データベースのデータベース・ファイル・パスを変更します。「複製データベース・ファイルの代替名の指定」を参照してください。

前述の推奨事項に従って環境を構成する場合、複製ファイルの名前の指定で必要となる追加の構成はありません

ソース・データベースと複製データベースでASMディスク・グループを別の名前にすることをお薦めします。次のいずれかの方法を使用して、複製データベースのデータベース・ファイルに別の名前を指定します。

  • 補助インスタンスのDB_CREATE_FILE_DESTおよびLOG_FILE_CREATE_DEST初期化パラメータを設定します。これは、ASMおよびOMFを使用する場合に推奨されます。

  • SET NEWNAMEコマンドを使用します。

  • 補助インスタンスのDB_FILE_NAME_CONVERTおよびLOG_FILE_NAME_CONVERT初期化パラメータを設定します。

    DB_FILE_NAME_CONVERTがASM名に適用されている場合、ディスク・グループ名の変更のみを実行する必要があります。

関連項目:

複製データベースのファイルに別のファイル名を指定する方法の詳細は、「複製データベース・ファイルの代替名の指定」を参照してください。

手順3: 宛先ホストでのOracle Databaseソフトウェアのインストール

ソース・ホストと宛先ホストが異なる場合、補助インスタンスを作成できるように、Oracle Databaseソフトウェアを宛先ホストにインストールする必要があります。次の2つの方法の1つで、ソフトウェアをインストールできます。

  • Oracle Universal Installer (OUI)で、通常のインストールを実行します。

    ソース・データベースと同じリリースのOracle Databaseをインストールします。データベースは作成されず、ソフトウェアのみがインストールされます。必要なパッチを適用します。

  • ソースのOracleホームをクローニングします。

    OUIを使用して、ソースのOracleホームをクローニングします。これによって、ソース・データベースに適用されるすべてのパッチが、複製データベースに存在することになります。

関連項目:

Oracleホームのクローニングの詳細は、Oracle Universal InstallerおよびOPatchユーザーズ・ガイドを参照してください。

手順4: 複製インスタンスからバックアップへのアクセス可能化

注意:

アクティブなデータベースの複製を実行している場合は、この項をスキップし、「手順5: データベースへのリモート・アクセスの準備」に進みます。

ターゲットおよびリカバリ・カタログへの接続を使用して、またはターゲット接続のみを使用して複製を実行している場合、RMANでは、RMANリポジトリのメタデータを使用して、複製に必要なバックアップおよびアーカイブREDOログ・ファイルを検索します。RMANがリカバリ・カタログに接続される場合、RMANはカタログからバックアップ・メタデータを取得します。RMANがカタログに接続されない場合は、(ターゲット接続を行うバックアップベースの複製のときなど)、制御ファイルからメタデータを取得します。

ターゲットにもリカバリ・カタログにも接続せずに複製を実行している場合を除いて、バックアップの名前はRMANリポジトリに記録されている名前と同じ名前で使用できる必要があります。宛先ホスト上の補助チャネルがすべてのデータファイル・バックアップおよびアーカイブREDOログ・ファイルにアクセスできることを確認してください(複製データベースを目的の時点までリストアおよびリカバリするために必要です)。アクセスできない場合、複製は失敗します。アーカイブREDOログ・ファイルは、イメージ・コピーまたはバックアップ・セットとして使用可能です。

注意:

データベース・バックアップは、BACKUP DATABASEで生成する必要はありません。個々のデータファイルの全体バックアップおよび増分バックアップを組み合せることができますが、すべてのデータファイルの全体バックアップが必要です。

この項の内容は、次のとおりです。

補助インスタンスからSBTバックアップへのアクセス可能化

この作業手順はメディア・マネージャの構成によって異なります。

補助インスタンスからSBTバックアップへのアクセスを可能にするための手順

  1. 必要に応じて、宛先ホストにメディア管理ソフトウェアをインストールします。
  2. 宛先ホストからバックアップが含まれているテープにアクセスできるようにします。通常、次のいずれかを実行します。
    • リモート・ホストに接続されているドライブに、テープを物理的に移動します。

    • ネットワーク・アクセスが可能なテープ・サーバーを使用します。

  3. 必要に応じて、リモート・メディア管理ソフトウェアにテープの存在について通知します。

補助インスタンスからディスク・バックアップへのアクセス可能化

補助インスタンスからディスク・バックアップへのアクセスを可能にする場合は、ターゲットまたはリカバリ・カタログに接続された状態でデータベースを複製するかどうかによって、方法が異なります。ターゲットまたはリカバリ・カタログに接続しない場合、BACKUP LOCATION句を使用して、複製のためのバックアップ場所を指定する必要があります。

バックアップ場所を使用する場合、バックアップおよびコピーは共有の場所に存在するか、または宛先ホスト上の場所への移動が可能です。後者の場合は、バックアップまたはコピーの名前や元のパスを保持する必要はありません。BACKUP LOCATIONオプションで指定された場所には、複製されるすべてのファイルをリストアし目的の時点までリカバリするために十分なバックアップ・セット、イメージ・コピーおよびアーカイブ・ログが含まれている必要があります。

バックアップは、すべて同じ時点のものである必要はありません。また、すべてバックアップ・セットである必要も、すべてイメージ・コピーである必要もありません。データファイル・バックアップは、イメージ・コピーまたはバックアップ・セットとして提供されることができます。 アーカイブ・ログは、通常の形式またはアーカイブ・ログのバックアップ・セットとして提供されることができます。

異なる時点のバックアップを使用する場合、バックアップ場所には、最も古いバックアップの開始から目的のリカバリ・ポイントまでの期間をカバーするアーカイブ・ログが含まれる必要があります。

バックアップ場所に複数のデータベースのバックアップ・ファイルが含まれる場合、DATABASE句で、複製するデータベースの名前を指定する必要があります。バックアップ場所に同じ名前を持つ複数のデータベースのバックアップ・ファイルが含まれる場合、DATABASE句で、複製するデータベースの名前とDBIDの両方を指定する必要があります。

ソース・データベースの高速リカバリ領域は、バックアップ場所としての使用に特に適しています。これは、複製に必要なすべてのファイルがほぼ常に含まれているためです。高速リカバリ領域をバックアップ場所として使用するには、宛先システムからリモートでアクセスするか、または高速リカバリ領域の内容を宛先システムにコピーすることができます。

バックアップ場所を使用しない場合は、次の相互に排他的な例ごとに、方法が異なります。

  • ソース・ホストと宛先ホストが同一のファイル・システムである場合

    これは最も簡単で推奨される例です。たとえば、ソース・データベースのバックアップが/dsk1/bkpに格納されているとします。この場合、次のいずれかの方法で、宛先ホストからディスク・バックアップにアクセスできるようになります。

    • バックアップをソース・ホストから宛先ホストの同一のパスに手動で転送します。たとえば、バックアップがソース・ホストの/dsk1/bkpにある場合は、FTPを使用してそれらのバックアップを宛先ホストの/dsk1/bkpに転送します。

    • NFSまたは共有ディスクを使用して、宛先ホストで同じパスにアクセスできるようにします。たとえば、ソース・ホストから/dsk1/bkpにアクセスできるとすると、NFSを使用して宛先ホストに/dsk1/bkpをマウントし、/dsk1/bkpをマウント・ポイント名として使用します。

  • ソース・ホストと宛先ホストのファイル・システムが異なる場合

    この場合、ソース・ホストで使用するディレクトリ名と同じディレクトリ名は、宛先ホストで使用できません。次の選択肢があります。

srchostおよびdsthostという2つのホストがあり、NFSまたは共有ディスクにアクセスできるとします。srchost上のデータベースは、srcdbです。srcdbのバックアップは、ホストsrchost上の/dsk1/bkp内に存在します。ディレクトリ/dsk1/bkpは宛先ホストで使用されていますが、ディレクトリ/dsk2/dupは、いずれのホストでも使用されていません。

バックアップをソース・ホストから宛先ホストに転送する手順

  1. ソース・ホストまたは宛先ホストのいずれかに、バックアップを格納するディレクトリを作成します。

    たとえば、宛先ホスト上にバックアップ・ディレクトリ/dsk2/dupを作成します。

  2. 前の手順で作成したディレクトリをもう一方のホストにマウントします。ディレクトリとマウント・ポイントの名前が同一であることを確認します。

    たとえば、宛先ホストに/dsk2/dupを作成した場合は、NFSを使用してこのディレクトリを/dsk2/dupとしてソース・ホストにマウントします。

  3. バックアップを宛先ホスト上の新しい場所で使用できるようにします。次のいずれかの方法を使用できます。
    • RMANをTARGETとしてソース・データベースに接続し、「RMANバックアップのバックアップ」で説明されているBACKUPコマンドを使用して、バックアップのバックアップを作成します。たとえば、BACKUP COPY OF DATABASEコマンドを使用して、ソース・ホストの/dsk1/bkpにあるバックアップをソース・ホストの/dsk2/dupにコピーします。この場合、RMANは、新しい場所のバックアップを自動的にカタログに追加します。

      PDBを複製する場合、BACKUP COPY OFコマンドのPLUGGABLE DATABASE構文を使用して、PDBのバックアップのみをコピーします。

    • オペレーティング・システム・ユーティリティを使用して、バックアップを新しい場所に転送します。たとえば、FTPを使用して、ソース・ホストの/dsk1/bkpから宛先ホストの/dsk2/dupにバックアップを転送するか、cpコマンドを使用して、ソース・ホストの/dsk1/bkpからソース・ホストの/dsk2/dupにバックアップをコピーします。後で、RMANをTARGETとしてソース・データベースに接続し、CATALOGコマンドを使用して、手動で転送したバックアップの場所で、RMANのリポジトリを更新します。

手順5: データベースへのリモート・アクセスの準備

別のホストからデータベースにアクセスする必要がある場合、パスワード・ファイルおよびOracle Netからの接続を設定する必要があります。このタイプの設定は、セキュリティに影響を与える可能性があることに注意してください。

この項の内容は、次のとおりです。

データベース接続の確立

手動でパスワード・ファイルを作成するか、Oracle Netを使用することで、データベース接続を確立できます。

手動でパスワード・ファイルを作成する手順

パスワード・ファイルを作成するには、『Oracle Database管理者ガイド』の手順を実行します。

パスワード・ファイルに許可されているファイル名のタイプおよびパスワード・ファイルの場所は、プラットフォームとオペレーティング・システムの両方に固有です。

関連項目:

  • 手動でパスワード・ファイルを作成する方法については、『Oracle Data Guard概要および管理』を参照してください。

  • 『Oracle Databaseセキュリティ・ガイド』

Oracle Netの接続を確立し静的リスナーを設定する手順

データベースに接続するようにクライアントを構成し、リスナーの静的サービス情報を追加するには、『Oracle Database Net Services管理者ガイド』の手順を実行します。

補助インスタンス用のパスワード・ファイルの作成

宛先ホスト上の補助インスタンスのパスワード・ファイルを作成するには、次の方法があります。

  • ソース・データベースのパスワード・ファイルを宛先ホストにコピーし、名前を補助インスタンス名と一致するように変更します。これは、ソース・ホストと宛先ホストが同じプラットフォームにある場合にのみ該当します。

  • パスワード・ファイルを手動で作成します。

  • ORAPWDコマンドを使用してパスワード・ファイルを作成します。SYSBACKUPオプションは、新しいパスワード・ファイルでSYSBACKUPエントリを作成します。

  • DUPLICATE... FROM ACTIVE DATABASEコマンドにPASSWORD FILEオプションを指定します。

    この場合、RMANは、ソース・データベース・パスワード・ファイルを宛先ホストにコピーし、既存のすべての補助インスタンスのパスワード・ファイルを上書きします。この方法は、複製データベースで使用できるようにするパスワードが、ソース・データベースのパスワード・ファイルに複数含まれている場合に有効です。

    DUPLICATE ... FROM ACTIVE DATABASEを使用する場合は、追加の要件があります。パスワード・ファイルには、SYSユーザーおよびSYSBACKUP権限を持つユーザー用に、2つ以上のパスワードを含める必要があり、パスワードはソース・データベースのパスワードと一致させる必要があります。補助インスタンスを開始し、ソース・データベースから接続できるようにすることができます。

関連項目:

パスワード・ファイルの作成の詳細は、『Oracle Database管理者ガイド』を参照してください。

注意:

FROM ACTIVE DATABASEオプションを使用してスタンバイ・データベースを作成する場合、RMANは、パスワード・ファイルを常にスタンバイ・ホストにコピーします。

手順6: 宛先ホストへのOracleキーストアのコピー

ソース・データベースで透過的暗号化が構成されている場合、補助インスタンスでソース・データベースのOracleソフトウェア・キーストアを使用できることを確認する必要があります。ソース・データベースのキーストアを、手動で宛先ホストにコピーします。

複製データベースでのキーストアの要件は次のとおりです。

  • キーストアは、デフォルトの場所、またはsqlnet.oraファイルに指定された場所にある必要がある。

  • データベースがファイルにアクセスできるように、Oracleキーストア・ファイルに権限を設定する必要がある。

  • キーストアは、自動ログイン・キーストアである必要がある。

  • 複製中に補助インスタンスは再起動されるため、Oracleソフトウェア・キーストアは使用できなくなります。補助インスタンスからキーストアへのアクセスを確保するため、sqlnet.oraファイルのENCRYPTION_WALLET_LOCATIONパラメータをキーストアの場所をポイントするように設定します。

  • Oracle Real Application Clusters (Oracle RAC)では、補助インスタンスをOracle Grid Infrastructureリスナーに静的に登録し、Oracle Gridホームの sqlnet.oraファイル内のENVSパラメータを使用して、キーストアの場所とデータベースの一意の名前を設定する環境変数を指定します。

    次の例では、sqlnet.oraENVSパラメータを設定して、キーストアの場所と一意のデータベース名を指定します。

    (ENVS="ORACLE_UNQNAME=cdbrptl, ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/etc/ORACLE/WALLETS/cdbrpt1)))")
  • ソース・データベースでパスワードベースのソフトウェア・キーストア(自動ログイン・ソフトウェア・キーストアではなく)が使用される場合、データベースの複製を開始する前に、キーストア・パスワードを指定する必要があります。

    DECRYPTION WALLET OPEN IDENTIFIED BY句を指定してSETコマンドを使用し、キーストアをオープンするために使用するパスワードを指定します。

    次のコマンド・セットは、キーストアのオープンに使用するパスワードがmy_pswdであることを指定します。

    SET DECRYPTION WALLET OPEN IDENTIFIED BY my_pswd;
    

関連項目:

  • sqlnet.oraでのOracleキーストアの場所の指定については、『Oracle Database Net Servicesリファレンス』を参照してください。

  • Oracleキーストアのデフォルトの場所の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

  • 標準的なOracleキーストアから自動ログイン・キーストアへの変換については、『Oracle Database Advanced Securityガイド』を参照してください。

手順7: 初期化パラメータ・ファイルの作成と補助インスタンスの起動

初期化パラメータ・ファイルの場所と内容は、「手順2: 複製ファイルの名前の指定方法の選択」での決定によって異なります。この項では、次のことを想定しています。

  • ソース・ホストと転送先ホストで同じ名前を使用するという推奨される方法を選択します。Oracle Real Application Clusters環境の場合は、ソース・ホストと宛先ホストに同じORACLE_SIDを使用します。

  • 補助インスタンス用にテキストベースの初期化パラメータ・ファイル(PFILE)を作成します。表26-5を参照してください。

  • 初期化パラメータ・ファイルは、SQL*Plusを実行するホストのオペレーティング・システム固有のデフォルトの場所に配置されます。

    たとえば、LinuxおよびUNIXではデフォルトの初期化パラメータ・ファイル名はORACLE_HOME/dbs/initORACLE_SID.oraですが、WindowsではORACLE_HOME\database\initORACLE_SID.oraです。

  • DUPLICATEコマンドのSPFILE句を指定する予定です。

    このDUPLICATE ... SPFILEという方法が最も簡単です。これは、複製中にRMANによって、自動的にサーバー・パラメータ・ファイルがソース・データベースから補助インスタンスへコピーされるか、またはそのファイルがバックアップからリストアされるためです。

前述の要件を満たすことができない場合は、「サーバー・パラメータ・ファイルが存在しない場合のデータベースの複製」を参照してください。

初期化パラメータ・ファイルの作成および補助インスタンスの起動の手順

  1. 次のいずれかを実行します。

    • ソース・ホストの初期化パラメータ・ファイルを宛先ホストへコピーし、オペレーティング・システム固有のデフォルトの場所に配置して、CONTROL_FILESDB_RECOVERY_FILE_DESTなどの様々な接続先/場所のパラメータと、DB_NAMEDB_DOMAINを変更します。

      CDBを複製する場合、ENABLE_PLUGGABLE_DATABASEパラメータが存在し、TRUEに設定されていることを確認します。

    • 次の手順を実行してください。

      1. テキスト・エディタを使用して、テキストベースの初期化パラメータ・ファイルに使用するための空のファイルを作成し、オペレーティング・システム固有のデフォルトの場所に保存します。

      2. パラメータ・ファイルに、DB_NAMEDB_DOMAINを設定します。これらは、唯一の必須パラメータです。

        DB_DOMAIN設定によって、ネット・サービス名で接続する際に、デフォルトのデータベース・サービスに接続できるようになります。

      3. 補助インスタンスをCDBにする場合は、次のパラメータを設定します。

        ENABLE_PLUGGABLE_DATABASE=TRUE
        
  2. Oracle Real Application Clustersのために必要な初期化パラメータなど、必要に応じてその他の初期化パラメータを設定します。

  3. 必須の環境変数(たとえばORACLE_HOMEORACLE_SID)を設定します。

  4. SQL*Plusを起動し、SYSDBA権限またはSYSBACKUP権限で補助インスタンスに接続します。補助インスタンスをNOMOUNTモードで起動します。ファイルがデフォルトの場所にある場合、STARTUPコマンドのPFILEパラメータは不要です。

    SQL> STARTUP NOMOUNT;

注意:

この場合、補助インスタンスは、サーバー・パラメータ・ファイルではなく、テキストベースの初期化パラメータ・ファイルで起動されることを確認してください。制御ファイルの作成、補助インスタンスのマウントまたはオープンは実行しないでください。

手順8: ソース・データベースの適切な状態への配置

注意:

ターゲット接続を行わないバックアップベースの複製を実行する場合には、「複製で使用するためのRMANチャネルの構成」に進みます。

RMANがTARGETとしてソース・データベースに接続されている場合、複製を行うには、ソース・データベースが適切な状態に設定されている必要があります。

ソース・データベースが適切な状態にあることを確認する手順

  1. ソース・データベース・インスタンスをマウントまたはオープンしていない場合は、マウントまたはオープンします。
  2. アクティブなデータベースの複製を実行している場合は、次の追加要件を満たしていることを確認します。
    • ソース・データベースがオープンしている場合は、アーカイブを有効にする必要があります。

    • ソース・データベースがオープンしていない場合は、データベースにインスタンス・リカバリは必要ありません。

RMANの起動およびデータベースへの接続

このタスクでは、RMANクライアントを起動し、「手順1: 複製方法の選択」で選択した複製方法で必要となるデータベース・インスタンスに接続します。RMANクライアントは、ネットワーク経由で必要なデータベースに接続可能であるかぎり、任意のホスト上に配置できます。

RMANを起動し、ターゲット・インスタンスおよび補助インスタンスに接続する手順

  1. 必要なデータベース・インスタンスに接続可能なホスト上で、RMANを起動します。

    たとえば、宛先ホストのオペレーティング・システム・プロンプトで、次のコマンドを入力します。

    % rman
    
  2. RMANプロンプトで、選択した複製方法に必要となるデータベース・インスタンスに対して、CONNECTコマンドを実行します。

    注意:

    CDB全体、または1つ以上のPDBを複製する場合は、両方のインスタンスのrootに接続します。

    • イメージ・コピーを使用したアクティブなデータベースの複製(プッシュベースの方法)の場合、ソース・データベースにTARGETとして、補助インスタンスにAUXILIARYとして接続する必要があります。AUXILIARYインスタンスに接続するには、ネット・サービス名を指定する必要があります。リカバリ・カタログ接続は任意です。両方のインスタンスで、複製を実行しているユーザーのパスワードを同じにする必要があります。SYSDBA権限またはSYSBACKUP権限を持つユーザーは、誰でも複製を実行できます。

    • バックアップ・セットを使用したアクティブなデータベースの複製(プルベースの方法)の場合、ネット・サービス名を使用して、ソース・データベースにTARGETとして接続する必要があります。補助インスタンスは、このネット・サービス名を使用してソース・データベースに接続し、複製に必要なバックアップ・セットを取得します。補助インスタンスにAUXILIARYとして接続します。リモートから補助インスタンスに接続するか、またはDUPLICATEコマンドのPASSWORD FILEオプションを使用する場合は、ネット・サービス名で補助インスタンスに接続します。両方のインスタンスで、複製を実行しているユーザーのパスワードを同じにする必要があります。SYSDBA権限またはSYSBACKUP権限を持つユーザーは、誰でも複製を実行できます。リカバリ・カタログ接続は任意です。

    • ターゲット接続を行わないバックアップベースの複製の場合、AUXILIARYとして補助インスタンスに接続し、CATALOGとしてリカバリ・カタログに接続する必要があります。

    • ターゲット接続を行うバックアップベースの複製の場合、TARGETとしてソース・データベースに接続し、AUXILIARYとして補助インスタンスに接続する必要があります。リカバリ・カタログは任意です。

    • ターゲットおよびリカバリ・カタログへの接続を行わないバックアップベースの複製の場合、AUXILIARYとして補助インスタンスに接続する必要があります。

    次のアクティブなデータベース複製の例では、3つのデータベース・インスタンスにネット・サービス名を使用して接続します。RMANは、SYSBACKUP権限を持つユーザーとして、ターゲット・データベースと補助インスタンスに接続します。カタログへの接続は、rcoユーザー(カタログ所有者)を使用します。RMANは、これらのユーザーのパスワードを要求します。

    CONNECT TARGET "sbu@prod AS SYSBACKUP";      # source database
    
    CONNECT AUXILIARY "sbu@dupdb AS SYSBACKUP";  # duplicate database instance
    
    CONNECT CATALOG rco@catdb;    # recovery catalog database

複製で使用するためのRMANチャネルの構成

この項の内容は、次のとおりです。

バックアップベースの複製のためのチャネル構成

バックアップベースの複製では、ソース・データベース・インスタンスではなく、補助インスタンスのチャネルによって、RMANのバックアップがリストアされます。チャネル構成は複製方法に応じて異なります。

RMANでは、ソース・データベースのチャネル構成と同じ構成を宛先ホスト上の複製に使用できます。ソース・データベースのチャネルでAUXILIARYオプションを指定しなくても、RMANでこれらの構成を利用できます。

次の追加事項に注意してください。

  • 補助チャネルのチャネル・タイプ(DISKまたはsbt)は、バックアップ・メディアと一致している必要があります。通常、ディスク・バックアップ用に割り当てるチャネルの数を増やすと、複製が高速になります。ディスクが最大の読取り/書込み速度に達した後、複製の速度を速くすることはできません。テープ・バックアップの場合は、チャネルの数を使用可能なデバイスの数に制限します。

  • ただし、補助チャネルに特別なパラメータが必要な場合(別のメディア・マネージャを指す場合など)は、CONFIGUREコマンドのAUXILIARYオプションを指定して自動チャネルを構成します。

  • ターゲット接続もリカバリ・カタログも使用せずに複製を実行する場合、ディスク・チャネルのみが使用できます。ユーザーによって割り当てられたチャネルが使用されていない場合、最初に制御ファイルをリストアするチャネルは1つのみです。制御ファイルがマウントされた後は、割り当てられるチャネルの数はリストアされた制御ファイルの構成によって異なります。

  • DUPLICATEコマンドのUSING BACKUPSET句を省略したとき、割り当てられた補助チャネルの数がターゲット・チャネルの数以上の場合、RMANは引き続きバックアップ・セットによるアクティブなデータベース複製を使用します。

アクティブなデータベースの複製のためのチャネル構成

アクティブなデータベースの複製では、ソース・データベースのチャネル構成を変更したり、AUXILIARYチャネルを構成する必要はありません。

バックアップ・セットを使用してアクティブなデータベース複製を実行するには、追加の補助チャネルを割り当てる必要があります。補助チャネルの数は、ターゲット・チャネルの数以上である必要があります。アクティブな複製にバックアップ・セット使用することによってパラレル可も可能になり、複製プロセスの速度を向上させることができます。

関連項目:

CONFIGUREコマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

データベースの複製

この項では、データベースを複製する最も基本的な手順について説明します。この項では、次のことを想定しています。

  • リモート・ホストにデータベースを複製します。複製データベース・ファイルには、ソース・データベース・ファイルと同じ名前を使用します。

    注意:

    この構成でDUPLICATEコマンドを実行する場合は、DUPLICATEコマンドにNOFILENAMECHECKオプションを指定する必要があります。ソース・データベースと同じホスト上にデータベースを複製する場合は、NOFILENAMECHECKが指定されていないことを確認してください。

  • データベース全体または1つ以上のPDBを複製します。他の例については、「ソース・データベース表領域のサブセットの複製」を参照してください。

注意:

Oracle RACデータベースの複製方法の詳細は、My Oracle SupportのNote 1617946.1 (https://support.oracle.com/rs?type=doc&id=1617946.1)を参照してください。

同じディレクトリ構造を持つリモート・ホストにデータベースを複製する手順

  1. 「データベースの複製の基本手順」の手順1から4が完了していることを確認します。
  2. DUPLICATEコマンドを実行します。

例25-1 同じディレクトリ構造を持つ別のホストへの複製(アクティブ)

この例は、アクティブな複製を実行する方法を示しています。デフォルトでは、RMANはプルの方法(バックアップ・セットを使用)を使用します。DUPLICATEでは、ソース・データベース・ファイルの名前が複製データベース・ファイルの名前と同じであるため、NOFILENAMECHECKオプションが必要です。

PASSWORD FILEオプションを指定すると、RMANはパスワード・ファイルを宛先ホストにコピーします。

RMANは、サーバー・パラメータ・ファイルを接続先ホストに自動的にコピーし、サーバー・パラメータ・ファイルを使用して補助インスタンスを再起動して、必要なすべてのデータベース・ファイルおよびアーカイブREDOログをネットワークを介して接続先ホストにコピーし、データベースをリカバリします。最後に、RMANは、RESETLOGSオプションを指定してデータベースをオープンし、オンラインREDOログを作成します。dupdbは複製データベースのDB_NAMEです

DUPLICATE TARGET DATABASE TO dupdb
  FROM ACTIVE DATABASE
  PASSWORD FILE
  SPFILE
  NOFILENAMECHECK;

例25-2 PDBの複製

この例では、単一のPDBを複製するために、前述の例にPLUGGABLE DATABASE句を追加します。rootおよびシード・データベースは、自動的に複製に含められます。補助インスタンスは、宣言enable_pluggable_database=TRUEを含む初期化パラメータ・ファイルを使用して開始する必要がありました。

DUPLICATE TARGET DATABASE TO cdbdupe
  PLUGGABLE DATABASE sales
  FROM ACTIVE DATABASE
  PASSWORD FILE
  SPFILE
  NOFILENAMECHECK;

ターゲット接続を行わないバックアップベースの複製の例

これは例25-1を少し変更した例です。この例でRMANは、ソース・データベースに対してTARGET接続を行いません。例25-3では、ソース・データベースprodの複製が、以前のデータベース・インカネーションの2013年の状態で作成されます。BACKUP LOCATION句が提供されていないため、RMANはソース・データベースに接続していませんが、リカバリ・カタログに接続する必要があります。

例25-3 過去の特定の時点までのデータベースの複製(バックアップベース)

DUPLICATE DATABASE prod DBID 8675309 TO dupdb
  UNTIL TIME "TO_DATE('11/01/2013', 'MM/DD/YYYY')"
  SPFILE
  NOFILENAMECHECK;

例25-3の特徴は、次のとおりです。

  • FROM ACTIVE DATABASE句が指定されていません。句を指定しないと、RMANでは、バックアップベースの複製が行われます。

  • ソース・データベースのDBIDが指定されていますが、これは、ソース・データベース名prodがリカバリ・カタログ内で一意ではないためです。

  • NOFILENAMECHECKチェックが指定されていますが、これは、複製データベース・ファイルでソース・データベース・ファイルと同じ名前を使用する場合にはこのオプションが必要となるためです。

類似の例として、アーカイブ・バックアップをリストアする必要があるとします。このバックアップは、データベースのリストアおよびリカバリに必要なすべてのファイルが含まれているという点で包括的なバックアップです。テストのためにアーカイブ・バックアップをリストアする場合は、一時インスタンスを作成し、DUPLICATEコマンドを使用する方法をお薦めします。この方法を使用すると、ソース・データベースに影響が及ぼされません。

DUPLICATEコマンドで、アーカイブ・バックアップを使用して作成されたリストア・ポイントを指定する必要があります。リストア・ポイントが制御ファイル内に存在しているときに、RMANがカタログまたはソース・データベースに接続されている場合は、TO RESTORE POINTのみを指定できます。例25-4では、リストア・ポイントとしてTESTDB103107を指定しています。

例25-4 バックアップベースの複製におけるアーカイブ・バックアップの使用

DUPLICATE DATABASE prod DBID 8675309 TO dupdb
  TO RESTORE POINT TESTDB103107
  SPFILE
  NOFILENAMECHECK;

ターゲット接続を行うバックアップベースの複製の例

例25-1をバックアップベースに変更したとします。この場合、RMANは、TARGETとしてソース・データベースに接続します。例25-5では、ソース・データベースの1週間前のデータを表示するために、複製データベースをその時点までリカバリします。

例25-5 過去の特定の時点までのデータベースの複製(バックアップベース)

DUPLICATE TARGET DATABASE TO dupdb
  SPFILE
  NOFILENAMECHECK
  UNTIL TIME 'SYSDATE-7';

例25-5の特徴は、次のとおりです。

  • FROM ACTIVE DATABASE句が指定されていません。句を指定しないと、RMANでは、バックアップベースの複製が行われます。

  • NOFILENAMECHECKオプションが指定されています。これは、複製データベース・ファイルでソース・データベース・ファイルと同じ名前を使用する場合にはこのオプションが必要となるためです。

ターゲット接続またはリカバリ・カタログ接続を行わないバックアップベースの複製の例

例25-6例25-1を少し変更した例で、この例では、RMANは、ソース・データベースに対してTARGET接続を行わず、リカバリ・カタログに対してCATALOG接続を行いません。制御ファイルのバックアップまたはコピーを含む、2013年11月1日午後2:00までの複製に必要なすべてのバックアップおよびコピーは、/prod_backupsに格納されています。

例25-6 ターゲット接続およびリカバリ・カタログ接続を行わない場合のデータベースの複製(バックアップベース)

DUPLICATE DATABASE TO dupdb
  UNTIL TIME "TO_DATE('11/01/2013 14:00:00', 'MM/DD/YYYY HH24:MI:SS')"
  SPFILE
  BACKUP LOCATION '/prod_backups'
  NOFILENAMECHECK;

例25-6の特徴は、次のとおりです。

  • データベース名が指定されていません。DATABASEキーワードを使用してデータベース名を指定しないことによって、DUPLICATEはデータベース名とDBIDをバックアップから取得します。BACKUP LOCATIONに複数のデータベースのバックアップが検出されると、エラーが表示されます。

  • BACKUP LOCATION句を使用して、複製のタイプがターゲット接続もリカバリ・カタログも使用しないバックアップベースであることを識別します。

  • UNTIL TIMEオプションが指定されています。これは、BACKUP LOCATION句で許容される唯一のUNTIL副次句です。

  • NOFILENAMECHECKオプションが指定されています。これは、複製データベース・ファイルでソース・データベース・ファイルと同じ名前を使用する場合にはこのオプションが必要となるためです。

例25-7 過去の特定の時点までのデータベースの複製(バックアップベース)

この例では、過去の特定の時点までのバックアップベースの複製を実行します。

DUPLICATE TARGET DATABASE TO dupdb
  SPFILE
  NOFILENAMECHECK
  UNTIL TIME 'SYSDATE-7';

例25-7の特徴は、次のとおりです。

  • FROM ACTIVE DATABASE句が指定されていません。この句を省略すると、RMANでは、バックアップベースの複製が行われます。

  • NOFILENAMECHECKオプションによるチェックが指定されています。これは、複製データベース・ファイルでソース・データベース・ファイルと同じ名前を使用する場合にはこのオプションが必要となるためです。

例: バックアップベースの複製を使用したデータベースの複製スクリプト

この例では、ターゲット・データベースの複製プロセスを自動化するためのスクリプトの使用方法を示します。

この例では、次のことを想定しています。
  • ターゲット・データベースのバックアップを補助インスタンス上で使用できる。

  • ターゲット・データベースのメタデータが含まれるRMANリカバリ・カタログに接続できる(ターゲット・データベースへの接続は不要)。

  • ソース・データベースと複製データベースの両方で、Oracle Managed Files (OMF)を使用している。

  • オペレーティング・システムにLinuxまたはUNIXが使用されている。

  • 補助データベースのホストに監査ディレクトリが作成されている。

  • バックアップベースの複製の要件が満たされている。

この例に示されているスクリプトは次のタスクを実行します。
  • 補助データベースを削除する

  • ターゲット・データベースをバックアップする

  • ダミーの補助インスタンスを作成し、NOMOUNTモードでオープンする

  • ターゲット・データベースのバックアップとRMANリカバリ・カタログ内のメタデータを使用して、ターゲット・データベースを複製する

    複製データベースの制御ファイルは+REDO/ORACLE_SID/CONTROLFILE/cf3.ctlとして保存され、データファイルは+DATAディレクトリ内に保存されます。

  • 必要なオブジェクトが複製データベース内に作成されていることを確認する。

ターゲット接続なしでバックアップベースの複製を使用してターゲット・データベースを複製する手順

  1. 補助インスタンスのパラメータ・ファイル(pfile)を作成します。pfileにはDB_NAME初期化パラメータのみが含まれ、複製データベースのSIDに設定されます。

    /home/oracleディレクトリにあるinit_dup.oraという名前の次のpfileは、DB_NAMEパラメータを設定します。dup_dbを複製データベースのSIDに置き換えます。

    *.db_name = 'dup_db'
  2. テキスト・エディタを使用して、次に示す内容に次の変更を加えてシェル・スクリプトを作成します(この例ではdup_db.shという名前)。
    • ORACLE_HOME変数の値を補助インスタンスのOracleホーム・ディレクトリと置き換えます。

    • logdir変数の値を、ログ・ファイルを保存するディレクトリに置き換えます。

    • 次のプレースホルダ(イタリック体で表示)を、目的の複製シナリオに合わせた値に置き換えます。

      dup_db: 補助インスタンスのシステム識別子(SID)とサービス名

      tgt_db: ターゲット・データベースのSIDとサービス名

      sys_pswd: ターゲット・データベースのSYSユーザーのパスワード

      rman_cat_user: RMANカタログ・ユーザーの名前

      cat_user_pswd: RMANカタログ・ユーザーrman_cat_userのパスワード

      rman_catalog_db: RMANカタログ・データベースのSID

      system_pswd: ターゲット・データベースのSYSTEMユーザーのパスワード

    • +REDO/ORACLE_SID/CONTROLFILE/cf3.ctlとは異なる名前と場所を使用して、複製データベースの制御ファイルを保存する場合は、dup_aux_db関数のcontrol_filesの値を自分の複製シナリオに適した値に置き換えます。

    • 複製データファイルを+DATAとは異なるディレクトリに保存する場合は、dup_aux_db関数のdb_create_file_destの値を自分の複製シナリオに適した値に置き換えます。

    #!/bin/bash
    export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_2
    export ORACLE_BASE=/uo1/app/oracle
    export ORACLE_SID=dup_db
    export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/Opatch
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib;
    export LD_LIBRARY_PATH
    export logdir=/home/oracle/log
    export dt='date +%y%m%d%H%M%S'
    export NLS_DATE_FORMAT='DD-MM-YYYY HH24:MI:SS'
    
    function drop_aux_db {
    export ORACLE_SID=dup_db
    $ORACLE_HOME/bin/sqlplus -s '/ as sysdba' <<EOF2
    set pagesize 999 linesize 999 heading off feedback off
    select name, open_mode from v\$database;
    shutdown immediate;
    startup mount exclusive restrict;
    drop database;
    exit;
    EOF2
    }
    
    echo "Backup the target database"
    function backup_source_db {
    $ORACLE_HOME/bin/rman target sys/sys_pswd@tgt_db catalog
    rman_cat_user/cat_user_pswd@rman_catalog_db <<EOF
    RUN {
    backup as backupset cumulative incremental level 1 database include current
    controlfile plus archivelog not backed up delete input;}
    exit;
    EOF
    }
    
    sleep 120
    
    echo "List the backup of the target database"
    function check_source_db_backup {
    $ORACLE_HOME/bin/rman target sys/sys_pswd@tgt_db catalog
    rman_cat_user/cat_user_pswd@rman_catalog_db <<EOF
    LIST BACKUP OF DATABASE COMPLETED AFTER '(SYSDATE-1/24)';
    EOF
    }
    
    echo "Start the auxiliary database in FORCE NOMOUNT mode"
    function nomount_aux_db {
    export ORACLE_SID=dup_db
    $ORACLE_HOME/bin/rman target / <<EOF2
    startup force nomount pfile='/home/oracle/init_dup.ora';
    exit;
    EOF2
    }
    
    echo "Duplicate the target database"
    function dup_aux_db {
    export ORACLE_SID=dup_db
    $ORACLE_HOME/bin/rman catalog rman_cat_user/cat_user_pswd@rman_catalog_db AUXILIARY /
    <<EOF
    duplicate database tgt_db to dup_db spfile
    set control_files '+REDO/${ORACLE_SID}/CONTROLFILE/cf3.ctl'
    set db_create_file_dest '+DATA/' ;
    exit;
    EOF
    }
    
    echo "Check schema objects on the target"
    function check_source_db {
    $ORACLE_HOME/bin/sqlplus -s system/system_pswd@tgt_db <<EOF2
    set pagesize 999 linesize 999 heading off feedback off
    select name, open_mode from v\$database;
    select table_name, num_rows from dba_tables where owner='SOE';
    exit;
    EOF2
    }
    
    echo "Check schema objects on the auxiliary"
    function check_aux_db {
    export ORACLE_SID=dup_db
    $ORACLE_HOME/bin/sqlplus -s '/ as sysdba' <<EOF2
    set pagesize 999 linesize 999 heading off feedback off
    select name, open_mode from v\$database;
    select table_name, num_rows from dba_tables where owner='SOE';
    exit;
    EOF2
    }
    
    drop_aux_db
    backup_source_db
    check_source_db_backup
    nomount_aux_db
    dup_aux_db
    check_source_db
    check_aux_db
    
  3. chmodコマンドを使用して、スクリプトdup_db.shの実行権限を設定します。
    $ chmod +x dup_db.sh
  4. 複製ホスト上で(複製データベースをホストする)、dup_db.shスクリプトを実行します。

    次のコマンドは、/home/my_scripts/duplicationディレクトリに保存されているdup_db.shスクリプトを実行します。

    $./home/my_scripts/duplication/dup_db.sh

失敗後のDUPLICATEの再実行

RMANは、以前に失敗したDUPLICATEコマンドの繰返しであるDUPLICATEコマンドを自動的に最適化します。繰返しのDUPLICATEコマンドは、過去に正常にコピーされたデータファイルを検知し、それらのデータファイルを再度コピーしません。これは、バックアップベース(ターゲット接続の有無を問わない)の複製かアクティブなデータベースの複製かにかかわらず、すべての複製の形式に適用されます。DUPLICATEコマンドの自動最適化は、非常に大きなデータベースの複製中に障害が発生した場合に特に有効です。

DUPLICATEの処理を再起動する手順

  1. RMANを終了します。
  2. SQL*Plusを起動し、SYSDBA権限またはSYSBACKUP権限で補助インスタンスに接続します。最初に使用したものと同じSPFILE指定またはPFILE指定を使用して、補助インスタンスをNOMOUNTモードで起動します。この指定を最初に省略した場合は、再度省略します。

    この例は、/home/my_pfile.oraのパラメータを使用して補助インスタンスを開始します。

    STARTUP FORCE PFILE=/home/my_pfile.ora
    
  3. SQL*Plusを終了し、RMANを開始します。
  4. 最初と同じデータベースに接続します。
  5. DUPLICATEコマンドを繰り返します。

2番目のDUPLICATE操作は、次の処理を実行します。

  • 最初のDUPLICATEコマンドによって正常に複製されたデータファイルを検索します。

  • 再度複製される必要のない各データファイルに対して、次のようなメッセージを表示します。

    RMAN-05560: Using previous duplicated file /oradata/new/data01.f for datafile 1 with checkpoint SCN of 1654665
    
  • 欠落しているか、または不完全なデータファイルのみをリストアするため、コピーおよびリストアをすべてのデータファイルに対して再実行することを回避します。

失敗したDUPLICATE操作からRMANが自動的にリカバリしないようにする場合、NORESUMEキーワードを指定してこの機能を無効にします。DUPLICATEの最初の起動時にNORESUMEキーワードを使用すると、後続の新しいデータベース用のDUPLICATEコマンドがこの自動最適化を使用することを防止できます。