DBAtlas · データベース運用アトラス

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 が明示的に設定されている場合は再計算されないため、それも更新する)。アプリケーション側では、コネクションプールの最大数とアイドル接続のクリーンアップを修正する。

DBAtlas で開く →

同じデータベースの他の項目