SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

最新イベントはこちら!

Data Tech 2024

2024年11月21日(木)オンライン開催

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

EnterpriseZine(エンタープライズジン)

EnterpriseZine編集部が最旬ITトピックの深層に迫る。ここでしか読めない、エンタープライズITの最新トピックをお届けします。

『EnterpriseZine Press』

2024年夏号(EnterpriseZine Press 2024 Summer)特集『ニューリーダーに訊く──2024年春、CxOに就任した2人が目指す姿とは』

目指せリア充!コーソル流 RAC 活のススメ ~シングル卒業~

11g R2 RAC データベースへの接続フェイルオーバーとロードバランシング

004

第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 種類の接続フェイルオーバーが提供されています。

 

図1 接続時フェイルオーバー(CTF)と透過的アプリケーション・フェイルオーバー(TAF)
 図1 接続時フェイルオーバー(CTF)と透過的アプリケーション・フェイルオーバー(TAF)

 

接続時フェイルオーバー(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))
    )
  )
=================================================================================

次のページ
2. 接続ロードバランシング

この記事は参考になりましたか?

  • Facebook
  • X
  • Pocket
  • note
目指せリア充!コーソル流 RAC 活のススメ ~シングル卒業~連載記事一覧

もっと読む

この記事の著者

岡野 平八郎(オカノ ヘイハチロウ)

  株式会社 コーソル Oracleサポートグループ   2004年に新卒で独立系ソフトハウスへ入社。約4年間、大手製造業向けのシステム保守部隊にて、主にDB2、 SQL Serverの運用管理者として活躍した。次第に保守フェーズ以外の経験を積んでみたいと考えるようになり...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/4600 2013/03/01 00:00

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング