共有サーバーを設定する
専用サーバーと共有サーバー(旧名 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(個別)
バーチャルサーキット情報
セッション情報