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))))
親トピック: 透過的アプリケーション・フェイルオーバーの実装