共有サーバ


Oracle Netを使用した接続には以下の2つがある。


・専用サーバ接続

 ユーザープロセスとサーバプロセスが1対1で関連付けられる。
 リソース消費大
 デフォルトはこちらのみ


・共有サーバ接続

 クライアントからディスパッチャが受け取ったSQLをキューに格納して処理する
 リソース消費小


バッチ処理は専用サーバ接続が向いている


■サーバ側の設定


共有サーバに関する初期化パラメータは以下のとおり


DISPATCHERS


SHARED_SERVERS


MAX_SHARED_SERVERS


SHARED_SERVER_SESSIONS




■クライアント側の設定


クライアント側でどちらのサーバに接続するかは
tnsnames.ora (Oracle\product\10.2.0\client_1\network\ADMINフォルダ内)で指定することができる。
(専用サーバと共有サーバが同じサービス名の場合)


tnsnames.ora

hogehoge =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.xx)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)			←ここの記述。省略可能
      (SERVICE_NAME = ORCL)
    )
  )


専用サーバモード→(SERVER = DEDICATED)
共有サーバモード→(SERVER = SHARED)
※SERVER 指定なし の場合は共有サーバに優先して接続しようとする。



接続先が共有か専用かを確認するSQL

SELECT SERVER FROM V$SESSION WHERE SID = USERENV('SID') ;

動作確認環境 oracle10.2.0.1.0