PROCESSESには、Oracleに同時に接続できるオペレーティング・システムのユーザー・プロセスの最大数を指定します。この値は、ロック、ジョブ・キュー・プロセス、パラレル実行プロセスなどのすべてのバックグラウンド・プロセスを考慮して設定する必要があります。
http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05771-03/initparams.htm#97571
ということらしいが、いまいちよくわからないので、ちょっと検証してみた。
初期化パラメータ PROCESSES は 30
SQL> select value from v$parameter where name ='processes'; VALUE ----- 30
初期化パラメータ SESSIONS は 38
SQL> select value from v$parameter where name ='sessions'; VALUE ----- 38
Oracle を起動した直後のプロセス数は 22
SQL> select program from v$process order by program; PROGRAM ------------------------------------------------ PSEUDO oracle@db1 (CJQ0) oracle@db1 (CKPT) oracle@db1 (D000) oracle@db1 (DBW0) oracle@db1 (DIAG) oracle@db1 (LCK0) oracle@db1 (LGWR) oracle@db1 (LMD0) oracle@db1 (LMON) oracle@db1 (LMS0) oracle@db1 (LMS1) oracle@db1 (MMAN) oracle@db1 (MMNL) oracle@db1 (MMON) oracle@db1 (PMON) oracle@db1 (QMNC) oracle@db1 (RECO) oracle@db1 (S000) oracle@db1 (SMON) oracle@db1 (TNS V1-V3) oracle@db1 (q001) 22 rows selected.
リモートマシンから sqlplus でがんがん接続してみると、接続できなくなる。
$ sqlplus system/oracle@db1 & # ← 繰返す [oracle@s-sjdb2 dbs]$ SQL*Plus: Release 10.1.0.3.0 - Production on Thu Mar 5 15:05:38 2009 Copyright (c) 1982, 2004, Oracle. All rights reserved. ERROR: ORA-12520: TNS:listener could not find available handler for requested type of server
プロセス数が 29 まで増えている。なぜ 30 まで接続できないのかは不明。
PROGRAM ------------------------------------------------ PSEUDO oracle@db1 (CJQ0) oracle@db1 (CKPT) oracle@db1 (D000) oracle@db1 (DBW0) oracle@db1 (DIAG) oracle@db1 (LCK0) oracle@db1 (LGWR) oracle@db1 (LMD0) oracle@db1 (LMON) oracle@db1 (LMS0) oracle@db1 (LMS1) oracle@db1 (MMAN) oracle@db1 (MMNL) oracle@db1 (MMON) oracle@db1 (PMON) oracle@db1 (QMNC) oracle@db1 (RECO) oracle@db1 (S000) oracle@db1 (SMON) oracle@db1 (TNS V1-V3) oracle@db1 (q001) oracledb1@db1 oracledb1@db1 oracledb1@db1 oracledb1@db1 oracledb1@db1 oracledb1@db1 oracledb1@db1 29 rows selected.
追記(2009/04/24):
計算式はざっくりこんな感じ
バックグラウンドプロセス用 + アプリケーション用 + 保守用 + 余裕分
瞬間的にブチッと全部切れて、再接続すると2倍になるので、2倍にしておくとより安全らしい。
バックグラウンドプロセス用 + ( アプリケーション用 + 保守用 ) × 2 + 余裕分
多くしとけば良さそうに思えるけど、そうでもないらしい。
v$表の行数とかが増えて遅くなるので、必要以上に多くしないほうが良いらしい。
追記(2011/06/28):
参考 KROWN#106791