専用サーバ構成時には以下のパラメータを設定しない。
名称 | 説明 | 設定値 |
---|---|---|
SHARED_POOL_SIZE | SQL統計情報やプロシージャを格納する。セッション情報もここにはいる。 | 接続するユーザごとに1kを追加(と「管理者ガイド」には書いてあるが、実際には2M程度が必要) |
MTS_LISTENER_ADDRESS | リスナー・プロセスのアドレス | リスナーの構成ファイルと同じ記述内容を、プロトコルごとに指定。 |
MTS_SERVICE | リスナーに対応付けるサービス名。 | なるべくSIDと同じ物を使用。設定されなければDB_NAMEが使用される。 |
MTS_DISPATCHERS | インスタンス起動時に起動されるディスパッチャ・プロセスの数。プロトコルごとに設定。 | CEIL(最大同時セッション数 / ディスパッチャあたりの接続数) |
MTS_MAX_DISPATCHERS | 起動可能な最大ディスパッチャプロセス数(各プロトコルの合計) | 最大同時セッション数 / ディスパッチャあたりの接続数。デフォルト値は5。 |
MTS_SERVERS | インスタンス起動時に起動される共有サーバプロセス数。常に起動されている最小値でもある。 | なるべく少なめに設定する。設定しないか0の場合、共有サーバは起動されない。また、プロセスが増加した場合、MTS_MAX_SERVERSを上限として自動的に追加される。 |
MTS_MAX_SERVERS | 起動可能な最大共有サーバプロセス数 | 実験で決定。デフォルト値は20。 |
各ディスパッチャがサポートできる接続の最大数は、以下のSQL文によって表示される。
SELECT maximum_connections FROM v$mts;
この値は、SQL*Net定数やその他の情報を使用して起動時に決定される。
プロトコルごとのディスパッチャプロセスの使用率は、以下のSQL文によって表示される。
SELECT network "PROTOCOL", SUM(busy) /( SUM(busy) + SUM(idle)) "Total Busy Rate" FROM v$dispatcher GROUP BY network;
使用率が50%以上であれば、ディスパッチャプロセスを追加することを考える。
また、応答キューの待機時間は、以下のSQL文によって示される。
SELECT network "PROTOCOL" DECODE( SUM(totalq), 0, 'No Responses', SUM(wait)/SUM(totalq) || ' hundredths of seconds') "Average Wait Time per Response" FROM v$queue q, v$dispatcher d WHERE q.type = 'DISPATCHER' AND q.paddr = d.paddr GROUP BY network;
特定のプロトコルの応答時間が時間につれて悪化する場合には、ディスパッチャプロセスを追加することを考える。(ディスパッチャプロセスは自動的には追加されない)。
ディスパッチャプロセス数の変更は、以下のSQL文によって実行される。
ALTER SYSTEM SET MTS_DISPATCHERS = '[プロトコル名],[プロセス数]';
要求キューの待機時間は、以下のSQL文によって示される。
SELECT DECODE( totalq, 0, 'No Requests', wait/totalq || ' hundredths of seconds') "Average Wait Time per Response" FROM v$queue WHERE type = 'COMMON';
また、現在起動中の共有サーバプロセス数は、以下のSQL文によって示される。
SELECT COUNT(*) FROM v$shared_server WHERE status = 'QUIT';
起動中の共有サーバプロセス数がMTS_MAX_SERVERSに達し、なおも要求キューの待機時間が増加する場合、MTS_MAX_SERVERSを増加することを考える。また、最小値を変更する、あるいはマルチスレッド構成を一時的に使用禁止にする場合は、以下のSQL文を発行する。
ALTER SYSTEM SET MTS_SERVERS = [プロセス数、使用禁止にするときは0];トップページに