ヘッダーをスキップ

Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド
11g リリース1(11.1)

E05700-03
目次
目次
索引
索引

戻る 次へ

23 データベースの複製

この章では、DUPLICATEコマンドを使用して、複製データベースを作成する方法を説明します。この章では、次の項目について説明します。

Recovery Managerデータベースの複製の概要

この項では、データベースを複製する場合の基本的な概念およびタスクについて説明します。

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

データベースの複製では、複製データベースの作成を目的としています。複製データベースとは、ソース・データベースにあるすべてのデータまたはデータのサブセットが含まれている別のデータベースのことです。複製データベースは様々な目的で有効であり、ほとんどの場合、テストに使用されます。複製データベースでは、次のタスクを実行できます。

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

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

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

参照:

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

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

Recovery ManagerのDUPLICATEコマンドを使用して、複製データベースを作成します。複製データベースはコピー先のデータベースであり、ソース・データベースはコピー元のデータベースです。複製データベースのDBIDはソース・データベースのDBIDとは異なっており、完全に独立して機能します。

ソース・ホストはソース・データベースをホストするコンピュータであり、転送先ホストは複製データベースをホストするコンピュータです。ソース・ホストと転送先ホストは、同じである場合も異なる場合もあります。ソース・データベース・インスタンスは、ソース・データベースに関連付けられたOracleインスタンスです。複製データベースに関連付けられたインスタンスは、補助インスタンスと呼ばれます。

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

アクティブなデータベースの複製またはバックアップベースの複製のいずれかの方法を使用できます。アクティブなデータベースの複製では、ネットワークを介して使用中のソース・データベースが複製データベース・インスタンスにコピーされますが、バックアップベースの複製では、既存のRecovery Managerバックアップおよびコピーが使用されます。

複製の主な作業は、補助チャネルによって実行されます。このチャネルは、転送先ホスト上の補助インスタンスのサーバー・セッションに対応しています。Recovery Managerは、複製操作のうち、次の処理を自動化します。

  1. 複製データベースの制御ファイルの作成

  2. 補助インスタンスの再起動および複製制御ファイルのマウント

  3. 複製データファイルの作成および増分バックアップとアーカイブREDOログを使用した複製データファイルのリカバリ

    ソース・データベースのオンラインREDOログ・ファイルがバックアップされず、複製データベースに適用できないため、Recovery Managerで不完全リカバリを実行する必要があります。Recovery Managerでは、ソース・データベースによってアーカイブされた最新のREDOログの時点まで、複製データベースをリカバリできます。

  4. RESETLOGSオプションを使用した複製データベースのオープン

    参照:

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

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

データベースを複製するには、多くの前提条件を満たしている必要があります。たとえば、ソース・データベースおよび複製データベースは、同じプラットフォーム上にある必要があります。詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』のDUPLICATEコマンド・エントリの前提条件に関する項を参照してください。

データベースを複製する手順
  1. バックアップベースの複製を使用する場合は、データベース・バックアップおよびアーカイブREDOログを転送先ホスト上の補助インスタンスで使用できるようにします。アクティブなデータベースの複製を使用する場合、この手順はスキップします。

    このタスクについては、「バックアップおよびアーカイブ・ログから複製インスタンスへのアクセス可能化」を参照してください。

  2. 複製制御ファイル、データファイル、オンラインREDOログおよび一時ファイルに名前を指定する方法を決定します。ソース・ホストと同じディレクトリ構造を使用する別のホストに複製を行う場合、およびソース・データベース・ファイルと同じ名前を複製ファイルに指定する場合は、次の手順にスキップします。

    このタスクについては、「複製ファイルの名前の指定方法の選択」を参照してください。

  3. 転送先ホスト上の補助インスタンスで使用する初期化パラメータ・ファイルを作成してから、補助インスタンスを起動します。

    このタスクについては、「補助インスタンスの準備」を参照してください。

  4. Recovery Managerを起動して、TARGETとしてソース・データベースに、AUXILIARYとして複製データベースのインスタンスに、必要に応じてCATALOGとしてリカバリ・カタログ・データベースに接続します。必要に応じて、DUPLICATEコマンドで使用するチャネルを構成します。

    このタスクについては、「Recovery Managerの起動および複製前の構成」を参照してください。

  5. DUPLICATEコマンドを実行します。

    このタスクについては、「データベースの複製」を参照してください。

バックアップおよびアーカイブ・ログから複製インスタンスへのアクセス可能化

アクティブなデータベースの複製を使用している場合は、この項をスキップし、「複製ファイルの名前の指定方法の選択」に進みます。

Recovery Managerは、複製制御ファイルのメタデータを使用して、複製に必要なバックアップおよびアーカイブ・ログを検索します。補助チャネルが、複製データベースのリストアおよびリカバリに必要なすべてのデータファイル・バックアップおよびアーカイブREDOログにアクセスできることを確認する必要があります。アクセスできない場合、複製操作は失敗します。

データベース・バックアップは、BACKUP DATABASEで生成する必要はありません。個々のデータファイルの全体バックアップおよび増分バックアップを組み合せて使用できます。たとえば、データファイル1、2および3の全体バックアップを作成したとします。また、データファイル4、5、6のレベル0およびレベル1のバックアップも作成したとします。この場合、DUPLICATEを実行すると、全体バックアップからファイル1、2および3、レベル0のバックアップからファイル4、5および6をリストアできます。Recovery Managerは、増分レベル1の増分バックアップを4、5および6に適用し、アーカイブREDOログを6つすべてのデータファイルに適用できます。

バックアップベースの複製を使用している場合は、データベース・バックアップを補助インスタンスで使用できるようにする方法を決定する必要があります。また、複製データベースを目的の時点にリカバリする場合に必要なアーカイブREDOログ・ファイルは、複製データベースが作成されるホストから同じパスでアクセスできるようになっている必要があります。これらのログは、バックアップ(メディア・マネージャを使用する場合など)またはイメージ・コピー(または実際のアーカイブREDOログ・ファイル)のいずれかとして使用できます。

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

SBTバックアップを使用する場合は、バックアップが含まれているテープから転送先ホストにアクセスできるようにする必要があります。メディア管理ソフトウェアが転送先ホスト上にインストールされている場合は、リモート・ホストに接続されているドライブにテープを物理的に移動するか、またはネットワーク・アクセスが可能なテープ・サーバーを使用することによって実現できます。通常、メディア・マネージャによっては、リモート・メディア管理ソフトウェアにテープの存在について通知する必要があります。

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

ディスク・バックアップを使用する場合、ソース・ホストのファイル・システムと転送先ホストのファイル・システムが同じである場合が最も簡単です。たとえば、ソース・データベースのバックアップが/dsk1/bkpに格納されているとします。この場合、次のいずれかの方法で、ディスク・バックアップから転送先ホストにアクセスできるようになります。

ソース・ホストで使用するディレクトリ名と同じディレクトリ名を転送先ホストで使用できない場合は複雑です。この場合にバックアップをアクセス可能にする方法は、共有ディスクを使用するかどうかによって異なります。次の項で説明します。

共有ディスクを使用しないディスク・バックアップのアクセス可能化

