共有サーバーを設定する Oracle 10g

専用サーバーと共有サーバー(旧名 MTS:マルチ・スレッド・サーバー)の両方を併用して、専用サーバーはバッチ処理向け、共有サーバーは OLTP 向けとして用意することもできる。
またメモリ不足などの場合、夜間の閑散とした時刻は共有サーバー数を減らすことでバッチ処理(※)へのリソースを増加させることも可能。(サーバー・パラメータ・ファイルで運用している場合には動的変更が可能)

(※)バッチ処理には専用サーバーを使用する。専用サーバーは共有サーバーよりも高速に処理ができる。

(注意) ここで記述した作業内容は Oracle 10g からの機能も使用しているため Oracle 9i 以下だとうまくいかないかもしれない。(Oracle 8i 以下では利用できない。)

共有サーバー数の設定 (初期化パラメータの設定)

共有サーバー数を設定する。(Snnn プロセスが同時に起動される。)
SHARED_SERVERS を 1 以上にする。

ALTER SYSTEM SET SHARED_SERVERS = 1 ;

ディスパッチャの設定

ディスパッチャの起動 ( Dnnn プロセス)

ALTER SYSTEM SET DISPATCHERS='(PROTOCOL=tcp)' ;

デフォルトインストールの場合 XML-DB が設定されている。

DISPATCHERS='(PROTOCOL=tcp)(SERVICE=<SID>XDB)'

サービス名を指定しての起動

ALTER SYSTEM SET
 DISPATCHERS='(PROTOCOL=tcp)(SERVICE=shared_servicename)' ;

ディスパッチャ経由の接続記述子の SERVICE_NAME には shared_servicename を指定する。

パラメータ名の省略形を使用して複数のディスパッチャ、プロトコルの指定をする例

ALTER SYSTEM SET
 DISPATCHERS='(PROT=tcp)(DISP=1)','(PRO=tcps)(DIS=2)(SER=secure_serv)' ;

関連事項: ALTER SYSTEM による初期化パラメータの変更

接続先の設定と接続順番 (ネーミングメソッド)

専用サーバーと共有サーバーが同じサービス名の場合、接続記述子(CONNECT_DATA= 以下の設定)により 接続可否と順位が異なる。

TNSNAMES.ORA の一部で SERVER = xxxxx が重要

(CONNECT_DATA =
    (SERVER = SHARED)    ← ここ
    (SERVICE_NAME = shared_servicename.domainname)
)
専用サーバー接続/ SERVER=DEDICATEDの場合
専用サーバーに接続する。(共有サーバーに接続しない)
共有サーバー接続/ SERVER=SHAREDの場合
共有サーバーに接続する。(共有サーバーに接続できない場合はエラー)
SERVER 指定なし の場合
共有サーバー接続が優先され、接続できない場合は専用サーバーに接続する。

但し、SQL.NET ファイルに

USE_DEDICATED_SERVER = on

の記述がされると TNSNAMES.ORA の設定は、すべて SERVER=DEDICATED に(内部で)置換される。

接続先が共有サーバーか専用サーバーかを確認する方法

SQL> SELECT SERVER FROM V$SESSION WHERE SID = USERENV('SID') ;
SERVER
------------------
DEDICATED
 
(SHARED = 共有サーバー接続 / DEDICATED = 専用サーバー接続)

V$SESSION ビュー

ディスパッチャの停止

以下のパラメータの変更を反映させるにはディスパッチャの停止が必要。
DESCRIPTION、ADDRESS、PROTOCOL、CONNECTIONS、TICKS、MULTIPLEX、POOL、SESSION(増加させたとき)
ディスパッチャの停止には、ディスパッチャ名が必要。(UNIX系だとプロセスの ora_Dnnn_<SID>の 'Dnnn' に該当する)

SELECT NAME, NETWORK FROM V$DISPATCHER;
...
ALTER SYSTEM SHUTDOWN [ IMMEDIATE ] 'D000';

IMMEDIATE 指定はそのディスパッチャによる接続を終了させて停止する。
無指定の場合には新規接続は受け付けず、既存接続の終了後に停止する。



関連初期化パラメータ

パラメータ名タイプ内容
SHARED_SERVERS数値初期共有サーバー数および最低限保持する共有サーバー数(データベースにアクセスするプロセス)
MAX_SHARED_SERVERS数値共有サーバーの最大数(同時接続が最大数を超えるとき、クライアントは待機する)
SHARED_SERVER_SESSIONS数値同時に実行可能な共有サーバー・ユーザー・セッションの合計数
DISPATCHERS文字列ディスパッチャの構成パラメータ(クライアントと共有サーバーの仲介役、接続の振り分け窓口のプロセス)
MAX_DISPATCHERS数値ディスパッチャの最大数
CIRCUITS数値バーチャルサーキットの合計数(ソケット)

関連パフォーマンスビュー

ディスパッチャの負荷判定

  • V$QUEUE
  • V$DISPATCHER
  • V$DISPATCHER_RATE

ディスパッチャの設定

  • V$DISPATCHER_CONFIG 、V$DISPATCHER (CONFIG_INDEX で結合)

共有サーバー状況

  • V$SHARED_SERVER_MONITOR(サマリ)
  • V$SHARED_SERVER(個別)

バーチャルサーキット情報

  • V$CIRCUIT

セッション情報

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle Web セミナー