ORA-00020: maximum number of processes (N) exceeded(最大プロセス数 (N) を超えた)
Oracle意味
インスタンスのプロセス数が PROCESSES 初期化パラメータで定義された上限に達し、新しい接続/プロセスを作成できない。新しいセッションは接続できず、管理者でさえ接続できない場合がある。
原因
大きすぎるアプリケーションのコネクションプール、クローズされない接続 (リーク)、想定を超える同時ユーザー数、または低すぎる PROCESSES パラメータにより上限を超える。ハングしたバックグラウンドジョブやパラレルクエリのプロセスがプロセスを消費することもある。
対処方法
sqlplus -prelim / as sysdba で接続できるが、この接続では SQL を実行できない (v$session を照会できない)。oradebug (例: hanganalyze) と SHUTDOWN ABORT にのみ使用できる。スロットを空けるには、OS レベルでアイドル状態のアプリケーションのサーバープロセスを慎重に kill する (ps -ef | grep 'LOCAL=NO')。その後、通常の SYSDBA 接続で v$session/v$process からリークしたセッションを特定し、ALTER SYSTEM KILL SESSION で終了する。恒久対策として PROCESSES を増やしてインスタンスを再起動する (spfile で SESSIONS が明示的に設定されている場合は再計算されないため、それも更新する)。アプリケーション側では、コネクションプールの最大数とアイドル接続のクリーンアップを修正する。
同じデータベースの他の項目
- ORA-04061existing state of package/procedure has been invalidated(パッケージ/プロシージャの既存の状態が無効化された)
- ORA-01466unable to read data - table definition has changed(データを読み取れない - 表定義が変更された)
- ORA-08176consistent read failure; rollback data not available(読み取り一貫性の失敗。ロールバックデータが利用できない)
- ORA-01113file N needs media recovery(ファイル N にメディアリカバリが必要)
- ORA-02393exceeded call limit on CPU usage(CPU 使用量の呼出し上限を超えた)
- ORA-12801error signaled in parallel query server Pnnn(パラレルクエリサーバー Pnnn でエラーが通知された)