NFSまたは共有ディスクを使用できない場合、バックアップを格納するパスはソース・ホストおよび転送先ホストの両方に存在する必要があります。srchostおよびdsthostという2つのホストがあるとします。srchost上のデータベースは、srcdbです。srcdbのRecovery Managerバックアップは、ホストsrchost上の/dsk1/bkp内に存在します。ディレクトリ/dsk1/bkpはすでに転送先ホストで使用されているため、バックアップは転送先ホスト上の/dsk2/dupに格納します。複製サイトの制御ファイルをダンプファイルの新しい場所で更新する必要があります。

バックアップをソース・ホストから転送先ホストに転送するには、次の手順を実行します。

  1. バックアップを格納する転送先ホスト上にあるディレクトリと同じ名前のディレクトリをソース・ホスト上に新しく作成します。

    たとえば、Recovery Managerバックアップを転送先ホストの/dsk2/dupに格納する場合、ソース・ホスト上に/dsk2/dupを作成します。

  2. ソース・ホスト上で、前の手順で作成したディレクトリにバックアップをコピーして、バックアップをカタログに追加します。次のいずれかの方法を使用できます。

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

    • オペレーティング・システム・ユーティリティを使用して、ソース・ホストの/dsk1/bkpにあるバックアップを、ソース・ホストの/dsk2/dupにコピーします。後で、Recovery ManagerをTARGETとしてソース・データベースに接続し、CATALOGコマンドを使用して、手動で転送したバックアップの場所で、ソース・データベースの制御ファイルを更新します。

  3. ソース・ホスト上の新しいディレクトリから転送先ホスト上の同じ名前のディレクトリに、バックアップを手動で転送します。

    たとえば、FTPを使用して、ソース・ホストの/dsk2/dupにあるバックアップを、転送先ホストの/dsk2/dupに転送します。

複製の一部として、Recovery Managerは、バックアップを表示する複製制御ファイルを/dsk2/dupパスに作成します。その後、補助チャネルでは、転送先ホスト上の/dsk2/dupでバックアップを検索してリストアできます。

共有ディスクを使用したディスク・バックアップのアクセス可能化

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

バックアップをソース・ホストから転送先ホストに転送するには、次の手順を実行します。

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

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

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

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

  3. バックアップを転送先ホスト上の新しい場所で使用できるようにします。次のいずれかの方法を使用できます。

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

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

複製の一部として、Recovery Managerは、バックアップを表示する複製制御ファイルを/dsk2/dupパスに作成します。その後、補助チャネルでは、転送先ホスト上の/dsk2/dupでバックアップを検索してリストアできます。

参照:

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

複製ファイルの名前の指定方法の選択

Recovery Managerは、データベースの複製時に複製データベース・ファイルの名前を生成します。転送先ホストでソース・ホストと同じディレクトリ構造が使用されている場合は、複製データベース・ファイルに、ソース・データベース・ファイルで使用されている名前と同じ名前を使用できます。この場合、複製ファイルの名前を変更する必要はありませんが、DUPLICATEコマンドでNOFILENAMECHECKオプションを指定する必要があります。

ホストで異なるディレクトリ構造が使用されている場合、または同じ構造が使用されているが、複製ファイルに異なる名前を使用する必要がある場合は、複製データベース・ファイルの名前の生成方法を決定する必要があります。具体的には、制御ファイル、データファイル、オンラインREDOログ・ファイルおよび一時ファイルに名前を指定する方法を決定する必要があります。

Recovery Managerでは、複製ファイルの名前を生成する次の方法がサポートされています。

この項では、SPFILEの方法についてのみ説明します。次のリストに、複製ファイルの名前を指定する場合に使用可能なDUPLICATEオプションを示します。DUPLICATEコマンドの構文およびセマンティクスの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

例23-1に、SPFILE句を使用して複製ファイルに名前を指定するDUPLICATEコマンドを示します。PARAMETER_VALUE_CONVERTオプションによって、ファイル名を指定するすべての初期化パラメータの/disk2/disk1に置き換えられます(ただし、DB_FILE_NAME_CONVERTおよびLOG_FILE_NAME_CONVERTを除く)。SET LOG_FILE_NAME_CONVERT句によって、複製データベースのオンラインREDOログのファイル名の/disk2/disk1に置き換えられます。DB_FILE_NAME_CONVERTオプションによって、複製データファイルおよび一時ファイルの名前の/disk1/disk2に置き換えられます。

例23-1    SPFILE句を使用した複製ファイルの名前の指定

DUPLICATE TARGET DATABASE TO dup1
FROM ACTIVE DATABASE
DB_FILE_NAME_CONVERT '/disk1','/disk2'
SPFILE
PARAMETER_VALUE_CONVERT '/disk1', '/disk2'
SET LOG_FILE_NAME_CONVERT '/disk1','/disk2'
SET SGA_MAX_SIZE '200M'
SET SGA_TARGET '125M';

参照:

DB_FILE_NAME_CONVERT初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。 

補助インスタンスの準備

DUPLICATE DATABASEコマンドで使用する補助インスタンスを準備するには、次のタスクを実行します。

手順1: 補助インスタンス用のOracleパスワード・ファイルの作成

次のいずれかの条件に該当する場合にのみ、補助インスタンスでパスワード・ファイルが必要となります。

FROM ACTIVE DATABASEオプションを使用すると、ソース・データベース・インスタンス(Recovery ManagerがTARGETとして接続されるデータベース・インスタンス)は、補助データベース・インスタンスに直接接続されます。この接続では、同じSYSDBAパスワードが含まれているパスワード・ファイルが必要です。パスワード・ファイルを手動で作成し、ソース・データベースと同じSYSDBAパスワードを使用するようにします。補助インスタンスを起動し、ソース・データベースをその補助インスタンスに接続できるように、1つのパスワードが含まれているパスワード・ファイルを作成することができます。

また、DUPLICATEコマンドにPASSWORD FILEオプションを指定することもできます。この場合、Recovery Managerは、ソース・データベース・パスワード・ファイルを転送先ホストにコピーし、既存のすべての補助インスタンスのパスワード・ファイルを上書きします。この方法は、複製データベースで使用できるようにするパスワードがソース・データベースのパスワード・ファイルに複数含まれている場合に有効です。

アクティブなデータベースの複製でスタンバイ・データベースを作成する場合、Recovery Managerは、パスワード・ファイルを常にスタンバイ・ホストにコピーします。PASSWORD FILEオプションを指定する必要はありません。また、補助インスタンス用の既存のパスワード・ファイルを上書きします。

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

手順2: Oracle Netから補助インスタンスへの接続の確立

次のいずれかの条件を満たしている場合、補助インスタンスは、Oracle Netを介して使用できる必要があります。

アクティブなデータベースから複製する場合は、まず、ネット・サービス名を使用して、SYSDBAとして補助インスタンスに接続する必要があります。このネット・サービス名は、ソース・データベース・インスタンス上でも使用可能である必要があります。ソース・データベース・インスタンス(Recovery ManagerがTARGETとして接続されるインスタンス)は、このネット・サービス名で補助データベース・インスタンスに直接接続されます。

手順3: 補助インスタンス用の初期化パラメータ・ファイルの作成

補助インスタンス用にテキストベースの初期化パラメータ・ファイルを作成します。

