第3回目は、11g R2 で導入されたポリシー管理型データベースと Single Client Access Name(SCAN) についてお伝えしました。 Oracle RAC は高い性能と高可用性を得るために、負荷分散と障害発生時に別のインスタンスへ再接続する機能が提供されています。しかしながら、これらの利点を享受するにはサーバー・サイドだけでは実現できず、クライアント・サイド機能の連携も必要となります。第4回目では、この高い性能と高可用性を得るために必要な接続フェイルオーバー、ロードバランシングなどのクライアントから RAC データベースへの接続に関わる機能と、SCAN導入により改良されたクライアント・サイドにおける接続設定について説明します。
1. 接続フェイルオーバー
接続フェイルオーバーは、何らかの障害によりRACデータベースへの接続が確立できない場合に他のノードへ再接続する機能です。
Oracle RAC には新規接続時にエラーが発生した場合に再接続を試みる接続時フェイルオーバー(CTF:Connection Time Failover)と接続中にエラーが発生した場合に再接続を試みる透過的アプリケーション・フェイルオーバー(TAF:Transparent Application Failover)という 2 種類の接続フェイルオーバーが提供されています。

接続時フェイルオーバー(CTF)
接続時フェイルオーバーは、新規接続時にあるリスナーへの接続に失敗すると、別のリスナーに対して接続を試行する機能です。
設定は tnsnames.ora の接続記述子に FAILOVER=ON を記述します。SCAN が導入されていないリリース11.1 以前では ADDRESS_LIST句 に VIP を列記していました。SCAN 利用時は、ADDRESS_LIST句に SCAN 名を指定すると、自動的に 3 つの SCAN VIP を使用した接続時フェイルオーバーの設定が行われます。また、ADDRESS_LIST句 に VIP を列記する必要がなくなることでノードの追加、削除の際に各クライアントの tnsnames.ora を編集する必要がなくなりました。
例:SCAN未導入時の設定方法(tnsnames.ora) ================================================================================= TEST_CTF = (DESCRIPTION = (ADDRESS_LIST = (FAILOVER=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = [VIP1])(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = [VIP2])(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = [VIP3])(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) =================================================================================
例:SCANを利用した設定方法(tnsnames.ora) ================================================================================= TEST_CTF = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = [SCAN])(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) =================================================================================
透過的アプリケーション・フェイルオーバー(TAF)
透過的アプリケーションフェイルオーバーは、RAC データベースに接続中のインスタンスで障害が発生した際に、障害が発生していないインスタンスに自動的に再接続する機能です。また、実行中の SELECT 文を再開させる設定も可能です。INSERT、UPDATE、DELETEなどの他のトランザクションの場合は、アプリケーションで失敗したトランザクションをロールバックし再実行する必要がある事に注意してください。
設定はサービスに TAF ポリシーを定義するサーバー・サイドと tnsnames.ora に記述するクライアント・サイドの 2 つの方法が提供されており、両方設定した場合はサーバー・サイドの設定が優先されます。
例:サーバー・サイドの設定方法 ================================================================================= $ srvctl modify service -d orcl -s service_taf -P BASIC -e SELECT ================================================================================= ※ポリシー管理では -P オプションは利用できません。 例:SCAN未導入時のクライアント・サイドの設定方法(tnsnames.ora) ================================================================================= TEST_TAF = (DESCRIPTION = (ADDRESS_LIST = (FAILOVER=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = [VIP1])(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = [VIP2])(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = [VIP3])(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) (FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)) ) ) ================================================================================= 例:SCANを利用したクライアント・サイドの設定方法(tnsnames.ora) ================================================================================= TEST_TAF = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = [SCAN])(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) (FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)) ) ) =================================================================================
この記事は参考になりましたか?
- 目指せリア充!コーソル流 RAC 活のススメ ~シングル卒業~連載記事一覧
-
- 11g R2 RACとGrid Infrastructureのバックアップと障害復旧
- 統合され、拡張された 11g R2 RAC ASM
- 11g R2 RAC データベースへの接続フェイルオーバーとロードバランシング
- この記事の著者
-
岡野 平八郎(オカノ ヘイハチロウ)
株式会社 コーソル Oracleサポートグループ 2004年に新卒で独立系ソフトハウスへ入社。約4年間、大手製造業向けのシステム保守部隊にて、主にDB2、 SQL Serverの運用管理者として活躍した。次第に保守フェーズ以外の経験を積んでみたいと考えるようになり...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア