13.3.4 透過的アプリケーション・フェイルオーバーの実装
TAFは、FAILOVER_MODEパラメータの設定次第で複数の方法で実装できます。次の方法をお薦めします。
- 接続時フェイルオーバーおよびクライアント・ロード・バランシングのTAF
複数のアドレスに対して接続時フェイルオーバーおよびクライアント・ロード・バランシングのTAFを実装します。 - 接続再試行のTAF
TAFを使用すると、RETRIESおよびDELAYパラメータを使用して最初の接続試行が失敗した場合に自動的に接続を再試行できます。 - 接続事前確立のTAF
TAFを使用すると、バックアップ接続を事前確立できます。初期接続とバックアップ接続を明示的に指定する必要があります。
親トピック: 透過的アプリケーション・フェイルオーバーの構成について
13.3.4.1 接続時フェイルオーバーおよびクライアント・ロード・バランシングのTAF
複数のアドレスについて接続時フェイルオーバーおよびクライアント・ロード・バランシングを行うようにTAFを実装します。
次の例では、Oracle Netはsales1-serverまたはsales2-serverのいずれかのプロトコル・アドレスにランダムに接続します。接続後にインスタンスに障害が発生した場合は、TAFアプリケーションが他のノードのリスナーにフェイルオーバーし、実行中のSELECT文があればその文を保持します。
sales.us.example.com= (DESCRIPTION= (LOAD_BALANCE=on) (FAILOVER=on) (ADDRESS= (PROTOCOL=tcp) (HOST=sales1-server) (PORT=1521)) (ADDRESS= (PROTOCOL=tcp) (HOST=sales2-server) (PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=sales.us.example.com) (FAILOVER_MODE= (TYPE=select) (METHOD=basic))))
前述の例には複数のアドレスが含まれていますが、オプションのADDRESS_LISTパラメータは使用されていません。
親トピック: 透過的アプリケーション・フェイルオーバーの実装
13.3.4.2 接続再試行のTAF
TAFを使用すると、RETRIESおよびDELAYパラメータを使用して最初の接続試行が失敗した場合に自動的に接続を再試行できます。
次の例では、Oracle Netはsales1-serverのリスナーへの再接続を試行します。このフェイルオーバー接続に失敗した場合は、15秒待機してから再び再接続を試行します。Oracle Netは最大20回まで再接続を試行します。
sales.us.example.com=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=sales1-server)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(FAILOVER_MODE=
(TYPE=select)
(METHOD=basic)
(RETRIES=20)
(DELAY=15))))親トピック: 透過的アプリケーション・フェイルオーバーの実装
13.3.4.3 接続事前確立のTAF
TAFを使用すると、バックアップ接続を事前に確立できます。初期接続とバックアップ接続を明示的に指定する必要があります。
次の例では、ネットワーク・サービス名sales1.us.example.comを使用してsales1-serverのリスナーに接続するクライアントが、sales2-serverにも事前接続されます。接続後にsales1-serverに障害が発生した場合は、sales2-serverにフェイルオーバーし、実行中のSELECT文があればその文を保持します。同様に、sales2-serverのリスナーに、sales2.us.example.comを使用して接続するクライアントのために、Oracle Netはsales1-serverに事前に接続します。
sales1.us.example.com=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=sales1-server)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(INSTANCE_NAME=sales1)
(FAILOVER_MODE=
(BACKUP=sales2.us.example.com)
(TYPE=select)
(METHOD=preconnect))))
sales2.us.example.com=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=sales2-server)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(INSTANCE_NAME=sales2)
(FAILOVER_MODE=
(BACKUP=sales1.us.example.com)
(TYPE=select)
(METHOD=preconnect))))親トピック: 透過的アプリケーション・フェイルオーバーの実装