複製ファイルの名前の指定に、SPFILEの方法(「複製ファイルの名前の指定方法の選択」を参照)を使用する場合、必要なパラメータは、任意の値に指定できるDB_NAMEのみとなります。DB_FILE_NAME_CONVERTLOG_FILE_NAME_CONVERTなどのパラメータは、初期化パラメータ・ファイルで設定する必要はありません。これらのパラメータおよび他のすべてのパラメータは、DUPLICATEコマンド自体で設定できるためです。

SPFILEの方法を使用していない場合は、初期化パラメータを初期化パラメータ・ファイルで設定する必要があります。表23-1に、これらの初期化パラメータを示します。

表23-1    補助インスタンスの初期化パラメータ 
初期化パラメータ    ステータス 

DB_NAME 

DUPLICATEコマンドで使用する名前と同じ名前。

複製データベースのDB_NAME設定は、そのOracleホームのデータベース間で一意である必要があります。 

必須 

CONTROL_FILES 

制御ファイルの場所。

参照: 「複製制御ファイルの名前の指定」を参照してください。 

必須(Oracle管理ファイル用のパラメータを設定していない場合) 

DB_BLOCK_SIZE 

複製データベースのブロック・サイズ。

このブロック・サイズは、ソース・データベースのブロック・サイズと一致している必要があります。ソース・データベースのパラメータ・ファイルにDB_BLOCK_SIZE初期化パラメータの値が含まれている場合、補助インスタンスに同じ値を指定する必要があります。ただし、ソース・データベースの初期化パラメータ・ファイルにDB_BLOCK_SIZEが指定されていない場合は、補助インスタンスにDB_BLOCK_SIZEは指定しないでください。

参照: 「代替方法を使用した複製ファイルの名前の指定」を参照してください。 

必須(ソース・データベースでこの初期化パラメータが設定されている場合) 

DB_FILE_NAME_CONVERT 

データファイルおよび一時ファイルの名前を変換する文字列のペア。DUPLICATEコマンド自体にDB_FILE_NAME_CONVERTを指定することもできます。

参照: 「複製データファイルの名前の指定」および「複製一時ファイルの名前の指定」を参照してください。 

オプション 

LOG_FILE_NAME_CONVERT 

オンラインREDOログ・ファイルの名前を指定する文字列のペア。

参照: 「複製オンラインREDOログ・ファイルのネーミング」を参照してください。 

オプション 

DB_CREATE_FILE_DEST 

Oracle管理データファイルの場所。

参照: 「複製データファイルの名前の指定」および「複製一時ファイルの名前の指定」を参照してください。 

オプション 

DB_CREATE_ONLINE_LOG_DEST_n 

Oracle管理オンラインREDOログ・ファイルの場所。

参照: 「複製オンラインREDOログ・ファイルのネーミング」を参照してください。 

オプション 

DB_RECOVERY_FILE_DEST 

フラッシュ・リカバリ領域の場所。

参照: 「代替方法を使用した複製ファイルの名前の指定」を参照してください。 

オプション 

必要に応じて、Oracle Netを介してSYSDBAとして接続するためのパラメータも含めて、その他の初期化パラメータを設定します。

同じホスト、または異なるファイル・システムを持つ新しいホストに複製を作成する場合は、パス名を指定するすべての初期化パラメータに注意してください。データベースの複製先ホスト上ですべてのパスがアクセス可能であることを確認します。

例23-2に、サンプル初期化パラメータ・ファイルの設定例を示します。

例23-2    補助インスタンス用のサンプル初期化パラメータ・ファイル

DB_NAME=dupdb
CONTROL_FILES=(/dup/oracle/oradata/prod/control01.ctl,
               /dup/oracle/oradata/prod/control02.ctl)
DB_FILE_NAME_CONVERT=(/oracle/oradata/prod/,/dup/oracle/oradata/prod/)
LOG_FILE_NAME_CONVERT=(/oracle/oradata/prod/redo,/dup/oracle/oradata/prod/redo)

手順4: SQL*Plusを使用した補助インスタンスの起動

Recovery Managerの複製を開始する前に、SQL*Plusを使用してSYSOPER権限で補助データベース・インスタンスに接続します。インスタンスをNOMOUNTモードで起動し、必要に応じてPFILEパラメータを指定します。

SQL> STARTUP NOMOUNT


注意:

補助インスタンスに制御ファイルがないため、このインスタンスはNOMOUNTモードでのみ起動できます。制御ファイルの作成、補助インスタンスのマウントまたはオープンは実行しないでください。 


Recovery Managerは、複製処理中に補助インスタンスを停止して再起動します。このため、補助インスタンス用のサーバー側の初期化パラメータ・ファイルを転送先ホスト上のデフォルトの場所に含めることをお薦めします。

DUPLICATEコマンドのSPFILE句を使用すると、Recovery Managerは、ソース・データベースのサーバー・パラメータ・ファイルを転送先ホスト上の補助インスタンスのデフォルトの場所にコピーまたはリストアします。SPFILE句を使用しない場合は、サーバー・パラメータ・ファイルを転送先ホストにコピーするか、またはDUPLICATEコマンドのPFILEパラメータが含まれているテキストベースの初期化パラメータ・ファイルを指定する必要があります。補助インスタンス用のテキストベースの初期化パラメータ・ファイルは、複製の実行に使用されるRecovery Managerクライアントと同じホスト上に存在する必要があります。

Recovery Managerの起動および複製前の構成

DUPLICATE DATABASEコマンドを実行する前に、次のタスクを実行します。

手順1: Recovery Managerの起動およびデータベース・インスタンスへの接続

Recovery Managerを起動して、TARGETとしてソース・データベースに、AUXILIARYとして複製データベース・インスタンスに、必要に応じてリカバリ・カタログ・データベースに接続します。すべてのデータベース・インスタンスに接続可能であるかぎり、どのホスト上でもRecovery Managerクライアントを起動できます。補助インスタンスにテキストベースの初期化パラメータ・ファイルが必要な場合は、Recovery Managerクライアント・アプリケーションが実行されるホストと同じホスト上にそのファイルが存在する必要があります。

Recovery Managerを起動し、ターゲット・インスタンスおよび補助インスタンスに接続する手順
  1. Recovery Managerクライアントを起動します。

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

    % rman
    
    
  2. Recovery Managerプロンプトで、各データベース・インスタンスに対してCONNECTコマンドを実行します。

    次の例では、3つのすべてのデータベース・インスタンスにネット・サービス名を使用して接続します。

    RMAN> CONNECT TARGET SYS@prod     # source database
    
    target database Password: password
    connected to target database: PROD (DBID=39525561)
    
    RMAN> CONNECT AUXILIARY SYS@dupdb   # duplicate database instance
    
    auxiliary database Password: password
    connected to auxiliary database: DUPDB (not mounted)
    
    RMAN> CONNECT CATALOG rman@catdb     # recovery catalog database
    
    recovery catalog database Password: password
    connected to recovery catalog database
    

手順2: ソース・データベースのマウントまたはオープン

Recovery Managerによる複製を開始する前に、ソース・データベースがマウントまたはオープンされていない場合は、マウントまたはオープンします。ソース・データベースがオープンしている場合は、アーカイブを有効にする必要があります。ソース・データベースがオープンしていない場合、およびソース・データベースがスタンバイ・データベースでない場合は、一貫性のある状態で停止する必要があります。

