この章では、インスタンス・リカバリおよびRecovery Manager (RMAN)を使用したOracle Real Application Clusters (Oracle RAC)データベースのバックアップおよびリストアの方法について説明します。また、Oracle RACインスタンス・リカバリ、パラレル・バックアップ、SQL*Plusを使用したリカバリ、およびOracle RACでの高速リカバリ領域の使用についても説明します。内容は次のとおりです。
注意: Oracle RAC環境でのリストアおよびリカバリでは、リカバリを実行するインスタンスを、すべてのデータ・ファイルをリストアする唯一のインスタンスとしても構成する必要はありません。Oracle RACでは、クラスタのすべてのノードからデータ・ファイルにアクセスできるため、すべてのノードでアーカイブREDOログ・ファイルをリストアできます。 |
関連項目: Oracle Cluster Registry(OCR)などのOracle Clusterwareコンポーネントおよび投票ディスクのバックアップおよびリストアについては、『Oracle Clusterware管理およびデプロイメント・ガイド』を参照してください。 |
非クラスタ・ファイル・システム環境では、各ノードはローカルにマウントされる非クラスタ・ファイル・システムのディレクトリにのみバックアップできます。たとえば、リモート・アクセスに対応するようにネットワーク・ファイル・システムを構成しないかぎり、node1
は、node2
またはnode3
のアーカイブREDOログ・ファイルへはアクセスできません。バックアップに対応するようにネットワーク・ファイル・システム・ファイルを構成した場合、各ノードはアーカイブREDOログをローカル・ディレクトリにバックアップします。
この項では、次の一般的なRMANのリストア機能の使用例について説明します。
RMANまたはOracle Enterprise Managerを使用したサーバー・パラメータ・ファイル(SPFILE)のリストア
注意: クラスタ・ファイル・システムのスキームでのリストアおよびリカバリの手順は、非クラスタのOracleの場合とほぼ同じです。 |
この項で説明するスキームでは、「Oracle Automatic Storage Managementおよびクラスタ・ファイル・システムのアーカイブ・スキーム」が使用されていると仮定します。このスキームでは、node3
がクラスタ・ファイル・システムへのバックアップを実行したとします。リストアおよびリカバリ操作にnode3
が使用可能で、すべてのアーカイブ・ログがバックアップ済か、ディスク上にある場合は、次のコマンドを実行して完全リカバリを実行します。
RESTORE DATABASE; RECOVER DATABASE;
バックアップを実行したnode3
が使用できない場合は、残りのノードの1つに対してメディア管理デバイスを構成し、このノードでnode3
のバックアップ・メディアを使用可能にします。
注意: 「自動ロード・バランシングを使用するようなチャネルの構成」で説明したとおり、RMANが構成されている場合、ノード間でチャネルをロード・バランスを実行するには、少なくとも1つのインスタンスがデータベースを正常にオープンするまでロード・バランスができないことに注意してください。つまり、データベース全体のリストア中はノード間でチャネルにロード・バランスが実行されることはありません。RESTORE およびRECOVER コマンド用にチャネルのロード・バランシングをアーカイブするには、次のようなコマンドを実行して、チャネルを一時的に再割当てできます。
run { ALLOCATE CHANNEL DEVICE TYPE sbt C1 CONNECT '@racinst_1' ALLOCATE CHANNEL DEVICE TYPE sbt C2 CONNECT '@racinst_2' ... } |
この項で説明するスキームでは、「非クラスタ・ファイル・システムのローカル・アーカイブ・スキーム」が使用されていると仮定します。このスキームでは、各ノードが異なるディレクトリにローカルでアーカイブします。たとえば、node1
は/arc_dest_1
に、node2
は/arc_dest_2
に、node3
は/arc_dest_3
にアーカイブします。リカバリ・ノードが残りのノードでアーカイブ・ディレクトリを読み取ることができるように、ネットワーク・ファイル・システム・ファイルを構成する必要があります。
すべてのノードが使用可能で、すべてのアーカイブREDOログがバックアップされている場合は、データベースをマウントして任意のノードで次のコマンドを実行することで、完全なリストアおよびリカバリを実行できます。
RESTORE DATABASE; RECOVER DATABASE;
ネットワーク・ファイル・システム構成では、各ノードにその他のノードのREDOログ・ファイルに対する読取りアクセス権があるため、リカバリ・ノードは、ローカルおよびリモート・ディスクにあるアーカイブREDOログの読取りおよび適用が可能です。手動によるアーカイブREDOログの転送は不要です。
インスタンス障害は、ソフトウェアまたはハードウェアの問題によってインスタンスが無効になった場合に発生します。インスタンス障害の後、Oracle DatabaseはオンラインREDOログ・ファイルを使用して、次の各項で説明するデータベース・リカバリを自動的に実行します。
この項の内容は次のとおりです。
Oracle RACでのインスタンス・リカバリでは、障害が発生したインスタンス上で実行していたアプリケーションのリカバリは実行されません。Oracle Clusterwareがインスタンスを自動的に再起動します。
障害発生前にノードで実行中のアプリケーションは、障害の認識とリカバリの機能を使用して実行を継続します。これによって、ハードウェアまたはソフトウェアに障害が発生しても、一貫性のある連続的なサービスが提供されます。あるインスタンスが別のインスタンスのリカバリを実行する場合、障害が発生しなかったインスタンスは、障害が発生しているインスタンスによって生成されたオンラインREDOログ・エントリを読み取り、その情報を使用して、コミットされたすべてのトランザクションがデータベースに記録されるようにします。したがって、コミットされたトランザクションのデータが失われることはありません。 リカバリを実行中のインスタンスは、障害発生時にアクティブだったトランザクションをロールバックし、それらのトランザクションによって使用されたリソースを解放します。
注意: すべてのオンラインREDOログは、インスタンスのリカバリのためにアクセスできる必要があります。オンラインREDOログをミラー化することをお薦めします。 |
複数ノード障害が発生した場合、障害を受けなかったインスタンスが1つでもあれば、Oracle RACは、障害が発生したすべてのインスタンスに対してインスタンス・リカバリを実行します。Oracle RACデータベースのすべてのインスタンスに障害が発生した場合、Oracle Databaseは、次のインスタンスがデータベースをオープンするときにリカバリを自動的に実行します。リカバリを実行するインスタンスは、Oracle RACデータベースのどのノードからでも、クラスタ・データベースまたは排他モードでデータベースをマウントできます。このリカバリ手順は、1つのインスタンスが、障害が発生したすべてのインスタンスのリカバリを実行するという点以外は、共有モードで実行しているOracle Databaseでも、排他モードで実行しているOracle Databaseでも同じです。
Oracle Databaseには、データベースのバックアップおよびリストアを行うRMANがあります。RMANを使用すると、データ・ファイル、制御ファイル、SPFILEおよびアーカイブREDOログのバックアップ、リストアおよびリカバリを実行できます。RMANはOracle Databaseサーバーに含まれているため、デフォルトでインストールされます。RMANは、コマンドラインから実行するか、またはEnterprise ManagerのBackup Managerから使用できます。また、Oracle Automatic Storage Management(Oracle ASM)を使用している場合、バックアップおよびリカバリ・ツールとしてRMANを使用することをお薦めします。Oracle RAC環境でRMANを使用する手順は、非クラスタのOracle環境の場合とほぼ同じです。
関連項目: 非クラスタのRMANのバックアップ手順の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |
インスタンスへのチャネル接続は、チャネル構成で定義された接続文字列を使用して判別されます。たとえば、次の構成では、dbauser/pwd@
service_name
を使用して3つのチャネルが割り当てられています。ロード・バランシングが有効の状態でSQL Netサービス名を構成した場合、ロード・バランシング・アルゴリズムによって決定されたノードにチャネルが割り当てられます。
CONFIGURE DEVICE TYPE sbt PARALLELISM 3;
CONFIGURE DEFAULT DEVICE TYPE TO sbt;
CONFIGURE CHANNEL DEVICE TYPE SBT CONNECT 'dbauser/pwd@service_name'
ただし、接続文字列で使用されるサービス名がロード・バランシング用ではない場合、次のようにチャネル構成ごとに個別の接続文字列を使用して、どのインスタンスにチャネルを割り当てるかを制御できます。
CONFIGURE DEVICE TYPE sbt PARALLELISM 3; CONFIGURE CHANNEL 1.. CONNECT 'dbauser/pwd@mydb_1'; CONFIGURE CHANNEL 2.. CONNECT 'dbauser/pwd@mydb_2'; CONFIGURE CHANNEL 3.. CONNECT 'dbauser/pwd@mydb_3';
前述の例では、Oracle RAC環境の定義済ノードに接続するSQL*Netサービス名は、mydb_1
、mydb_2
およびmydb_3
であると仮定しています。また、手動で割り当てたチャネルを使用してデータベース・ファイルをバックアップすることもできます。たとえば、次のコマンドを実行すると、SPFILE、制御ファイル、データ・ファイルおよびアーカイブREDOログがバックアップされます。
RUN { ALLOCATE CHANNEL CH1 CONNECT 'dbauser/pwd@mydb_1'; ALLOCATE CHANNEL CH2 CONNECT 'dbauser/pwd@mydb_2'; ALLOCATE CHANNEL CH3 CONNECT 'dbauser/pwd@mydb_3'; BACKUP DATABASE PLUS ARCHIVED LOG; }
少なくとも1つの割り当てられたチャネルからアーカイブ・ログにアクセス可能であれば、バックアップ操作中、RMANはそのチャネル上の特定のログのバックアップを自動的にスケジュールします。制御ファイル、SPFILEおよびデータ・ファイルはどのチャネルからでもアクセス可能であるため、これらのファイルのバックアップ操作は、割り当てられたチャネル間で分散されます。
ローカル・アーカイブ・スキームの場合、ローカル・アーカイブ・ログに記録するすべてのノードに1つ以上のチャネルが割り当てられている必要があります。クラスタ・ファイル・システムのアーカイブ・スキームでは、すべてのノードがアーカイブ・ログを同じクラスタ・ファイル・システムに書き込む場合、そのアーカイブ・ログのバックアップ操作は、割り当てられたチャネル間で分散されます。
バックアップの実行中は、チャネルの接続先インスタンスは、すべてマウントされているか、すべてオープン状態である必要があります。たとえば、node2
とnode3
のインスタンスにはオープン状態のデータベースがあるが、node1
のインスタンスにマウントされたデータベースがある場合は、バックアップに失敗します。
関連項目: CONFIGURE CHANNEL文のCONNECT句の詳細は、 『Oracle Databaseバックアップおよびリカバリ・リファレンス』 を参照してください。 |
一部のクラスタ・データベース構成では、クラスタの一部のノードは、他のデータファイルに対するアクセスよりもより高速に特定のデータファイルにアクセスします。RMANはこの状況を自動的に検出し、これはノード・アフィニティの認識と呼ばれます。特定のデータファイルのバックアップに使用するチャネルを決定する際に、RMANは、バックアップするデータファイルに高速にアクセスするノードを優先します。たとえば、3ノードのクラスタがあり、node1
がデータファイル7、8および9に対して他のノードより高速に読取りおよび書込みアクセスを行う場合、node1
はnode2
およびnode3
に比べて、これらのファイルに対するノード・アフィニティが高いと言えます。
「RMANを使用したクラスタ・インスタンスへのチャネル接続」の説明に従って自動チャネルを構成した場合、次の例を使用してn
回バックアップしたアーカイブ・ログを削除できます。デバイス・タイプは、DISK
またはSBT
になります。
DELETE ARCHIVELOG ALL BACKED UP n TIMES TO DEVICE TYPE device_type;
少なくとも1つの割り当てられたチャネルからアーカイブ・ログにアクセス可能であれば、削除操作中、RMANはそのチャネル上の特定のログの削除を自動的にスケジュールします。ローカル・アーカイブ・スキームの場合、アーカイブ・ログを削除できる1つ以上のチャネルが割り当てられている必要があります。クラスタ・ファイル・システムのアーカイブ・スキームでは、すべてのノードが同じクラスタ・ファイル・システムのアーカイブ・ログに記録すると仮定して、割り当てられた任意のチャネルからアーカイブ・ログはを削除できます。
自動チャネルを構成していない場合、次のようにメンテナンス・チャネルを手動で割り当てて、アーカイブ・ログを削除できます。
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK CONNECT 'SYS/oracle@node1'; ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK CONNECT 'SYS/oracle@node2'; ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK CONNECT 'SYS/oracle@node3'; DELETE ARCHIVELOG ALL BACKED UP n TIMES TO DEVICE TYPE device_type;
RMANは、バックアップまたはリストアが必要なすべてのファイルのオートロケーションを自動的に実行します。非クラスタ・ファイル・システムのローカル・アーカイブ・スキームを使用している場合、各ノードが読み取ることができるのは、そのノードのインスタンスによって生成されたアーカイブREDOログのみです。RMANは、アーカイブREDOログを読み取れない場合、チャネルでのログのバックアップを試行しません。
リストアの操作時に、RMANはバックアップのオートロケーションを自動的に実行します。ノードにバックアップされたファイルのリストアが試行されるのは、特定のノードに接続されているチャネルのみです。たとえば、ログ順序番号1001はnode1
に連結されているドライブにバックアップされ、ログ1002はnode2
に連結されているドライブにバックアップされるとします。各ノードに接続するチャネルを割り当てる場合、node1
に接続されたチャネルは(ログ1002ではなく)ログ1001をリストアでき、node2
に接続されたチャネルは(ログ1001ではなく)ログ1002をリストアできます。
メディア・リカバリは、クライアント・アプリケーションを介してユーザーが起動する必要がありますが、インスタンス・リカバリは、データベースによって自動的に実行されます。この場合、RMANを使用してデータファイルのバックアップをリストアしてから、データベースをリカバリします。Oracle RAC環境でのRMANのメディア・リカバリ手順は、非クラスタ環境のメディア・リカバリ手順とほぼ同じです。
リカバリを実行するノードは、必要なデータ・ファイルをすべてリストアできることが必要です。また、このノードは、ディスク上の必要なアーカイブREDOログをすべて読み取ることができるか、バックアップしたデータ・ファイルをリストアできることが必要です。
暗号化された表領域を使用してデータベースをリカバリする場合(SHUTDOWN ABORT
またはデータベース・インスタンスをダウンさせた重大なエラーの発生後など)、リカバリ・プロセスでデータ・ブロックおよびREDOを復号できるように、データベースのマウント後、データベースを開く前にOracleウォレットを開く必要があります。
Oracle Databaseでは、インスタンス・リカバリ、クラッシュ・リカバリ、メディア・リカバリの最適な並列度は自動的に選択されます。CPUの可用性に基づいたパラレル・プロセスの最適な数を使用して、アーカイブREDOログが適用されます。次の項目で説明するように、Oracle RACデータベースでは、パラレル・インスタンス・リカバリおよびパラレル・メディア・リカバリを使用できます。
関連項目: 詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |
RMANのRESTORE
およびRECOVER
コマンドを使用すると、次に示す3段階のリカバリ・プロセスが自動的にパラレル化されます。
データ・ファイルのリストア データ・ファイルをリストアする場合、RMANのリカバリ・スクリプトに割り当てられているチャネル数によって、RMANが使用するパラレル化が効果的に設定されます。たとえば、5つのチャネルを割り当てると、最大5つのパラレル・ストリームでデータ・ファイルをリストアできます。
増分バックアップの適用 同様に、増分バックアップを適用する場合、割り当てるチャネル数によって潜在的なパラレル化が決定されます。
アーカイブREDOログの適用 RMANでは、アーカイブREDOログの適用は、パラレルに実行されます。Oracle Databaseでは、使用可能なCPUリソースに基づいて最適な並列度が自動的に選択されます。
次の項目の手順を使用して、パラレル・リカバリを無効にできます。
複数CPUのシステムでパラレル・インスタンス・リカバリおよびパラレル・クラッシュ・リカバリを無効にするには、データベースの初期化パラメータ・ファイル(SPFILE)の RECOVERY_PARALLELISM
パラメータを0
(ゼロ)または1
に設定します。
RMANのRECOVER
コマンドまたはALTER DATABASE RECOVER
文のNOPARALLEL
句を使用すると、Oracle Databaseで強制的に非パラレル・メディア・リカバリが使用されます。
Oracle RACで高速リカバリ領域を使用するには、Oracle ASMディスク・グループ、クラスタ・ファイル・システムまたは各Oracle RACインスタンスのネットワーク・ファイル・システム・ファイルで構成される共有ディレクトリに配置される必要があります。つまり、高速リカバリ領域はOracle RACデータベースのすべてのインスタンス間で共有される必要があります。また、すべてのインスタンスに対してDB_RECOVERY_FILE_DEST
パラメータに同じ値を設定します。
Oracle Enterprise Managerを使用すると、高速リカバリ領域を設定できます。この機能を使用するには、次の手順を実行します。
クラスタ・データベースの「ホーム」ページで、「メンテナンス」タブをクリックします。
「バックアップ/リカバリ」オプション・リストから、「リカバリ設定の構成」をクリックします。
ページの「高速リカバリ領域」セクションで、要件を指定します。
詳細は、このページの「ヘルプ」をクリックしてください。
関連項目: 高速リカバリ領域の設定および構成の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |