SHOEISHA iD

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

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

直近開催のイベントはこちら!

EnterpriseZine Day 2022

2022年6月28日(火)13:10

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

お申し込み受付中!

イチから学ぶデータベース最新技術 - Oracle Real Application Clusters編

RACへの接続とロード・バランシング

 前回の連載ではOracle Real Application Clusters(RAC)のノード間データの一貫性を取るキャッシュ・フュージョンの仕組みを解説しました。アプリケーション・サーバー等のOracleクライアントは、RACのどのインスタンスに接続しても同じようにSQLを実行することができます。今回はOracleクライアントがどのOracleインスタンスに接続するかを決定するロード・バランシングについて解説します。JDBCドライバなどのOracleクライアントのソフトウェアにはシングル・インスタンス用またはRAC用という区別はありません。単一のバイナリでどちらへの接続にも対応しています。

Oracleクライアントは「サービス」に接続する

 Oracleクライアントは、ユーザー名とパスワード、Oracleリスナーのホスト名とポート番号、そしてサービス名を指定して接続リクエストを発行します。これはシングル・インスタンスでもRACでも同じです。Oracleインスタンスは自身の担当するサービス名をOracleリスナーに登録しています。このようにして、OracleリスナーはどのOracleインスタンスがどのサービスを担当しているかを把握します(図1)。RACの場合、複数のOracleインスタンスが同じ名前のサービスを担当することができます。サービス名のデフォルト値はデータベース名(Oracle初期化パラメータのDB_NAME.DB_DOMAIN)です。

 Oracleリスナーは、Oracleクライアントから指定されたサービスを担当するOracleインスタンスと接続するためのOracleサーバー・プロセスを生成し、セッションを確立します。

RACの接続ロード・バランシング

 RAC 11g R2以降では、各ノードにOracle Grid Infrastructure(GI)が管理するローカル・リスナー以外に、クラスタを代表するSingle Client Access Name(SCAN)リスナーと、SCANリスナーに対応するSCAN Virtual IPアドレス(SCAN VIP)がセットでクラスタのいずれかのノードで起動しています。SCANリスナーとSCAN VIPは可用性のために複数起動しています。複数あるSCAN VIPのIPアドレスはDNSで1つのホスト名に対応付けられます。もしSCANリスナーが起動しているノードで障害が発生すると、別の正常ノードにSCANリスナーがSCAN VIPとともにフェイルオーバーします。

 Oracleインスタンスはローカル・ノードのOracleリスナーに担当サービスを登録するとともに、SCANリスナーにも登録します。そのため、SCANリスナーはRACの全インスタンスがどのサービスを担当しているかを把握しています(図2)。

 Oracleリスナーには2つの役割があります。1つ目はOracleクライアントの接続リクエストを、ロード・バランシングを考慮しつつ適切なローカル・リスナーにリダイレクトすることです。2つ目はOracleインスタンスとのセッションを確立することです。接続リクエストのリダイレクト用にサービス登録するOracle初期化パラメータはREMOTE_LISTENERです。そしてセッション確立用にサービス登録するOracle初期化パラメータはLOCAL_LISTENERです。REMOTE_LISTENRに指定されたリスナーに全Oracleインスタンスからサービスの登録があるように構成されます。アプリケーション・サーバーなどのOracleクライアントは、このREMOTE_LISTENERで指定されたリスナーに接続リクエストを発行します。Oracleクライアントの接続文字列に記述するホスト名とポート番号は、シングル・インスタンスの場合はローカル・リスナーですが、RACの場合はリダイレクト用のリスナー(SCANリスナー)のものです。

 SCANリスナーが実装される前のRAC 11g R1までは、すべてのローカル・リスナーにOracleインスタンスがサービスを登録し、すべてのローカル・リスナーが接続リクエストのリダイレクトとセッション確立の2つの役割を兼ねていました(図3)。SCANリスナーはRAC 11g R2で導入されました。SCANリスナーは接続リクエストのリダイレクト専用のリスナーで、ローカル・リスナーはセッションの確立を行います。

 デフォルトのサービス名(=データベース名)はOracle Enterprise Managerなどの管理ツールが使用するので、アプリケーション接続用にはデフォルト・サービス名であるデータベース名ではなく、別途srvctlコマンドでサービスを作成するのを推奨します(図4)。

 追加したサービスにはロード・バランシングの属性を設定することが可能です。追加したサービス(-service)に接続するには、Oracleクライアントの接続記述子のサービス名にOracle初期化パラメータDB_DOMAINを付加したものを指定します。各Oracleインスタンスへの物理コネクションの本数の配分は、接続ロード・バランシングの属性(-clbgoal)で設定します。これには長時間コネクションを維持する場合に使用するLONGと、短時間でコネクションを解放する場合に使用するSHORTがあります。

次のページ
ランタイム接続ロード・バランシング

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

  • Facebook
  • Twitter
  • Pocket
  • note
イチから学ぶデータベース最新技術 - Oracle Real Application Clusters編連載記事一覧

もっと読む

この記事の著者

日下部 明(クサカベ アキラ)

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

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

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/9709 2017/09/08 06:00

Job Board

PR

おすすめ

アクセスランキング

アクセスランキング

イベント

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

2022年6月28日(火)13:10

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

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

メールバックナンバー

アクセスランキング

アクセスランキング