手順3: 複製で使用するためのRecovery Managerチャネルの構成

バックアップベースの複製に必要な場合は、補助データベース・インスタンス上で使用するチャネルを構成します。バックアップをリストアするのは補助インスタンスのチャネルであり、ソース・データベース・インスタンスではないことに注意してください。

Recovery Managerは、AUXILIARYオプションが指定されていなくても、ソース・データベースに設定された同じチャネル構成を複製に使用できます。ただし、補助チャネルに特別なパラメータが必要な場合(別のメディア・マネージャを指す場合など)は、CONFIGUREコマンドのAUXILIARYオプションを指定して自動チャネルを構成します。

バックアップベースの複製では、チャネルのチャネル・タイプ(DISKまたはsbt)は、ソース・データベースのバックアップが存在するメディアと一致している必要があります。バックアップがディスクにある場合は、割り当てるチャネルの数を増やすと、複製の速度も速くなります。テープ・バックアップの場合は、チャネルの数を使用可能なデバイスの数に制限します。

アクティブなデータベースの複製では、ソース・データベースのチャネル構成を変更したり、AUXILIARYチャネルを構成する必要はありません。ただし、Recovery Managerがネットワークを介してパラレルにファイルをコピーできるよう、ソース・データベースのディスク・チャネルのパラレル化設定を増加させる必要がある場合があります。

参照:

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

データベースの複製

この項では、複製データベースを作成する最も基本的な手順について説明します。この手順は、データベースおよびホストの構成方法によって異なります。この項の内容は、次のとおりです。

同じディレクトリ構造を持つリモート・ホストでのデータベースの複製

最も簡単な方法は、アクティブなデータベースの複製を使用してデータベースを異なるホストに複製し、同じディレクトリ構造を使用する方法です。ソース・データベースでサーバー・パラメータ・ファイルが使用されている(またはバックアップが使用可能である)場合は、転送先ホストに一時初期化パラメータ・ファイルを作成し、DB_NAMEパラメータのみを設定できます。複製データベース・ファイル名に追加のパラメータを設定したり、バックアップを複製ホストに転送する必要はありません。

同じディレクトリ構造を持つリモート・ホストにデータベースを複製する手順
  1. 「補助インスタンスの準備」の手順を実行します。

    この例では、初期化パラメータ・ファイルに、任意の値に設定されたDB_NAMEのみが含まれています。

  2. 「Recovery Managerの起動および複製前の構成」の手順を実行します。

  3. DUPLICATEコマンドを実行します。

例23-3に、アクティブな複製にDUPLICATEを使用する方法を示します。この例では、ソース・データベース・ファイルの名前が複製データベース・ファイルの名前と同じであるため、NOFILENAMECHECKオプションが必要です。

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

DUPLICATE TARGET DATABASE
  TO dupdb
  FROM ACTIVE DATABASE
  SPFILE
  NOFILENAMECHECK;

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

ソース・データベースの1週間前のデータを表示するために、複製データベースをその時点までリカバリするとします。例23-4では、バックアップベースの複製を使用して、ソース・データベースの1週間前の状態の複製を作成します。UNTIL句は、アクティブなデータベースの複製ではサポートされていません。

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

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

例23-4のコマンドでは、Recovery Managerがソース・データベースからパスワード・ファイルを複製する必要があることを示すPASSWORD FILEオプションが指定されています。

異なるディレクトリ構造を持つリモート・ホストでのデータベースの複製

異なるディレクトリ構造を持つホストに複製データベースを作成する場合は、複製データベースのデータファイルにファイル名を生成する方法を使用する必要があります。最も簡単な方法は、アクティブなデータベースの複製を使用し、SPFILE句を使用してファイルの名前を指定する方法です(「複製ファイルの名前の指定方法の選択」を参照)。1ソース・データベースでサーバー・パラメータ・ファイルが使用されている(またはバックアップが使用可能である)場合は、転送先ホストに一時初期化パラメータ・ファイルを作成し、DB_NAMEパラメータのみを設定できます。

ソース・データベースのデータファイルが/oracle/oradata/prod/にあり、それらのデータファイルを/scratch/oracle/oradata/dupdb/に複製するとします。すべてのソース・データベースのオンラインREDOログが/oracle/oradata/prod/redo/にあり、それらのオンラインREDOログを/scratch/oracle/oradata/dupdb/redo/に複製するとします。

異なるディレクトリ構造を持つリモート・ホストにデータベースを複製する手順
  1. 「補助インスタンスの準備」の手順を実行します。

    この例では、DB_NAMEのみがパラメータとして指定されている、複製インスタンス用の一時初期化パラメータ・ファイルを作成します。このパラメータは、任意の値に設定できます。

  2. 「Recovery Managerの起動および複製前の構成」の手順を実行します。

    この例では、ソース・データベースはオープンされており、自動チャネルが構成されていると想定しています。次のように入力して、Recovery Managerを起動し、ソース・データベース・インスタンスおよび補助データベース・インスタンスに接続します。

    RMAN> CONNECT TARGET SYS@prod
    
    target database Password: password
    connected to target database: PROD1 (DBID=39525561)
    
    CONNECT AUXILIARY SYS@dupdb
    
    auxiliary database Password: password
    connected to auxiliary database: DUPDB (not mounted)
    
    
  3. DUPLICATEコマンドを実行します。

    例23-5では、DB_FILE_NAME_CONVERTパラメータと組み合せてSPFILE句を使用して、複製データベース・ファイルの名前を指定します。PARAMETER_FILE_CONVERTパラメータはLOG_FILE_NAME_CONVERTまたはDB_FILE_NAME_CONVERTに影響を及ぼしません。このため、これらの2つのパラメータは個別に設定する必要があります。

    例23-5    異なるディレクトリ構造を持つホストへの複製(アクティブ)

    DUPLICATE TARGET DATABASE
      TO dupdb
      FROM ACTIVE DATABASE   
      DB_FILE_NAME_CONVERT '/oracle/oradata/prod/','/scratch/oracle/oradata/dupdb/'
      SPFILE 
        PARAMETER_VALUE_CONVERT '/oracle/oradata/prod/', 
                                '/scratch/oracle/oradata/dupdb/'
        SET SGA_MAX_SIZE '300M'
        SET SGA_TARGET '250M'
        SET LOG_FILE_NAME_CONVERT '/oracle/oradata/prod/redo/', 
                                  '/scratch/oracle/oradata/dupdb/redo/';
    
    

    Recovery Managerは、サーバー・パラメータ・ファイルを転送先ホストに自動的にコピーし、PARAMETER_VALUE_CONVERTおよびSETで指定されている値に基づいて、転送先ホスト上でサーバー・パラメータ・ファイルを更新します。その後、Recovery Managerは、サーバー・パラメータ・ファイルを使用して補助インスタンスを起動し、必要なすべてのデータベース・ファイルおよびアーカイブREDOログをネットワークを介して転送先ホストにコピーし、データベースをリカバリします。最後に、Recovery Managerは、RESETLOGSオプションを指定してデータベースをオープンし、オンラインREDOログを作成します。

ローカル・ホストでの複製データベースの作成

