ユーザプロセスとサーバプロセスの関係

専用サーバ接続では、ユーザプロセスとサーバプロセスは 1:1 になる。
以前はマルチスレッドサーバと呼ばれていた共有サーバ接続では、
ユーザプロセスとサーバプロセスは 1:n になる。



専用サーバ接続(SERVER = DEDICATED)

セッション毎に担当する専用サーバプロセスがいて、セッションが切断されるまで
つきっきりでフォローするという仕組みである。
プラットフォームが Windows の場合は、OS の特性上、スレッドとして動作している。

また、 tnsnames.ora の設定を SERVER = DEDICATED にする。
専用サーバ接続はバッチ系システムに適していて、性能面では共有サーバより高速。

共有サーバ接続(SERVER = SHARED)

ディスパッチャが中継の役割を担っており、ユーザプロセスを受け付け、
アイドル状態の共有サーバプロセスに対して要求を送る。
複数のユーザプロセスに対応することが可能。

共有サーバプロセスは Oracle 内部で管理され、データベースの状態により動的に
起動される。主に OLTP 系のシステムに適していて、専用サーバよりリソースを
効率的に使用できる。ただし、ディスパッチャを介すため性能面では劣る。

共有サーバ接続を使用する場合、初期化パラメータのdispatchers、
shared_servers などを設定し、データベースを起動する。
リスナーポートによっては listener 関連のパラメータの設定を行う。

また、 tnsnames.ora の設定を SERVER = SHARED にする。
仕様上、指定されていない場合は、接続可能なら共有サーバが優先される。

モードの確認方法

Oracle ログイン後に、どちらのモードで接続しているかを確認するためには、
動的パフォーマンスビューの v$session を参照すればよい。

この SERVER = DEDICATED ならそのセッションは専用サーバ接続、
SERVER = SHARED や NONE の場合は、共有サーバ接続ということになる。