以下のように表示されます。
(日本語)
ORA-00020: 最大プロセス数(XXX)を超えました。
(英語)
ORA-00020: maximum number of processes (XXX) exceeded.
XXXの箇所には設定されている最大プロセス数が表示されます
発生パターン
このエラーは以下のような場合に発生します。
- 初期化パラメータで設定された最大プロセス数を超えるプロセスが作成された。
※初期化パラメータに設定されたプロセス数が本当に必要なプロセス数より小さい場合もありますが、大抵はプログラムのバグ(プロセスの解放処理が行われていない)であることが多いです。
例)プロセス数の設定を確認する
- SQL*Plus
- SQL> show parameter processes NAME TYPE VALUE ------------------------------------ ----------- ---------------- aq_tm_processes integer 1 db_writer_processes integer 1 gcs_server_processes integer 0 global_txn_processes integer 1 job_queue_processes integer 10 log_archive_max_processes integer 4 processes integer 100
上記例だとprocessの値「100」がプロセス数です。
プロセス数を変更するには以下コマンドを使用します。
例)プロセス数を1000に設定する
- SQL*Plus
- ALTER SYSTEM SET PROCESSES = 1000 SCOPE=BOTH;
対処法
- 初期化パラメータの最大プロセス数を増やす(初期化パラメータ名:processes)
- プログラム側で正しくプロセスの解放を行うように修正する
(JDBC接続でコネクションのcloseが確実に行われているかなど確認する)