ORACLE MASTER資格の中級に位置付けられ、取得すればOracle技術者としてグローバルに認定される「ORACLE MASTER Silver Oracle Database 10g」。例題を利用してポイントを押さえ、確実な合格を目指そう!
本連載第14回「Oracleのネットワークのサーバ側構成とは?」、第15回「Oracleのネットワークのクライアント側構成を知る」で、Oracle Net Servicesを学びました。今回はOracle共有サーバを紹介します。
共有サーバ構成に必要な手順と、共有サーバ接続を行った場合の特徴について確認します。特に共有サーバ接続時の処理の流れやアーキテクチャの特徴については、詳細な部分も含めて理解しておきましょう。
Oracle Netを使用した接続には、専用サーバ接続と共有サーバ接続があります。共有サーバ接続を使用するためには、Oracleサーバ側を共有サーバ構成にする必要があります。
専用サーバ接続では、ユーザープロセスとサーバプロセスが1対1で対応付けられます。そのため、セッションに関する情報やカーソル情報、作業領域などを含むUGA(User Global Area)は、サーバプロセスが持つPGA(Program Global Area)に格納されます。セッションごとにサーバプロセスが必要となるため、多くのセッションが確立される環境では、サーバ側に多くのCPUとメモリリソースが必要となります。
共有サーバ接続では、サーバプロセスは複数のユーザープロセスからのSQL処理要求を受け止めることが可能です。共有サーバ構成では、最低1つのディスパッチャプロセスが起動し、ユーザープロセスとの接続を確立します。セッションが切断されるまでは同一のディスパッチャが使用され、ディスパッチャからサーバプロセスにSQL処理が渡されます。多くのセッションが確立されていても、SQL処理が少ない環境では少ないサーバプロセスで済むため、サーバ側で使用するCPUとメモリリソースが減少します。
共有サーバ構成では、SGA(System Global Area)内に要求キューと応答キューが確保されます。ディスパッチャが受け止めたSQLは、要求キューに格納され、サーバプロセスがSQLを取り出して処理します。SQL処理の結果は、ディスパッチャごとに用意される応答キューに格納され、ディスパッチャが結果を取り出してユーザープロセスに戻します。
共有サーバ構成においては、必要なディスパッチャ、共有されるサーバプロセスの数を初期化パラメータで構成します。
関連する初期化パラメータには次のものがあります。
ディスパッチャの初期起動数をプロトコルごとに構成します。共有サーバ構成では、1つ以上のディスパッチャが必要です。同時接続50に対し、1つのディスパッチャを用意するのが目安となります。
ディスパッチャは自動で追加されることはありません。ディスパッチャ数を変更するには、手動で起動する必要があります。
DISPATCHERS =
'(PROTOCOL=TCP)(DISPATCHERS=2)',
'(PROTOCOL=IPC)(DISPATCHERS=1)',
共有サーバプロセスの初期起動数を構成します。共有サーバ構成では、1つ以上の共有サーバプロセスが必要です。同時接続25に対し、1つの共有サーバプロセスを用意するのが目安ですが、同時に実行されるSQL数によっては、もう少し多くの同時接続に対応することができます。
共有サーバプロセスは、必要に応じて、自動で追加起動されます。
SHARED_SERVERS = 5
起動される共有サーバプロセスの最大数を構成します。共有サーバプロセスは必要に応じて自動起動されますが、MAX_SHARED_SERVERSを超えることはありません。サーバマシンのリソースのうち、共有サーバプロセスに割り当て可能なリソースを基に、あらかじめ設定しておきます。デフォルトでは無制限となっています。
ディスパッチャと共有サーバプロセスを使用したユーザーからの接続は、Oracleサーバ内では仮想サーキットというもので管理されています。CIRCUITS初期化パラメータは、仮想サーキットの最大数を構成します。デフォルトでは共有サーバ構成の際、SESSIONS初期化パラメータと等しい値が設定されます。接続総数を制限する必要がある場合に構成します。
共有サーバ接続を行うセッションの最大数を構成します。このパラメータを使用することで、最大セッション数(SESSIONS)との差分を専用サーバ接続分として予約できるようになります。デフォルトでは無制限となっています。
共有サーバの構成に関する説明として正しいものを2つ選択しなさい。
a.カーソル領域とセッション情報は共有プールまたはラージプールに割り当てられる
b.カーソル領域とセッション情報はSGAの外に割り当てられる
c.スタック空間は共有プールに割り当てられる
d.スタック空間はラージプールに割り当てられる
e.スタック空間はSGAの外に割り当てられる
正解:a、e
前回、宿題とした問題です。
ユーザーセッションに関連したメモリはUGAと呼ばれ、次のメモリが含まれます。
取得した行などのSQL文の実行メモリを含みます。
セキュリティやリソース使用率に関する情報を含みます。
Oracleサーバに接続するプロセス(バックグラウンドプロセス、サーバプロセス)は、それぞれPGAを獲得します。サーバプロセスの場合、PGAにスタック空間(プロセスのローカル変数を含む)が獲得されます。
共有サーバ接続では、専用サーバ接続とはUGAの使用方法が異なります。
UGA、スタック空間ともにPGA内に獲得されます。
UGAはSGA内(共有プールまたはラージプール)、スタック空間はPGA内に獲得されます。
専用サーバ接続の場合は選択肢b、eが、共有サーバ接続の場合は選択肢a、e(正解)が当てはまります。
共有サーバ接続時に、最終的にユーザープロセスと接続を確立するプロセスを選択しなさい。
a.共有サーバプロセス
b.ディスパッチャ
c.リスナー
d.PMON
正解:b
共有サーバ接続時は、リスナーを経由してディスパッチャが選択されます。ユーザープロセスはディスパッチャと接続を確立します(正解b)。
そのほかの選択肢の不正解の理由は次のとおりです。
●選択肢a:共有サーバプロセスは、ユーザープロセスと直接通信は行いません。ユーザーが発行したSQL文はディスパッチャに送信され、ディスパッチャからSGA内のキューを介して共有サーバに渡されます。結果もまた、ディスパッチャからユーザーに戻されます。
●選択肢c:ユーザープロセスが最初に接続を要求するのはリスナーですが、実際に接続を確立するのはリスナーではありません。専用サーバ接続であればサーバプロセスと、共有サーバ接続であればディスパッチャと接続を確立します。
●選択肢d:PMONは、ユーザーセッションの確立に直接の関係はありません。ユーザーセッションの異常終了時に対応するサーバプロセスをクリーンアップしたり、ディスパッチャの異常時に再起動したりするのがPMONの役割です。
共有サーバ構成のキューに関する説明として正しいものを2つ選択しなさい。
a.応答キューは、インスタンスに1つ存在する
b.応答キューは、ディスパッチャごとに存在する
c.要求キューは、ディスパッチャごとに存在する
d.要求キューは、インスタンスに1つ存在する
正解:b、d
共有サーバ構成では、SGA内に2つのキューが獲得されます。
インスタンスに1つ存在し(正解d)、すべてのディスパッチャで共有します。要求キューに要求(SQL)があれば、共有サーバプロセスが順番に処理を行います。
ディスパッチャごとに1つ存在し(正解b)、クライアントへ戻す結果情報が格納されます。共有サーバプロセスによる処理結果の格納が行われると、ディスパッチャは応答キューから結果を取り出してクライアントに戻します。
次回は、「UNDO管理」を確認します。次の宿題を解いておいてください。
データに対する問い合わせ中に次のエラーが発生しました。
ORA-01555: スナップショットが古すぎます。
このエラーを回避するために調整できる設定を3つ選択しなさい。
a.SYSTEM表領域のサイズ
b.UNDO保存期間
c.UNDO表領域のサイズ
d.UNDO保存の保証
e.UNDO表領域の配置場所
IT資格試験の模擬問題をWebベースで学習できる@IT自分戦略研究所の新サービス「@IT資格攻略」では、「Silver DBA(Oracle10g)」をはじめOracle関連の資格をテーマとして取り上げています。「無料お試し版」もありますので、記事と併せてご覧ください。
Copyright © ITmedia, Inc. All Rights Reserved.