レック・テクノロジー・コンサルティング株式会社TECH BLOG

OracleRAC DB サービス接続について

はじめに

DB技術本部のDB運用技術チームの齋です。
前回の記事で、「ロードバランシング」を紹介しました。
今回は、OracleRAC構築を行う際に知ってもらいたいもう一つの項目として「サービス接続」について紹介しようと思います。
併せてSCANリスナーについても記載します。SCANリスナーは「接続リスエストをリダイレクト」する機能ですが、負荷分散と通常のリスナーを混同している方がいるため、まとめていきたいと思います。

目次

 SCANリスナーとは
  -SCAN概要
  -SCANリスナーの役割
   -図:SCANリスナーの役割
   -DNSラウンドロビン
   -図:DNSラウンドロビン

 SCANリスナーのまとめ

 データベース・サービス接続
  -データベースサービス接続の位置づけ
  -デフォルトで存在するサービス
  -Oracleクライアントからの接続
  -データベース・サービス接続例
  -データベース・サービスの利点
   -Database ResourceManagerでの利点
   -パフォーマンス分析での利点

SCANリスナーとは

SCAN概要

Oracle Database 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とともにフェイルオーバーします。

SCANリスナーを利用する構成では、Oracleインスタンスはローカル・ノードのOracleリスナーに担当サービスを登録するとともに、SCANリスナーにも登録します。
そのため、SCANリスナーはRACの全インスタンスがどのサービスを担当しているかを把握しています。
※SCANを利用する場合には、「remote_listener」にSCANリスナー名(SCANVIP)を指定する。 通常、「local_listener」は、インスタンス起動後に動的に設定される。

SCANリスナーの役割

無題.png

  ●「リダイレクト」と「セッション確立」の役割が分かれている。
  ●「SCANリスナー」は「リダイレクト専用」
  ●「ローカル・リスナー」は「セッションの確立」
  ●Oracleクライアントから複数あるSCAN VIPへの振り分けは、DNS側の機能である「DNSラウンドロビン」で行う。

・DNSラウンドロビン

SCANを利用するためには、 DNSで1つのSCANホスト名に複数のSCAN VIPを対応づける必要があります。
この機能は、DNSの機能で「DNSラウンドロビン」と言います。

無題.png

SCANリスナーのまとめ

 ●DNS側の機能のDNSラウンドロビンで、複数のSCAN VIPのいずれかに接続
 ●SCANリスナーは、リダイレクトを行う機能
 ●セッション確立は、通常のリスナー(ローカル・リスナー)が行う
 ●「local_listener」、「remote_listener」の初期化パラメータを設定しているので
  サーバサイド・ロード・バランシングが有効になる。

データベース・サービス接続

データベースサービス接続の位置づけ

無題.png

Oracleクライアントはデータベース・サービス名を指定して接続する
• シングル・インスタンスもRACも同じ
• RACの複数ノードであることをデータベース・サービスが仮想化

デフォルトで存在するサービス

サービスごとにワークロードが区別されている
• V$SERVICE_STATS など
• Oracleリスナーに登録されるサービスとは別に、内部的なサービスがある
• データ・ディクショナリ上でも区別

 サービス名  Oracleリスナーへの登録  データ・ディクショナリ
 追加したサービス  登録される  ワークロード分別
 DB_UNIQUE_NAME(と同じ値) データベ
 ース名を基にしたデフォルト・サービス
 登録される  ワークロード分別
 SYS$USERS サービス名を持たないセッション
 のサービス
 登録されない  ワークロード分別
 SYS$BACKGROUND バックグラウンド・プロ
 セスが属するサービス
 登録されない  ワークロード分別

Oracleクライアントからの接続

無題.png

Oracleクライアントからの接続
• RACへの接続記述子は基本的にシングル・インスタンスへの接続と同じ
• Oracleリスナーのホスト名とポート番号を指定
• データベース・サービス名を指定

データベース・サービス接続例

無題.png

データベース・サービスの利点

サービス毎(用途毎)に使用ノード(インスタンス)を分けることで、OSリソース(CPU、メモリ)を有効活用可能。
業務の用途毎にサービスを分けることにより、Database ResourceManagerでのリソース制御やAWR、EMCCを用いたパフォーマンス分析が容易となる。

・Database ResourceManagerでの利点

※Resource ManagerはEnterprise Editionで利用可能な機能

ResourceManagerで用途毎にリソース制御をしたい場合に、色々な指定の方法がありますが、DBインフラ観点でいうと、データベース・サービス名で絞っておくと設定が楽です。
※ユーザ名などは、入れ替えの可能性が高く、都度メンテナンスしなければならないので、運用管理が煩雑になりやすい。

■リソース制御可能な単位例
 Oracle Databaseのユーザー名
 Oracle Databaseのサービス名
 クライアントが接続元にするコンピュータの名
 ログインしたクライアントのオペレーティング・システムのユーザー名
 サーバーにログインするために使用したクライアント・プログラムの名
  等々

Resource Managerにサービス名を登録する例

begin
dbms_resource_manager.set_consumer_group_mapping (
attribute => DBMS_RESOURCE_MANAGER.SERVICE_NAME,
value => 'SERVICE_1',
consumer_group => 'GROUP1');
end;
/

begin
dbms_resource_manager.set_consumer_group_mapping (
attribute => DBMS_RESOURCE_MANAGER.SERVICE_NAME,
value => 'AP',
consumer_group => 'GROUP2');
end;
/

・パフォーマンス分析での利点

ワークロード分析が楽になる。前項目で記載したとおり、サービス毎にワークロードが別れるので、以下の例の通り、サービス単位という大きな枠で評価可能

AWRレポート抜粋

Service Statistics DB/Inst: ORCL/orcl1 Snaps: 6948-6949
-> ordered by DB Time

Physical Logical
Service Name DB Time (s) DB CPU (s) Reads (K) Reads (K)
---------------------------- ------------ ------------ ------------ ------------
SERVICE_1 4,192 2,433 5,566 445,638
SYS$USERS 5 5 0 22
SYS$BACKGROUND 1 1 1 2,266
orcl 0 0 0 0
------------------------------------------------------

Service Wait Class Stats DB/Inst: ORCL/orcl1 Snaps: 6948-6949
-> Wait Class info for services in the Service Statistics section.
-> Total Waits and Time Waited displayed for the following wait
classes: User I/O, Concurrency, Administrative, Network
-> Time Waited (Wt Time) in seconds

Service Name
----------------------------------------------------------------
User I/O User I/O Concurcy Concurcy Admin Admin Network Network
Total Wts Wt Time Total Wts Wt Time Total Wts Wt Time Total Wts Wt Time
--------- --------- --------- --------- --------- --------- --------- ---------
SERVICE_1
5570695 1565 715 0 0 0 6158168 6
SYS$USERS
761 0 427 0 0 0 1695 0
SYS$BACKGROUND
7281 5 8546 0 0 0 0 0
orcl
0 0 0 0 0 0 0 0
------------------------------------------------------

以上となります。お役に立てれば幸いです。

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

ページトップへ戻る