ソース・データベースと同じホスト上に複製データベースを作成する場合は、「異なるディレクトリ構造を持つリモート・ホストでのデータベースの複製」に示す、異なるディレクトリ構造を持つリモート・ホストでの複製と同じ手順を実行します。

ソース・データベースと同じOracleホームにデータベースを複製できますが、ソース・データベースとは異なるデータベース名を使用し、別のホスト上でファイル名を変換する場合と同じ方法で、ファイル名を変換する必要があります。


注意:

プライマリ・データベースと同じOracleホームへ複製する場合、NOFILENAMECHECKオプションは使用しないでください。このオプションを使用すると、DUPLICATEコマンドによって、ソース・データベースのデータファイルが上書きされる場合があります。 


Oracle Managed Filesまたは自動ストレージ管理を使用したデータベースの複製

この項では、複製データベースの一部またはすべてのファイルがOracle管理ファイルであるか、またはそれらのファイルで自動ストレージ管理(ASM)が使用されている場合に、複製データベースを作成する際の要件について説明します。

Oracle管理ファイルの初期化パラメータの設定

Oracle管理ファイルを使用する複製データベースを作成する場合は、補助インスタンスで初期化パラメータを設定する必要があります。DUPLICATESPFILE句を使用してファイルの名前を指定する場合は、SPFILE句で初期化パラメータを設定できます。次の表に、関連する初期化パラメータおよび推奨設定を示します。

表23-2    Oracle管理ファイルの初期化パラメータ 
初期化パラメータ  用途  推奨事項 

DB_CREATE_FILE_DEST 

Oracle管理データファイルのデフォルトの場所を指定します。この場所は、どのDB_CREATE_ONLINE_LOG_DEST初期化パラメータも指定されていない場合、Oracle管理の制御ファイルおよびオンライン・ログのデフォルトの場所でもあります。 

このパラメータをOracle管理ファイルの場所に設定します。他の場所が指定されてないデータベース・ファイルがDUPLICATEによってDB_CREATE_FILE_DESTで作成されます。「SET NEWNAMEを使用したOracle管理ファイルの名前の指定」で説明するように、SET NEWNAMEを使用して特定のファイルのデフォルト値を上書きできます。 

DB_CREATE_ONLINE_LOG_DEST_n 

Oracle管理の制御ファイルおよびオンラインREDOログのデフォルトの場所を指定します。複数のパラメータが設定されている場合は、それぞれの場所に制御ファイルおよびオンラインREDOログが1つずつ作成されます。 

複数の場所の制御ファイルおよびREDOログを多重化する場合のみ、これらのパラメータを設定します(_1_2など)。 

DB_RECOVERY_FILE_DEST 

フラッシュ・リカバリ領域のデフォルトの場所を指定します。フラッシュ・リカバリ領域には、現行の制御ファイルおよびオンラインREDOログの多重コピーが含まれています。 

リカバリ領域に制御ファイルおよびオンラインREDOログ・ファイルの多重コピーが必要な場合は、このパラメータを設定します。 

CONTROL_FILES 

1つ以上の制御ファイル名をカンマで区切って指定します。 

Oracle Managed Files形式でデータベース制御ファイルを複製する場合は、このパラメータを設定しないでください。制御ファイルにOMF形式を使用する場合は、複製データベースでサーバー・パラメータ・ファイルを使用することをお薦めします。 

DB_FILE_NAME_CONVERT 

プライマリ・データベース上の新しいデータファイルのファイル名を複製データベース上のファイル名に変換します。 

このパラメータを設定しないでください。このパラメータを省略することによって、データベースは複製データファイルにOracle管理ファイルの有効な名前を生成できます。 

LOG_FILE_NAME_CONVERT 

プライマリ・データベース上の新しいログ・ファイルのファイル名をスタンバイ・データベース上のログ・ファイルのファイル名に変換します。 

このパラメータを設定しないでください。このパラメータを省略することによって、データベースはOracle管理オンラインREDOログ・ファイルの有効な名前を生成できます。

複製データベースのオンラインREDOログ・ファイルをOracle管理ストレージに格納するには、DB_CREATE_FILE_DESTDB_RECOVERY_FILE_DESTまたはDB_CREATE_ONLINE_LOG_DEST_n初期化パラメータを使用して、オンライン・ログのOracle管理の場所を指定します。 

ASMの初期化パラメータの設定

ASMの場所に複製データベースを作成する手順は、「Oracle管理ファイルの初期化パラメータの設定」に示す手順と同様です。補助インスタンスで、ASMディスク・グループへの複製時にファイルが作成される場所を制御する初期化パラメータを設定する必要がある点が異なります。たとえば、DB_CREATE_FILE_DESTDB_CREATE_ONLINE_DEST_nおよびCONTROL_FILESを設定します。

ファイル・システムからASMへのデータベースの複製の例

この例では、アクティブなデータベースの複製を使用します。ソース・データベースでサーバー・パラメータ・ファイルが使用されている(またはバックアップが使用可能である)場合は、転送先ホストに一時初期化パラメータ・ファイルを作成し、DB_NAMEパラメータのみを設定できます。

ソース・データベースprodhost1上にあり、データファイルは非ASMファイル・システムに保存されていると想定しています。prodの制御ファイルは、/oracle/oradata/prod/に存在します。ソース・データベースを複製し、リモート・ホストhost2上にdupdbデータベースを作成します。ASMディスク・グループ+DISK1に複製データベース・ファイルを保存します。

Recovery Managerをターゲット・データベース、複製データベースおよびリカバリ・カタログ・データベースに接続してから、例23-6に示すRecovery Managerスクリプトを実行してデータベースを複製します。

例23-6    ファイル・システムからASMへの複製(アクティブ)

DUPLICATE TARGET DATABASE
  TO dupdb
  FROM ACTIVE DATABASE
  SPFILE 
    PARAMETER_VALUE_CONVERT '/oracle/oradata/prod/', '+DISK1'
    SET DB_CREATE_FILE_DEST +DISK1;

DUPLICATEコマンドが完了すると、データファイル、オンラインREDOログおよび制御ファイルとともに複製データベースがASMディスク・グループ+DISK1に作成されます。

ASMからASMへのデータベースの複製の例

この例では、アクティブなデータベースの複製を使用します。ソース・データベースでサーバー・パラメータ・ファイルが使用されている(またはバックアップが使用可能である)場合は、転送先ホストに一時初期化パラメータ・ファイルを作成し、DB_NAMEパラメータのみを設定できます。

ソース・データベースprodhost1上にあり、データファイルはASMディスク・グループ+DISK1に保存されていると想定しています。ターゲット・データベースを複製し、リモート・ホストhost2上にdupdbデータベースを作成します。ASMにdupdbのデータファイルを格納します。具体的には、ディスク・グループ+DISK2にデータファイルおよび制御ファイルを保存します。

DUPLICATEコマンドにPARAMETER_VALUE_CONVERTを設定し、すべてのディレクトリの場所を+DISK1から+DISK2に変換します。+DISK2の新しいファイル名は、ASMによって生成され、ディスク・グループ+DISK1の元のファイル名とは一致しません。

ターゲット・データベース、複製データベースおよびカタログ・データベースに接続してから、例23-7に示すRecovery Managerスクリプトを実行してデータベースを複製します。

