サーバーがフェイルオーバーしたり、Oracleデータベースに障害が発生したりすると、ユーザーは深刻な影響を受けてしまいます。通常は、データベースへの接続が切断されるだけでなく、作業中のデータもほとんど失われます。フェイルオーバーが完了(またはOracleデータベースが回復)すると、クライアントはアプリケーションを再起動してデータベースに再接続する必要があります。Oracleの透過的アプリケーションフェイルオーバー(TAF)機能を使用すると、障害によってはそれにマスクをかけて、その影響を減らしたりなくしたりすることができます。LifeKeeper環境でTAFを設定する際には、LifeKeeperサーバー側で行う作業とOracleクライアント側で行う作業があります。
このTAF機能の効果的な利用をお考えの場合は、クライアントアプリケーションでOracle Call Interface (OCI)からAPIを呼び出す際に、フェイルオーバーを意識した呼び出しを行う必要があります。また、tnsnames.oraファイルにOracle Netのパラメーターを指定して、適切なTAFの設定を行う必要があります。TAFモードは、tnsnames.oraのCONNECT_DATAセクションにFAILOVER_MODEパラメーターを指定して設定します。TAFのメカニズムでは、フェイルオーバー時のクライアント接続の動作を制御するいくつかのサブパラメーターを利用できます。LifeKeeper for Linux Oracle Recovery Kit では、TAF 設定時に以下のサブパラメーターを指定できます。
TYPE= (SELECT または SESSION)
クライアント接続をTAFでどのようにフェイルオーバーするかを指定します。 SELECT を指定するとOracleは、移行中に発行されたすべてのselectステートメントを記録します。新しい接続が確立されるとすべてのselectステートメントが再実行され、カーソルを元の位置に配置してクライアントが行のフェッチを継続できるようにします。SESSIONを指定すると接続のみが新規に作成され、作業中のデータは失われます。
METHOD= (BASIC)。
このメソッドを指定するとTAFは、一次接続が失敗したときのみ再接続を試みます。他にPRECONNECTメソッドがありますが、LifeKeeperでは現在のところ PRECONNECT メソッドは使用できません。
DELAY=(秒数)
障害発生後、TAFが再接続を試みる間隔を秒数で指定します。クライアントアプリケーションや環境に合った値を指定する必要があります。
RETRIES=(試行回数)
障害発生後、TAFが再接続を試みる回数を指定します。 DELAY と RETRIES を組み合わせて使用する際には、サーバーで障害が発生したときにOracleが完全に回復できる、十分な時間を設定する必要があります。そうすることでTAFは、サーバーのフェイルオーバーの完了後、十分に時間的余裕を持って再起動できるようになります。
以下は、クライアントシステム用サンプルtnsnames.oraファイルからの抜粋です。
LKproDB=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL=TCP) (HOST=<switchableIP>) (PORT=<port number>))
)
(CONNECT_DATA=
(SID=LKroDB)
(SERVER=DEDICATED)
(FAILOVER_MODE=
(TYPE=SELECT)
(METHOD=BASIC)
(DELAY=5)
(RETRIES=30)
)
)
)
通常の tnsnames.oraの場所は $ORACLE_HOME/network/admin になります。最も一般的なポート番号は1521です。 tnsnames.oraファイルはユーザのホームディレクトリにも同様に配置されます。 $ORACLE_HOME ディレクトリが非共有ストレージ上にインストールされている場合は、listener.ora および tnsnames.ora のコピーが両システム上に必要になるので注意してください。
Oracleデータベースを保護しているLifeKeeperサーバーでは、LifeKeeperによって保護されている切り替え可能なIPアドレスを使用してリスナーを設定する必要があります。Oracle Netとリスナーの設定の詳細については、前述の 「LifeKeeper保護用のOracle Net Listenerの設定」 セクションを参照してください。



このトピックへフィードバック