サーバがフェイルオーバしたり、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 が再接続を試みる回数を指定します。 DELAYRETRIES を組み合わせて使用する際には、サーバで障害が発生したときに 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 の設定」 セクションを参照してください。

フィードバック

フィードバックありがとうございました

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

送信