例23-7    ASMからASMへの複製(アクティブ)

DUPLICATE TARGET DATABASE
  TO dupdb
  FROM ACTIVE DATABASE
  SPFILE PARAMETER_VALUE_CONVERT '+DISK1','+DISK2'
     SET DB_FILE_NAME_CONVERT    '+DISK1','+DISK2'
     SET LOG_FILE_NAME_CONVERT   '+DISK1','+DISK2';

DUPLICATEコマンドが完了すると、データファイル、オンラインREDOログおよび制御ファイルとともに複製データベースがASMディスク・グループ+DISK2に作成されます。

代替方法を使用した複製ファイルの名前の指定

この項では、複製ファイルの名前の指定にSPFILE句の方法を使用しない場合、または他の名前指定方法でSPFILE句の方法を補完する場合を想定しています。

次の項で、複製データベースでファイルの名前を指定する方法について説明します。

複製制御ファイルの名前の指定

複製データベースの制御ファイルの名前を指定する場合は、補助初期化パラメータ・ファイルで初期化パラメータを設定する必要があります。CONTROL_FILES初期化パラメータでファイル名を指定するか、または他のパラメータを使用してOracle管理ファイルの場所を指定することができます。

複製データベースの制御ファイルの名前を決定する場合の優先順位の規則は、SQL文CREATE CONTROLFILEで使用される規則と同じです。複製データベースの制御ファイルの名前を選択するときは、補助データベースの初期化パラメータ・ファイルにパラメータを正しく設定します。そうしない場合、ソース・データベースの制御ファイルが上書きされます。

参照:

『Oracle Database SQL言語リファレンス』のCREATE CONTROLFILE エントリのセマンティクスに関する項を参照してください。 

複製オンラインREDOログ・ファイルのネーミング

Recovery Managerでは、複製データベースのオンラインREDOログ・ファイルの新しい名前が必要です。DUPLICATEコマンドで明示的に名前を指定するか、またはRecovery Managerによって名前を生成できます。

  1. DUPLICATEコマンドのLOGFILE句を指定します。

    このオプションを指定すると、指定されたとおりに複製データベースにオンラインREDOログが作成されます。

  2. LOG_FILE_NAME_CONVERT初期化パラメータを設定してください。

    このパラメータを設定すると、log_*からduplog_*などのように、ソース・データベース・ファイルの名前で文字列を置き換えることによって、複製ログ・ファイルの名前が作成されます。変換する組合せは複数指定できます。

    Oracle管理ファイルでLOG_FILE_NAME_CONVERTを使用する方法の詳細は、「Oracle管理ファイルの初期化パラメータの設定」を参照してください。

    Recovery Managerは、オンラインREDOログの作成時にREUSEパラメータを使用します。指定された場所にすでにオンラインREDOログ・ファイルが存在し、適切な大きさの場合は、そのオンラインREDOログ・ファイルが複製のために再利用されます。

  3. Oracle Managed Files初期化パラメータDB_CREATE_FILE_DESTDB_CREATE_ONLINE_DEST_nまたはDB_RECOVERY_FILE_DESTのいずれかを設定します。

    このパラメータを設定すると、ソース・データベース・ファイルの名前で文字列を置き換えることによって、複製ログ・ファイルの名前が作成されます。これらのパラメータの優先順位の規則は、SQL文ALTER DATABASE ADD LOGFILEで使用される規則と同じです。

  4. 前述のいずれの手順も実行しません。

    複製ファイル名がソース・データベース・ファイル名と同じになります。この方法を使用する場合は、NOFILENAMECHECKオプションを指定する必要があります。また、複製のオンラインREDOログが複製元と競合しないように、複製データベースは別のホストに存在する必要があります。

優先順位の高い規則は、優先順位の低い規則より優先されます。たとえば、LOGFILE句およびLOG_FILE_NAME_CONVERTパラメータの両方を指定した場合、Recovery ManagerはLOGFILE句を使用します。


注意:

  • ソース・データベースと複製データベースが同じホストに存在する場合、ソース・データベースが現在使用しているオンラインREDOログの名前は使用しないでください。

  • 複製データベースが異なるホストに存在し、NOFILENAMECHECKを指定していない場合は、複製先ホストでデータベースによって現在使用されているオンラインREDOログ・ファイルの名前は使用しないでください。

 

複製データファイルの名前の指定

いくつかの方法を使用して、複製データベースのデータファイルに新しい名前を指定できます。次に、それらの方法を優先順位の高い順に示します。

  1. SET NEWNAMEコマンドとDUPLICATEコマンドの両方が含まれているRUNブロック内で、Recovery ManagerのコマンドSET NEWNAME FOR DATAFILEを使用します。

  2. Recovery ManagerのコマンドCONFIGURE AUXNAMEを使用して、既存のデータファイルに新しい名前を指定します。CONFIGURE AUXNAMEコマンドは、DUPLICATEコマンドの前に実行します。

  3. DUPLICATE ... DB_FILE_NAME_CONVERTを実行し、SET NEWNAMEまたはCONFIGURE AUXNAMEによって名前が変更されないデータファイルの名前を変換する規則を指定します。


    注意:

    DUPLICATEコマンドのDB_FILE_NAME_CONVERT句を使用して、ソース・データベース・インスタンスではOracle Managed Files(OMF)である複製インスタンスのファイルの新しい名前を制御することはできません。この制限の詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。 


  4. DB_FILE_NAME_CONVERT初期化パラメータを設定してください。


    注意:

    DB_FILE_NAME_CONVERT初期化パラメータを使用して、ソース・データベース・インスタンスではOracle Managed Files(OMF)である複製インスタンスのファイルの新しい名前を制御することはできません。DUPLICATEコマンドのDB_FILE_NAME_CONVERTパラメータと同じセマンティクスおよび制限に従います。詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。 


  5. DB_CREATE_FILE_DEST初期化パラメータを設定して、指定した場所でOracle Managed Filesのデータファイルを作成します。

前述のいずれの手順も実行しない場合、複製データベースではソース・データベースの元のデータファイルの場所が再利用されます。

複製一時ファイルの名前の指定

Recovery Managerは、データベース複製プロセスの一部として一時表領域のデータファイルを再作成します。複製データベースの一時ファイルの場所を指定する方法は複数あります。次に、それらの方法を優先順位の高い順に示します。

  1. SET NEWNAMEコマンドとDUPLICATEコマンドの両方が含まれているRUNブロック内で、SET NEWNAME FOR TEMPFILEコマンドを使用します。

  2. DUPLICATEコマンドにDB_FILE_NAME_CONVERT句を指定して、SET NEWNAMEによって名前が変更されない一時ファイルを変換する規則を指定します。


    注意:

    DB_FILE_NAME_CONVERT句を使用して、ソース・データベース・インスタンスではOracle Managed Files(OMF)である複製インスタンスのファイルの新しい名前を制御することはできません。この制限の詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。 


  3. DB_FILE_NAME_CONVERT初期化パラメータを設定してください。


    注意:

    DB_FILE_NAME_CONVERT初期化パラメータは、DUPLICATEコマンドのDB_FILE_NAME_CONVERTパラメータと同じセマンティクスおよび制限に従います。詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。 


  4. DB_CREATE_FILE_DEST初期化パラメータを設定して、Oracle Managed Filesの一時ファイルを作成します。

