Oracle Data Guardは、シングル・インスタンスとOracle Real Application Clusters(Oracle RAC)の複数インスタンス・データベースを自由に組み合せて構成することができます。この章ではOracle Data GuardをOracle RACデータベースと一緒に使用する場合の構成要件と考慮事項をまとめます。この章の内容は、次のとおりです。
スタンバイ・データベースを構成すると、Oracle RACを使用しているプライマリ・データベースを保護できます。次の表では、プライマリ・データベースとスタンバイ・データベースのインスタンスの可能な組合せについて説明します。
インスタンスの組合せ | 単一インスタンス・スタンバイ・データベース | 複数インスタンス・スタンバイ・データベース |
---|---|---|
単一インスタンス・プライマリ・データベース | 可 | 可 |
複数インスタンス・プライマリ・データベース | 可 | 可 |
それぞれの組合せでは、プライマリ・データベースの各インスタンスが、REDOデータをスタンバイ・データベースのインスタンスへ転送します。
図D-1 では、プライマリ・データベース・インスタンスが2つあるOracle RACデータベース(複数インスタンス・プライマリ・データベース)が、単一インスタンス・スタンバイ・データベースへREDOデータを転送しています。
この場合は、プライマリ・データベースのインスタンス1がローカル・アーカイブREDOログ・ファイル1、2、3、4、5にREDOデータをアーカイブし、スタンバイ・データベース宛先にREDOデータを転送するのに対し、インスタンス2がローカル・アーカイブREDOログ・ファイル32、33、34、35、36にREDOデータをアーカイブし、同じスタンバイ・データベース宛先にREDOデータを転送します。スタンバイ・データベースでは、アーカイブREDOログ・ファイルを適用する正しい順序が自動的に判断されます。
Oracle RAC環境でプライマリ・データベースを設定する手順
各プライマリ・インスタンスを構成するには、第3章(フィジカル・スタンバイ・データベース作成の場合)、または第4章(ロジカル・スタンバイ・データベース作成の場合)の説明に従ってください。
単一インスタンス・スタンバイ・データベースを設定する手順
LOG_ARCHIVE_DEST_
n
パラメータおよびLOG_ARCHIVE_FORMAT
パラメータを定義して、アーカイブREDOログ・ファイルおよびスタンバイREDOログ・ファイルの場所を指定するには、第3章(フィジカル・スタンバイ・データベース作成の場合)、または第4章(ロジカル・スタンバイ・データベース作成の場合)の説明に従ってください。
この項では、Oracle RACスタンバイ・データベースにREDOデータを送信するようにOracle RACプライマリ・データベースを構成する方法について説明します。
次の手順を実行して、プライマリ・データベースからREDOデータを受信するようにOracle RACスタンバイ・データベースを構成します。
スタンバイ・データベースで、スタンバイREDOログを作成します。スタンバイREDOログのREDOログ・ファイルは、すべてのスタンバイ・データベース・インスタンスがアクセスできる場所(クラスタ・ファイル・システムやOracle ASMインスタンスなど)に存在する必要があります。スタンバイREDOログの作成の詳細は、6.2.3.1項を参照してください。
スタンバイREDOログ・アーカイブを、各スタンバイ・インスタンス上に構成します。スタンバイREDOログはすべてのスタンバイ・インスタンスがアクセス可能な場所にアーカイブする必要があります。また、各スタンバイ・データベース・インスタンスは、同じ場所にスタンバイREDOログをアーカイブするように構成しておく必要があります。スタンバイREDOログ・アーカイブ構成の詳細は、6.2.3.2項を参照してください。
REDOデータをOracle RACスタンバイ・データベースに送信するように、Oracle RACプライマリ・データベースの各インスタンスを構成します。REDOデータを別のデータベースに送信するようにOracleデータベース・インスタンスを構成する方法は、6.2.2項を参照してください。
REDOデータをOracle RACスタンバイ・データベースに送信するようにOracle RACプライマリ・データベースを構成する際には、次のベスト・プラクティスをお薦めします。
各プライマリ・データベース・インスタンスで同じLOG_ARCHIVE_DEST_n
パラメータを使用して、REDOデータを特定のスタンバイ・データベースに送信する。
特定のスタンバイ・データベースに対応する各LOG_ARCHIVE_DEST_n
パラメータのSERVICE
属性を同じネット・サービス名に設定する。
ネット・サービス名は、アドレス・リストを含むOracle Net接続記述子に解決する必要があり、そのアドレス・リストには、各スタンバイ・データベース・インスタンスの接続データが含まれる必要がある。
この項では、Oracle RAC環境に固有のData Guard構成情報を示します。この付録には、次の項があります。
アーカイブREDOログ・ファイル名は、log_%parameterの形式になります。%parameterには、表D-1のパラメータを1つ以上含めることができます。
表D-1 LOG_ARCHIVE_FORMAT初期化パラメータのディレクティブ
ディレクティブ | 説明 |
---|---|
|
データベース・アクティブID |
|
0(ゼロ)を埋め込んだデータベース・アクティブID |
|
データベースID |
|
0(ゼロ)を埋め込んだデータベースID |
|
インスタンス・スレッド番号 |
|
0(ゼロ)を埋め込んだインスタンス・スレッド番号 |
|
ログ・ファイル順序番号 |
|
0(ゼロ)を埋め込んだログ・ファイル順序番号 |
|
リセットログID |
|
0(ゼロ)を埋め込んだリセットログID |
次に例を示します。
LOG_ARCHIVE_FORMAT = log%d_%t_%s_%r.arc
Oracle RACが、LOG_ARCHIVE_FORMAT
パラメータでアーカイブREDOログ・ファイルを一意に識別するためには、スレッド・パラメータ%tまたは%Tが必須です。
Oracle RACプライマリ・データベースのいずれかのインスタンスでスタンバイ・データベースとの接続性が失われた場合、他のすべてのプライマリ・データベース・インスタンスでは、LOG_ARCHIVE_DEST_
n
REOPEN
属性で指定された秒数の間、スタンバイ・データベースへのREDO送信を停止し、その後すべてのプライマリ・データベース・インスタンスでスタンバイ・データベースへの再接続が試みられます。
次に、Oracle RAC環境における保護モードの動作を説明します。
この項では、スイッチオーバーについて説明します。
Oracle RACデータベースの場合は、ターゲット・データベースがフィジカル・スタンバイであるスイッチオーバー時にアクティブにできるのは、1つのプライマリ・インスタンスのみです。したがって、フィジカル・スタンバイ・データベースへのスイッチオーバーの前に、1つのプライマリ・インスタンス以外はすべて停止します。スイッチオーバーの完了後、スイッチオーバーの実行時に停止したインスタンスを再起動します。ロジカル・スタンバイ・データベースへのスイッチオーバーを実行する場合には、この制限は適用されません。
注意: SQLALTER DATABASE 文を使用してスイッチオーバーを実行すると、REDOログ・ファイルが存在していない場合は自動的に作成されます。これによって、COMMIT 操作の完了に必要な時間が大幅に長くなる場合があるため、フィジカル・スタンバイ・データベースを作成するときは、REDOログ・ファイルを手動で追加することをお薦めします。 |
この項は、Oracle RACで発生する問題のトラブルシューティングのヘルプとして利用できます。
データベースでOracle RACを使用すると、アクティブ・インスタンスによってスイッチオーバーの実行が妨げられます。他のインスタンスがアクティブの場合は、スイッチオーバーの試行が次のエラー・メッセージを伴って失敗します。
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY; ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY * ORA-01105: mount is incompatible with mounts by other instances
処置: 次のようにGV$INSTANCE
ビューを問い合せ、問題の原因となっているインスタンスを判断します。
SQL> SELECT INSTANCE_NAME, HOST_NAME FROM GV$INSTANCE - > WHERE INST_ID <> (SELECT INSTANCE_NUMBER FROM V$INSTANCE); INSTANCE_NAME HOST_NAME ------------- --------- INST2 standby2
上記の例では、識別したインスタンスを手動でシャットダウンしなければ、スイッチオーバーに進むことができません。自身のインスタンスから識別したインスタンスに接続し、たとえば次のようにSHUTDOWN
文を発行することができます。
SQL> CONNECT SYS@standby2 AS SYSDBA Enter Password: SQL> SHUTDOWN; SQL> EXIT