Java CAPS ビジネスプロセスの構成

透過的アプリケーションフェイルオーバーの実装

Oracle RAC は、クラスタテクノロジを使用して共有データベースにアクセスする 2 つ以上のインスタンスを持つ Oracle データベースです。クラスタとは、同じタスクを実行するために連携して動作するマシン (またはノード) のグループのことです。このアーキテクチャーをサポートするために、データベースインスタンスをホストする 2 台以上のマシンが高速インターコネクトでリンクされて、クラスタが形成されます。インターコネクトは、クラスタの各ノード間の通信手段として使用される物理ネットワークです。

Oracle RAC をインストールしたあと、もっとも高いレベルの可用性を保証するために、透過的アプリケーションフェイルオーバー (TAF) 機能を設定することができます。TAF によって、すべてのレベルの可用性階層が補完されます。アプリケーションとユーザーは自動的かつ透過的に別のシステムに再接続され、アプリケーションとクエリーは中断なく続行され、さらにログインコンテキストは保持されます。Oracle Net Service を設定して、障害が発生した場合に RAC の各データベースインスタンス上のリスナーをフェイルオーバーできます。


注 –

TAF 機能をテストするための Oracle RAC/OPS システムの設定は、このマニュアルの範囲を超えています。tnsnames.ora および listener.ora ファイル内の設定を使用して Oracle RAC/OPS サーバーを設定する方法については、DBA に問い合わせてください。


OCI ドライバは、BPM エンジンとの組み合わせでのみ機能します。ワークリストマネージャーは、DataDirect ドライバのみを使用します。

Procedure透過的アプリケーションフェイルオーバーを実装するには

  1. 同じデータストレージを共有する複数のホストまたはインスタンスを使用して Oracle RAC サーバーを設定します。

    OCI ドライバを使用している場合に、TAF 機能を有効にするように tnsnames.ora を設定する方法については、「開始する前に」を参照してください。

  2. 論理ホストを実行しているマシン上に Oracle クライアントがインストールされていない場合は、インストールします。

    OCI が機能するためには、Oracle クライアントをインストールする必要があります。OCI ドライバはネイティブな C 呼び出しに基づいてデータベースへの接続を確立するため、BPM にパッケージされているものと同じバージョンの Oracle クライアントをインストールする必要があります。OCI のバージョンが競合すると、BPM での OCI ドライバの設定で問題が発生することがあります。

  3. TAF 用に tnsnames.ora ファイルを設定します。

    透過的アプリケーションフェイルオーバー (TAF) 用に設定された tnsnames.ora ファイルの例を次に示します。

    オプション 1: 接続時間フェイルオーバーおよび TAF


    MY_CLUSTER =
      (DESCRIPTION =
        (FAILOVER = ON)
        (LOAD_BALANCE = OFF)
        (ADDRESS_LIST =    
          (ADDRESS = (PROTOCOL = TCP)(HOST = Node1)(PORT = 1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = Node2)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = my_cluster.my_company.com)
          (FAILOVER_MODE =
            (TYPE = SELECT)
            (METHOD = PRECONNECT)
            (BACKUP=Node2)
          )
        )
      )

    オプション 2: TAF 設定


    MY_CLUSTER =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = Node1)(PORT = 1521))
        (CONNECT_DATA =
          (SERVICE_NAME = my_cluster.my_company.com)
          (FAILOVER_MODE =
            (TYPE = SELECT)
            (METHOD = PRECONNECT)
             (BACKUP = Node2)
           )
        )
      )

    この設定では、MY_CLUSTER が、クラスタとして機能するように設定された 2 つのノードを認識しています。このクラスタを、RAC/OPS で同じディスクを共有するように設定してください。

    オプション 1 では、FAILOVER が ON に、LOADBALANCE が OFF に設定されています。これは、接続時間フェイルオーバー用の設定です。接続時間フェイルオーバーでは、OCI ドライバが Node1 に接続を試みてそのノードがダウンしていると判断すると、アドレスリスト内のほかのホスト (Node2) に接続します。オプション 2 は、単に、OCI クライアントでの TAF 機能のみの設定を示すために掲載されています。BPM では、接続時間フェイルオーバーと TAF 設定の両方が必要です。

    TAF オプションを設定するには、tnsnames.ora ファイルに Oracle Net パラメータを追加するとともに、参加しているいずれかのノードに障害が発生した場合のフェイルオーバープロセス内の次のステップを確認するためにパラメータ値を使用する必要があります。TAF オプションを起動するパラメータは、接続記述子の CONNECT_DATA セクションの下にある FAILOVER_MODE です。次のパラメータを 1 つ以上使用することによって、TAF のフル機能を実現できます。

    パラメータ

    説明 

    BACKUP 

    バックアップ接続を確立するために使用される別の Net Service 名を指定します。PRECONNECT を使用して事前に接続を確立する場合は、バックアップを指定するようにしてください。BASIC の方法には、BACKUP を指定することを強くお勧めします。そうしないと、失敗したばかりのインスタンスが再接続で最初に試みられ、クライアントが再接続するまで追加遅延が発生する可能性があります。 

    TYPE 

    フェイルオーバーのタイプを指定します。Oracle Call Interface では、デフォルトで 3 つのタイプの Oracle Net フェイルオーバー機能が使用できます。 

    • SESSION - セッションをフェイルオーバーします。このオプションでは、接続が確立されるのみで、進行中の作業は失敗したインスタンスから使用可能なインスタンスに転送されません。

    • SELECT - オープンカーソルを持つユーザーが、障害が発生したあともそれらのカーソルで引き続きフェッチできるようにします。Oracle Net は、現在のトランザクションで発行されたすべての SELECT 文、および SELECT 文に関連付けられた各カーソルごとにクライアントにフェッチされた行数を追跡します。インスタンスへの接続が失われた場合、Oracle Net はバックアップインスタンスへの接続を確立し、SELECT 文を再実行して、何事もなかったかのようにクライアントが行の取得を続行できるようにカーソルを配置します。ただし、DML 操作は転送されません。

    • NONE - フェイルオーバー機能は実装されません (これがデフォルト)。

    METHOD 

    一次ノードから二次ノードまたはバックアップノードへのフェイルオーバーの速度を決定します。 

    • BASIC - フェイルオーバー時に接続を確立します。

    • PRECONNECT - 事前に接続を確立します。このパラメータが使用されている場合、バックアップインスタンスへの接続は、一次インスタンスへの接続と同時に作成されます。

    RETRIES 

    障害が発生したあと、終了する前に BACKUP ノードへの接続を試行する回数を指定します。 

    DELAY 

    障害が発生したあと、終了する前に BACKUP ノードへの接続を待機する試行間隔時間 (秒単位) を指定します。