ヘッダーをスキップ
Oracle® Data Guard概要および管理
11gリリース2 (11.2)
B56302-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

D Data GuardおよびOracle Real Application Clusters

Oracle Data Guardは、シングル・インスタンスとOracle Real Application Clusters(Oracle RAC)の複数インスタンス・データベースを自由に組み合せて構成することができます。この章ではOracle Data GuardをOracle RACデータベースと一緒に使用する場合の構成要件と考慮事項をまとめます。この章の内容は、次のとおりです。

D.1 Oracle RAC環境でのスタンバイ・データベースの構成

スタンバイ・データベースを構成すると、Oracle RACを使用しているプライマリ・データベースを保護できます。次の表では、プライマリ・データベースとスタンバイ・データベースのインスタンスの可能な組合せについて説明します。

インスタンスの組合せ 単一インスタンス・スタンバイ・データベース 複数インスタンス・スタンバイ・データベース
単一インスタンス・プライマリ・データベース
複数インスタンス・プライマリ・データベース

それぞれの組合せでは、プライマリ・データベースの各インスタンスが、REDOデータをスタンバイ・データベースのインスタンスへ転送します。

D.1.1 複数インスタンス・プライマリ・データベースと単一インスタンス・スタンバイ・データベースの設定

図D-1 では、プライマリ・データベース・インスタンスが2つあるOracle RACデータベース(複数インスタンス・プライマリ・データベース)が、単一インスタンス・スタンバイ・データベースへREDOデータを転送しています。

図D-1 複数インスタンス・プライマリ・データベースからのREDOデータの転送

図D-1の説明
「図D-1 複数インスタンス・プライマリ・データベースからの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章(ロジカル・スタンバイ・データベース作成の場合)の説明に従ってください。

D.1.2 Oracle RACプライマリおよびスタンバイ・データベースの設定

この項では、Oracle RACスタンバイ・データベースにREDOデータを送信するようにOracle RACプライマリ・データベースを構成する方法について説明します。

D.1.2.1 REDOデータを受信するためのOracle RACスタンバイ・データベースの構成

次の手順を実行して、プライマリ・データベースからREDOデータを受信するようにOracle RACスタンバイ・データベースを構成します。

  1. スタンバイ・データベースで、スタンバイREDOログを作成します。スタンバイREDOログのREDOログ・ファイルは、すべてのスタンバイ・データベース・インスタンスがアクセスできる場所(クラスタ・ファイル・システムやOracle ASMインスタンスなど)に存在する必要があります。スタンバイREDOログの作成の詳細は、6.2.3.1項を参照してください。

  2. スタンバイREDOログ・アーカイブを、各スタンバイ・インスタンス上に構成します。スタンバイREDOログはすべてのスタンバイ・インスタンスがアクセス可能な場所にアーカイブする必要があります。また、各スタンバイ・データベース・インスタンスは、同じ場所にスタンバイREDOログをアーカイブするように構成しておく必要があります。スタンバイREDOログ・アーカイブ構成の詳細は、6.2.3.2項を参照してください。

D.1.2.2 REDOデータを送信するためのOracle RACプライマリ・データベースの構成

REDOデータをOracle RACスタンバイ・データベースに送信するように、Oracle RACプライマリ・データベースの各インスタンスを構成します。REDOデータを別のデータベースに送信するようにOracleデータベース・インスタンスを構成する方法は、6.2.2項を参照してください。

REDOデータをOracle RACスタンバイ・データベースに送信するようにOracle RACプライマリ・データベースを構成する際には、次のベスト・プラクティスをお薦めします。

  1. 各プライマリ・データベース・インスタンスで同じLOG_ARCHIVE_DEST_nパラメータを使用して、REDOデータを特定のスタンバイ・データベースに送信する。

  2. 特定のスタンバイ・データベースに対応する各LOG_ARCHIVE_DEST_nパラメータのSERVICE属性を同じネット・サービス名に設定する。

  3. ネット・サービス名は、アドレス・リストを含むOracle Net接続記述子に解決する必要があり、そのアドレス・リストには、各スタンバイ・データベース・インスタンスの接続データが含まれる必要がある。

D.2 Oracle RAC環境での構成に関する考慮事項

この項では、Oracle RAC環境に固有のData Guard構成情報を示します。この付録には、次の項があります。

D.2.1 アーカイブREDOログ・ファイル名の形式

アーカイブREDOログ・ファイル名は、log_%parameterの形式になります。%parameterには、表D-1のパラメータを1つ以上含めることができます。

表D-1 LOG_ARCHIVE_FORMAT初期化パラメータのディレクティブ

ディレクティブ 説明

%a

データベース・アクティブID

%A

0(ゼロ)を埋め込んだデータベース・アクティブID

%d

データベースID

%D

0(ゼロ)を埋め込んだデータベースID

%t

インスタンス・スレッド番号

%T

0(ゼロ)を埋め込んだインスタンス・スレッド番号

%s

ログ・ファイル順序番号

%S

0(ゼロ)を埋め込んだログ・ファイル順序番号

%r

リセットログID

%R

0(ゼロ)を埋め込んだリセットログID


次に例を示します。

LOG_ARCHIVE_FORMAT = log%d_%t_%s_%r.arc

Oracle RACが、LOG_ARCHIVE_FORMATパラメータでアーカイブREDOログ・ファイルを一意に識別するためには、スレッド・パラメータ%tまたは%Tが必須です。

D.2.2 データ保護モード

Oracle RACプライマリ・データベースのいずれかのインスタンスでスタンバイ・データベースとの接続性が失われた場合、他のすべてのプライマリ・データベース・インスタンスでは、LOG_ARCHIVE_DEST_n REOPEN属性で指定された秒数の間、スタンバイ・データベースへのREDO送信を停止し、その後すべてのプライマリ・データベース・インスタンスでスタンバイ・データベースへの再接続が試みられます。

次に、Oracle RAC環境における保護モードの動作を説明します。

  • 最大保護の構成

    接続を失った宛先が最後のSYNC宛先の場合、インスタンスは接続を失い、停止します。Oracle RAC構成内でスタンバイ宛先への接続を維持しているインスタンスは、接続を失ったインスタンスをリカバリし、スタンバイ宛先への送信を継続します。Oracle RAC構成内のすべてのインスタンスが最後のスタンバイ宛先への接続を失った場合にのみ、プライマリ・データベースが停止します。

D.2.3 ロールの推移

この項では、スイッチオーバーについて説明します。

D.2.3.1 スイッチオーバー

Oracle RACデータベースの場合は、ターゲット・データベースがフィジカル・スタンバイであるスイッチオーバー時にアクティブにできるのは、1つのプライマリ・インスタンスのみです。したがって、フィジカル・スタンバイ・データベースへのスイッチオーバーの前に、1つのプライマリ・インスタンス以外はすべて停止します。スイッチオーバーの完了後、スイッチオーバーの実行時に停止したインスタンスを再起動します。ロジカル・スタンバイ・データベースへのスイッチオーバーを実行する場合には、この制限は適用されません。


注意:

SQL ALTER DATABASE文を使用してスイッチオーバーを実行すると、REDOログ・ファイルが存在していない場合は自動的に作成されます。これによって、COMMIT操作の完了に必要な時間が大幅に長くなる場合があるため、フィジカル・スタンバイ・データベースを作成するときは、REDOログ・ファイルを手動で追加することをお薦めします。

D.3 トラブルシューティング

この項は、Oracle RACで発生する問題のトラブルシューティングのヘルプとして利用できます。

D.3.1 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