Recovery Managerによる複製の例

この項では、Recovery ManagerのDUPLICATEの代表的な使用例を示します。

ソース・データベース表領域のサブセットの複製

常に、データベースのすべての表領域を複製する必要があるわけではありません。たとえば、ソース・データベースから表領域のサブセットのみを必要とする、複製のレポートを生成する場合があります。DUPLICATE DATABASEコマンドには、読取り専用の表領域または現在OFFLINE NORMALである表領域をスキップできるオプションがあります。また、TABLESPACE句を使用して、複製データベースに含める表領域を指定することもできます。この項の内容は、次のとおりです。

読取り専用表領域の除外

DUPLICATEコマンドにSKIP READONLYを指定すると、Recovery Managerは読取り専用表領域のデータファイルを複製しません。例23-8は、例23-3を少し変更した例です。読取り専用表領域が除外される点が異なります。

例23-8    読取り専用表領域の除外

DUPLICATE TARGET DATABASE 
  TO dupdb
  FROM ACTIVE DATABASE
  SKIP READONLY
  NOFILENAMECHECK;

OFFLINE NORMAL表領域の除外

DUPLICATE操作の前に、表領域がOFFLINE NORMALオプションによってオフラインにされた場合、Recovery Managerはそれらの表領域のデータファイルの複製およびその複製データベースに対するDROP TABLESPACEの発行を行いません。したがって、特別な構文を指定してこれらの表領域を除外する必要はありません。複製後、すべてのデータファイルおよび表領域はオンラインになります。


注意:

IMMEDIATEオプションを指定して表領域をオフラインにすると、この表領域のリカバリが必要になるため、Recovery Managerはこの表領域を複製します。バックアップベースの複製方法を使用する場合は、オンライン表領域のときと同様に、Recovery Managerにこれらの表領域の有効なバックアップが必要です。 


指定した表領域の追加および除外

SKIP TABLESPACEパラメータを指定すると、複製データベースから表領域を除外できます。SYSTEM表領域、SYSAUX表領域、UNDO表領域およびロールバック・セグメントを含む表領域は除外できないことに注意してください。TABLESPACEパラメータを使用すると、指定したデータベースに含める必要がある表領域を指定することもできます。複製データベースから除外する必要がある表領域を指定するSKIP TABLESPACEとは異なり、このオプションを使用すると、含める必要がある表領域が指定された後、残りの表領域はスキップされます。

例23-9は、例23-3を少し変更した例です。tools表領域が除外される点が異なります。

例23-9    指定した表領域の除外

DUPLICATE TARGET DATABASE 
  TO dupdb
  FROM ACTIVE DATABASE
  SKIP TABLESPACE tools
  NOFILENAMECHECK;

例23-10例23-3を少し変更した例です。users表領域が含まれ、SYSTEM表領域、SYSAUX表領域およびUNDOセグメントまたはロールバック・セグメントが含まれている表領域以外の他のすべての表領域が除外される点が異なります。

例23-10    指定した表領域の追加

DUPLICATE TARGET DATABASE 
  TO dupdb
  FROM ACTIVE DATABASE
  TABLESPACE users
  NOFILENAMECHECK;

DUPLICATEを使用したアーカイブ・バックアップのリストア

「長期格納用のデータベース・バックアップの作成」の説明に従って、アーカイブ・バックアップを行うことができます。アーカイブ・バックアップは、データベースのリストアおよびリカバリに必要なすべてのファイルが含まれているという点で包括的なバックアップです。テストのためにアーカイブ・バックアップをリストアする場合は、一時インスタンスを作成し、DUPLICATEコマンドを使用する方法をお薦めします。この方法を使用すると、本番システムに影響が及ぼされません。

Recovery Managerを起動し、ターゲット・データベースおよびカタログ・データベースに接続するとします。例23-11では、タグTESTDBが含まれているアーカイブ・バックアップを一時ディスクに作成します。

例23-11    一時的なアーカイブ・バックアップの作成

BACKUP DATABASE 
  FORMAT '/disk1/oraclebck/%U' 
  TAG TESTDB 
  KEEP UNTIL 'SYSDATE+1' 
  RESTORE POINT TESTDB06;

例23-11では、リカバリ・カタログおよびバックアップ制御ファイルの両方に存在し、バックアップをリカバリする時点を示すラベルとなるリストア・ポイントを作成します。アーカイブ・ログは、オンライン・バックアップの場合にのみバックアップされることに注意してください。アーカイブ・ログは、オフライン・バックアップでは必要ないためバックアップされません。

例23-11で作成されたバックアップをリストアする手順は、「データベースの複製」の手順と同様です。唯一の追加要件として、DUPLICATEコマンドで、アーカイブ・バックアップを使用して作成されたリストア・ポイントを指定する必要があります。

アーカイブ・バックアップをリストアする手順
  1. Recovery Managerを、TARGETとしてソース・データベースに、AUXILIARYとして複製データベース・インスタンスに、およびリカバリ・カタログに接続します。

  2. LIST RESTORE POINTを実行し、使用可能なリストア・ポイントを表示します(手順は、「リストア・ポイントの表示」を参照)。

    LIST RESTORE POINT;
    
    
  3. データベースを複製する場合のDUPLICATEコマンド自体の発行の前までのすべての手順に従います。

  4. DUPLICATEコマンドを実行し、リストアするアーカイブ・バックアップのリストア・ポイントを指定します。

    次の例では、補助インスタンスを作成し、テスト・ホスト上でRecovery Managerを実行していると想定しています。UNTIL RESTORE POINT句にTESTDB06が指定されています。これは、例23-11で作成されたリストア・ポイントです。

    DUPLICATE TARGET DATABASE 
      TO mytest
      UNTIL RESTORE POINT TESTDB06
      DB_FILE_NAME_CONVERT '/prod/oracledb/','/test/oracledb'
      PFILE 'test/oracledb/init.ora';
    
    

    前述のDUPLICATEコマンドによって、データベース全体がリストアされ、データベースの名前がmytestに変更されます。DUPLICATEコマンドでは、元の制御ファイルはリストアされませんが、新しい制御ファイルが作成されます。したがって、リストア・ポイントが制御ファイル内に存在しているときに、Recovery Managerがカタログまたはソース・データベースに接続されている場合は、DUPLICATE ... UNTIL RESTORE POINTのみを指定できます。

SET NEWNAMEを使用した複製ファイルの名前の指定

この例では、バックアップベースの複製を使用して複製データベースを作成します。ソース・データベースでサーバー・パラメータ・ファイルが使用されないため、SPFILEの方法を使用して複製データファイルの名前を指定することはできません。複製データファイルがいくつかのディレクトリに分散されるため、SET NEWNAMEコマンドを使用してファイル名を指定します。

ソース・データベースprodhost1上にあり、複数のディレクトリに分散した8つのデータファイルが含まれているとします。ソース・データベースを複製し、リモート・ホストhost2上にdupdbデータベースを作成します。dupdbデータベースでは、表領域toolsが除外され、その他のすべての表領域が保持されます。

