8 バックアップおよびリカバリの管理
Recovery Manager (RMAN)を使用してOracle Real Application Clusters (Oracle RAC)データベースをバックアップおよびリストアする方法と、Oracle RACインスタンスのリカバリ、パラレル・バックアップ、SQL*PlusによるリカバリおよびOracle RACの高速リカバリ領域の使用方法について説明します。
注意:
マルチテナント・コンテナ・データベースは、Oracle Database 20cで唯一サポートされているアーキテクチャです。ドキュメントが改訂されている間は、従来の用語が残っている可能性があります。ほとんどの場合、"データベース"と"非CDB"は、文脈に応じてCDBまたはPDBを指しています。アップグレードなどでは、"非CDB"が以前のリリースの非CDBを指している場合もあります。
- クラスタでのバックアップおよびリカバリの管理
クラスタでは、クラスタ内の任意のノードでアーカイブREDOログ・ファイルをリストアできます。 - 非クラスタ・ファイル・システム・バックアップでのRMANのバックアップ機能の使用例
非クラスタ・ファイル・システム・バックアップでのRMANの使用について説明します。 - Oracle RACでのRMANのリストア機能の使用例
Oracle RACでのRMANのリストア機能の使用例について説明します。 - Oracle RACでのインスタンス・リカバリ
Oracle RACでのインスタンス・リカバリについて説明します。 - Oracle RACでのメディア・リカバリ
Oracle RACでのメディア・リカバリについて説明します。 - Oracle RACでのパラレル・リカバリ
Oracle Databaseでは、インスタンス・リカバリ、クラッシュ・リカバリ、メディア・リカバリの最適な並列度は自動的に選択されます。 - Oracle RACでの高速リカバリ領域の使用
Oracle RACで高速リカバリ領域を使用するには、Oracle ASMディスク・グループ、クラスタ・ファイル・システムまたは各Oracle RACインスタンスのネットワーク・ファイル・システム・ファイルで構成される共有ディレクトリにリカバリ領域を配置します。
8.1 クラスタでのバックアップおよびリカバリの管理
クラスタでは、クラスタ内の任意のノードでアーカイブREDOログ・ファイルをリストアできます。
Oracle Real Application Clusters (Oracle RAC)データベース環境でのリストアおよびリカバリでは、リカバリを実行するインスタンスを、すべてのデータ・ファイルをリストアする唯一のインスタンスにもなるように構成する必要はありません。Oracle RACでは、クラスタのすべてのノードからデータ・ファイルにアクセスできるため、すべてのノードでアーカイブREDOログ・ファイルをリストアできます。
親トピック: バックアップおよびリカバリの管理
8.2 非クラスタ・ファイル・システム・バックアップでのRMANのバックアップ機能の使用例
非クラスタ・ファイル・システム・バックアップでのRMANの使用について説明します。
非クラスタ・ファイル・システム環境では、各ノードはローカルにマウントされる非クラスタ・ファイル・システムのディレクトリにのみバックアップできます。たとえば、リモート・アクセスに対応するようにネットワーク・ファイル・システムを構成しないかぎり、node1
は、node2
またはnode3
のアーカイブREDOログ・ファイルへはアクセスできません。バックアップに対応するようにネットワーク・ファイル・システム・ファイルを構成した場合、各ノードはアーカイブREDOログをローカル・ディレクトリにバックアップします。
親トピック: バックアップおよびリカバリの管理
8.3 Oracle RACでのRMANのリストア機能の使用例
Oracle RACでのRMANのリストア機能の使用例について説明します。
- クラスタ・ファイル・システムからのバックアップのリストア
クラスタ・ファイル・システムからバックアップをリストアする方法について説明します。 - 非クラスタ・ファイル・システムからのバックアップのリストア
非クラスタ・ファイル・システムからバックアップをリストアする方法について説明します。 - RMANまたはOracle Enterprise Managerを使用したサーバー・パラメータ・ファイル(SPFILE)のリストア
SPFILEは、RMANまたはOracle Enterprise Managerを使用してリストアできます。
親トピック: バックアップおよびリカバリの管理
8.3.1 クラスタ・ファイル・システムからのバックアップのリストア
クラスタ・ファイル・システムからバックアップをリストアする方法について説明します。
この項で説明するスキームでは、「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'
...
}
8.3.2 非クラスタ・ファイル・システムからのバックアップのリストア
非クラスタ・ファイル・システムからバックアップをリストアする方法について説明します。
この項で説明するスキームでは、「非クラスタ・ファイル・システムのローカル・アーカイブ・スキーム」が使用されていると仮定します。このスキームでは、各ノードが異なるディレクトリにローカルでアーカイブします。たとえば、node1
は/arc_dest_1
に、node2
は/arc_dest_2
に、node3
は/arc_dest_3
にアーカイブします。リカバリ・ノードが残りのノードでアーカイブ・ディレクトリを読み取ることができるように、ネットワーク・ファイル・システム・ファイルを構成する必要があります。
すべてのノードが使用可能で、すべてのアーカイブREDOログがバックアップされている場合は、データベースをマウントして任意のノードで次のコマンドを実行することで、完全なリストアおよびリカバリを実行できます。
RESTORE DATABASE;
RECOVER DATABASE;
ネットワーク・ファイル・システム構成では、各ノードにその他のノードのREDOログ・ファイルに対する読取りアクセス権があるため、リカバリ・ノードは、ローカルおよびリモート・ディスクにあるアーカイブREDOログの読取りおよび適用が可能です。手動によるアーカイブREDOログの転送は不要です。
8.3.3 RMANまたはOracle Enterprise Managerを使用したサーバー・パラメータ・ファイル(SPFILE)のリストア
SPFILEは、RMANまたはOracle Enterprise Managerを使用してリストアできます。
RMANでは、サーバー・パラメータ・ファイルをデフォルト位置または指定された位置にリストアできます。
Oracle Enterprise Managerを使用して、SPFILEをリストアすることもできます。「メンテナンス」タブの「バックアップ/リカバリ」セクションで、「リカバリの実行」をクリックします。「リカバリの実行」リンクは状況依存のリンクであり、データベースがクローズしている場合にのみ、SPFILEのリストアにナビゲートされます。
親トピック: Oracle RACでのRMANのリストア機能の使用例
8.4 Oracle RACでのインスタンス・リカバリ
Oracle RACでのインスタンス・リカバリについて説明します。
インスタンス障害は、ソフトウェアまたはハードウェアの問題によってインスタンスが無効になった場合に発生します。インスタンス障害の後、Oracle DatabaseはオンラインREDOログ・ファイルを使用して、次の各項で説明するデータベース・リカバリを自動的に実行します。
- Oracle RACでの単一ノード障害
Oracle RACでの単一ノード障害について説明します。 - Oracle RACでの複数ノード障害
Oracle RACでマルチノード障害を管理する方法について説明します。 - Oracle RACでのRMANを使用したバックアップの作成
Oracle Databaseには、データベースのバックアップおよびリストアを行うRMANがあります。 - RMANを使用したクラスタ・インスタンスへのチャネル接続
クラスタ・インスタンスへのチャネル接続にRMANを使用する方法について説明します。 - 高速接続のノード・アフィニティの認識
高速接続のノード・アフィニティの認識について説明します。 - バックアップ完了後のアーカイブREDOログの削除
バックアップ後にアーカイブREDOログを削除する方法について説明します。 - バックアップ・コマンドとリストア・コマンドのオートロケーション
バックアップ・コマンドおよびリストア・コマンドのオートロケーションついて説明します。
親トピック: バックアップおよびリカバリの管理
8.4.1 Oracle RACでの単一ノード障害
Oracle RACでの単一ノード障害について説明します。
Oracle RACでのインスタンス・リカバリでは、障害が発生したインスタンス上で実行していたアプリケーションのリカバリは実行されません。Oracle Clusterwareがインスタンスを自動的に再起動します。
障害発生前にノードで実行中のアプリケーションは、障害の認識とリカバリの機能を使用して実行を継続します。これによって、ハードウェアまたはソフトウェアに障害が発生しても、一貫性のある連続的なサービスが提供されます。あるインスタンスが別のインスタンスのリカバリを実行する場合、障害が発生しなかったインスタンスは、障害が発生しているインスタンスによって生成されたオンラインREDOログ・エントリを読み取り、その情報を使用して、コミットされたすべてのトランザクションがデータベースに記録されるようにします。したがって、コミットされたトランザクションのデータが失われることはありません。リカバリを実行中のインスタンスは、障害発生時にアクティブだったトランザクションをロールバックし、それらのトランザクションによって使用されたリソースを解放します。
注意:
すべてのオンラインREDOログは、インスタンスのリカバリのためにアクセスできる必要があります。オンラインREDOログをミラー化することをお薦めします。
親トピック: Oracle RACでのインスタンス・リカバリ
8.4.2 Oracle RACでの複数ノード障害
Oracle RACでマルチノード障害を管理する方法について説明します。
障害が発生した場合、正常に稼働しているインスタンスが1つでもあれば、Oracle RACは、障害が発生した他のすべてのインスタンスに対してインスタンス・リカバリを実行します。Oracle RACデータベースのすべてのインスタンスに障害が発生した場合、Oracle Databaseは、次のインスタンスがデータベースをオープンするときにリカバリを自動的に実行します。リカバリを実行するインスタンスは、Oracle RACデータベースのどのノードからでも、クラスタ・データベースまたは排他モードでデータベースをマウントできます。このリカバリ手順は、1つのインスタンスが、障害が発生したすべてのインスタンスのリカバリを実行するという点以外は、共有モードで実行しているOracle Databaseでも、排他モードで実行しているOracle Databaseでも同じです。
親トピック: Oracle RACでのインスタンス・リカバリ
8.4.3 Oracle RACでのRMANを使用したバックアップの作成
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環境の場合とほぼ同じです。
8.4.4 RMANを使用したクラスタ・インスタンスへのチャネル接続
クラスタ・インスタンスへのチャネル接続にRMANを使用する方法について説明します。
インスタンスへのチャネル接続は、チャネル構成で定義された接続文字列を使用して判別されます。たとえば、次の構成では、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バックアップおよびリカバリ・リファレンス』を参照してください。
親トピック: Oracle RACでのインスタンス・リカバリ
8.4.5 高速接続のノード・アフィニティの認識
高速接続のノード・アフィニティの認識について説明します。
一部のクラスタ・データベース構成では、クラスタの一部のノードは、他のデータファイルに対するアクセスよりもより高速に特定のデータファイルにアクセスします。RMANはこの状況を自動的に検出し、これはノード・アフィニティの認識と呼ばれます。特定のデータファイルのバックアップに使用するチャネルを決定する際に、RMANは、バックアップするデータファイルに高速にアクセスするノードを優先します。たとえば、3ノードのクラスタがあり、node1
がデータファイル7、8および9に対して他のノードより高速に読取りおよび書込みアクセスを行う場合、node1
はnode2
およびnode3
に比べて、これらのファイルに対するノード・アフィニティが高いと言えます。
親トピック: Oracle RACでのインスタンス・リカバリ
8.4.6 バックアップ完了後のアーカイブREDOログの削除
バックアップ後にアーカイブREDOログを削除する方法について説明します。
「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;
親トピック: Oracle RACでのインスタンス・リカバリ
8.4.7 バックアップ・コマンドとリストア・コマンドのオートロケーション
バックアップ・コマンドおよびリストア・コマンドのオートロケーションついて説明します。
RMANは、バックアップまたはリストアが必要なすべてのファイルのオートロケーションを自動的に実行します。非クラスタ・ファイル・システムのローカル・アーカイブ・スキームを使用している場合、各ノードが読み取ることができるのは、そのノードのインスタンスによって生成されたアーカイブREDOログのみです。RMANは、アーカイブREDOログを読み取れない場合、チャネルでのログのバックアップを試行しません。
リストアの操作時に、RMANはバックアップのオートロケーションを自動的に実行します。ノードにバックアップされたファイルのリストアが試行されるのは、特定のノードに接続されているチャネルのみです。たとえば、ログ順序番号1001はnode1
に連結されているドライブにバックアップされ、ログ1002はnode2
に連結されているドライブにバックアップされるとします。各ノードに接続するチャネルを割り当てる場合、node1
に接続されたチャネルは(ログ1002ではなく)ログ1001をリストアでき、node2
に接続されたチャネルは(ログ1001ではなく)ログ1002をリストアできます。
親トピック: Oracle RACでのインスタンス・リカバリ
8.5 Oracle RACでのメディア・リカバリ
Oracle RACでのメディア・リカバリについて説明します。
メディア・リカバリは、クライアント・アプリケーションを介してユーザーが起動する必要がありますが、インスタンス・リカバリは、データベースによって自動的に実行されます。この場合、RMANを使用してデータファイルのバックアップをリストアしてから、データベースをリカバリします。Oracle RAC環境でのRMANのメディア・リカバリ手順は、非クラスタ環境のメディア・リカバリ手順とほぼ同じです。
リカバリを実行するノードは、必要なデータ・ファイルをすべてリストアできることが必要です。また、このノードは、ディスク上の必要なアーカイブREDOログをすべて読み取ることができるか、バックアップしたデータ・ファイルをリストアできることが必要です。
暗号化された表領域を使用してデータベースをリカバリする場合(SHUTDOWN ABORT
またはデータベース・インスタンスをダウンさせた重大なエラーの発生後など)、リカバリ・プロセスでデータ・ブロックおよびREDOを復号できるように、データベースのマウント後、データベースを開く前にOracleウォレットを開く必要があります。
親トピック: バックアップおよびリカバリの管理
8.6 Oracle RACでのパラレル・リカバリ
Oracle Databaseでは、インスタンス・リカバリ、クラッシュ・リカバリ、メディア・リカバリの最適な並列度は自動的に選択されます。
CPUの可用性に基づいたパラレル・プロセスの最適な数を使用して、アーカイブREDOログが適用されます。次の項目で説明するように、Oracle RACデータベースでは、パラレル・インスタンス・リカバリおよびパラレル・メディア・リカバリを使用できます。
- RMANを使用したパラレル・リカバリ
RMANによるパラレル・リカバリの使用方法について説明します。 - パラレル・リカバリの無効化
パラレル・リカバリを無効にする方法について説明します。
親トピック: バックアップおよびリカバリの管理
8.6.1 RMANを使用したパラレル・リカバリ
RMANによるパラレル・リカバリの使用方法について説明します。
RMANのRESTORE
およびRECOVER
コマンドを使用すると、次に示す3段階のリカバリ・プロセスが自動的にパラレル化されます。
データ・ファイルのリストア
データ・ファイルをリストアする場合、RMANのリカバリ・スクリプトに割り当てられているチャネル数によって、RMANが使用するパラレル化が効果的に設定されます。たとえば、5つのチャネルを割り当てると、最大5つのパラレル・ストリームでデータ・ファイルをリストアできます。
増分バックアップの適用
同様に、増分バックアップを適用する場合、割り当てるチャネル数によって潜在的なパラレル化が決定されます。
アーカイブREDOログの適用
RMANでは、アーカイブREDOログの適用はパラレルに実行されます。Oracle Databaseでは、使用可能なCPUリソースに基づいて最適な並列度が自動的に選択されます。
親トピック: Oracle RACでのパラレル・リカバリ
8.6.2 パラレル・リカバリの無効化
パラレル・リカバリを無効にする方法について説明します。
次の項目の手順を使用して、パラレル・リカバリを無効にできます。
- パラレル・インスタンス・リカバリおよびパラレル・クラッシュ・リカバリの無効化
パラレル・インスタンス・リカバリおよびパラレル・クラッシュ・リカバリを無効にする方法について説明します。 - パラレル・メディア・リカバリの無効化
パラレル・メディア・リカバリを無効にする方法について説明します。
親トピック: Oracle RACでのパラレル・リカバリ
8.6.2.1 パラレル・インスタンス・リカバリおよびパラレル・クラッシュ・リカバリの無効化
パラレル・インスタンス・リカバリおよびパラレル・クラッシュ・リカバリを無効にする方法について説明します。
複数CPUのシステムでパラレル・インスタンス・リカバリおよびパラレル・クラッシュ・リカバリを無効にするには、データベースの初期化パラメータ・ファイル(SPFILE)の RECOVERY_PARALLELISM
パラメータを0
(ゼロ)または1
に設定します。
親トピック: パラレル・リカバリの無効化
8.6.2.2 パラレル・メディア・リカバリの無効化
パラレル・メディア・リカバリを無効にする方法について説明します。
RMANのRECOVER
コマンドまたはALTER DATABASE RECOVER
文のNOPARALLEL
句を使用すると、Oracle Databaseで強制的に非パラレル・メディア・リカバリが使用されます。
親トピック: パラレル・リカバリの無効化
8.7 Oracle RACでの高速リカバリ領域の使用
Oracle RACで高速リカバリ領域を使用するには、Oracle ASMディスク・グループ、クラスタ・ファイル・システムまたは各Oracle RACインスタンスのネットワーク・ファイル・システム・ファイルで構成される共有ディレクトリにリカバリ領域を配置します。
つまり、高速リカバリ領域はOracle RACデータベースのすべてのインスタンス間で共有される必要があります。また、すべてのインスタンスに対してDB_RECOVERY_FILE_DEST
パラメータに同じ値を設定します。
Oracle Enterprise Managerを使用すると、高速リカバリ領域を設定できます。この機能を使用するには、次の手順を実行します。
-
クラスタ・データベースの「ホーム」ページで、「メンテナンス」タブをクリックします。
-
「バックアップ/リカバリ」オプション・リストから、「リカバリ設定の構成」をクリックします。
-
ページの「高速リカバリ領域」セクションで、要件を指定します。
-
詳細は、このページの「ui」をクリックします。