この例では、host1host2のディレクトリ構造が異なります。host2のデータファイルを/oradata1から/oradata7サブディレクトリに格納します。ソース・データベースには8つのデータファイルが存在しますが、tools表領域は除外するため、ターゲット・データファイルに指定する必要があるのは7つの場所のみです。転送先ホスト上のディレクトリ/duplogsに2つのオンラインREDOログ・グループを作成し、各グループに200KBのメンバーを2つ含めます。host1およびhost2は、NFSなどの方法を使用して相互のファイル・システムにマウントできないとします。

ソース・データベースのすべてのデータファイルおよびアーカイブREDOログのディスク・コピーまたはバックアップ・セットがディスク上に存在しており、オペレーティング・システム・ユーティリティを使用して、それらをhost2に手動でコピー済です。これらのバックアップおよびコピーは、host2上の、host1上と同じ場所に存在します。

オペレーティング・システムのユーティリティを使用して、初期化パラメータ・ファイルをhost1からhost2の適切な場所にコピー済です。末尾に_DESTが付いていて、パス名を指定するすべての初期化パラメータを再設定済である。RUNコマンド自体でデータファイルおよびオンライン・ログの名前を指定するため、DB_FILE_NAME_CONVERTおよびLOG_FILE_NAME_CONVERTは設定しません。補助インスタンスは、デフォルトの場所にあるサーバー側の初期化パラメータ・ファイルを使用します。そのため、DUPLICATEコマンドにPFILEパラメータを指定する必要はありません。

例23-12に、複製データベースを作成するスクリプトを示します。SET NEWNAMERUN内でのみ実行できるため、RUNコマンドが必要であることに注意してください。データファイル7は複製データベースから除外するtools表領域にあるため、このデータファイルには新しい名前を設定しません。

例23-12    SET NEWNAMEを使用した複製

RUN
{
  SET NEWNAME FOR DATAFILE 1 TO '/oradata1/system01.dbf'; 
  SET NEWNAME FOR DATAFILE 2 TO '/oradata2/undotbs01.dbf';
  SET NEWNAME FOR DATAFILE 3 TO '/oradata3/cwmlite01.dbf'; 
  SET NEWNAME FOR DATAFILE 4 TO '/oradata4/drsys01'; 
  SET NEWNAME FOR DATAFILE 5 TO '/oradata5/example01.dbf'; 
  SET NEWNAME FOR DATAFILE 6 TO '/oradata6/indx01.dbf';
  # Do not set a newname for datafile 7, because it is in the tools tablespace,
  # and you are excluding tools from the duplicate database.
  SET NEWNAME FOR DATAFILE 8 TO '/oradata7/users01.dbf'; 
  DUPLICATE TARGET DATABASE TO dupdb
    SKIP TABLESPACE tools
    LOGFILE
      GROUP 1 ('/duplogs/redo01a.log', 
               '/duplogs/redo01b.log') SIZE 4M REUSE, 
      GROUP 2 ('/duplogs/redo02a.log', 
               '/duplogs/redo02b.log') SIZE 4M REUSE;
}

SET NEWNAMEを使用したOracle管理ファイルの名前の指定

残りのデータベース・ファイルの場所とは別に、Oracle管理ファイルの複製先に特定のデータファイルまたは一時ファイルを格納する場合は、次の手順を実行します。

指定したデータファイルまたは一時ファイルは、DB_CREATE_FILE_DESTで指定された場所にOracle管理ファイルの名前で作成されます。

例23-13に示すように、SET NEWNAMEを使用して、個々のデータファイルまたは一時ファイルを特定のASMディスク・グループに格納することもできます。

例23-13    SET NEWNAMEを使用したASMディスク・グループでのファイルの作成

RUN
{
   SET NEWNAME FOR DATAFILE 1 TO "+dgroup1";
   SET NEWNAME FOR DATAFILE 2 TO "+dgroup2";
   .
   .
   .
   DUPLICATE TARGET DATABASE 
     TO dupdb
     FROM ACTIVE DATABASE
     SPFILE SET DB_CREATE_FILE_DEST +dgroup3;
}

参照:

SET NEWNAMEの使用方法の詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。 

CONFIGURE AUXNAMEを使用した複製ファイルの名前の指定

この項では、「SET NEWNAMEを使用した複製ファイルの名前の指定」で説明されている環境と同じ環境を想定しています。例23-12例23-14を少し変更した例です。CONFIGURE AUXNAMEを使用して新しいデータファイル名を指定します。これらの新しいファイル名は制御ファイルに記録され、将来のすべての複製で使用されます。

また、例23-14では、自動チャネルおよびクライアント側の初期化パラメータ・ファイルを使用してデータベースを複製し、LOGFILE句を使用してオンラインREDOログの名前とサイズを指定します。この場合、SET NEWNAMEを使用していないため、RUNコマンドは不要です。

例23-14    CONFIGURE AUXNAMEを使用したデータベースのファイル名の生成

CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oradata1/system01.dbf'; 
CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oradata2/undotbs01.dbf';
CONFIGURE AUXNAME FOR DATAFILE 3 TO '/oradata3/cwmlite01.dbf'; 
CONFIGURE AUXNAME FOR DATAFILE 4 TO '/oradata4/drsys01'; 
CONFIGURE AUXNAME FOR DATAFILE 5 TO '/oradata5/example01.dbf'; 
CONFIGURE AUXNAME FOR DATAFILE 6 TO '/oradata6/indx01.dbf';

DUPLICATE TARGET DATABASE
  TO dupdb
  SKIP TABLESPACE tools
  LOGFILE
    GROUP 1 ('/duplogs/redo01a.log',
             '/duplogs/redo01b.log') SIZE 4M REUSE,
    GROUP 2 ('/duplogs/redo02a.log',
             '/duplogs/redo02b.log') SIZE 4M REUSE;

Recovery Managerは、すべての増分バックアップ、アーカイブREDOログのバックアップおよびアーカイブREDOログを使用して不完全リカバリを実行し、RESETLOGSオプションを指定してデータベースをオープンしてオンラインREDOログを作成します。

複製の完了後、データファイルが以降の操作によって上書きされないように、複製データベース内のデータファイル用に設定した補助名を消去します。たとえば、次のコマンドを入力します。

CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR; 
CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR; 
CONFIGURE AUXNAME FOR DATAFILE 3 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 4 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 5 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 6 CLEAR;

かわりに、複製元のデータベースと複製データベースを定期的に同期化する必要がある場合があります。この場合は、DUPLICATEコマンドを再度実行して、基本的に複製データベースを再作成します。この方法では、複製データベースのデータファイルの完全コピーを作成する必要があります。複製データベースとソース・データベースを同期化する場合は、常に例23-15に示すスクリプトを実行します。たとえば、このスクリプトは、毎日または毎週実行できます。

例23-15    データベースの複製

DUPLICATE TARGET DATABASE TO dupdb
SKIP TABLESPACE tools
  LOGFILE
    GROUP 1 ('/duplogs/redo01a.log',
             '/duplogs/redo01b.log') SIZE 4M REUSE,
    GROUP 2 ('/duplogs/redo02a.log',
             '/duplogs/redo02b.log') SIZE 4M REUSE;

戻る 次へ
Oracle
Copyright © 2003, 2008, Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引