ORA-00020とは

ORA-00020はSGAに接続しているプロセス数(Windowsの場合はスレッド)が初期化パラメータprocessesの値まで達したため接続が失敗したことを表すエラーです。 プロセス数として数えられるのはSGAを参照しているプロセス(V$PROCESSで確認できるプロセス)のみでありリスナーやsqlplus等のプロセスは数えられません。


対策

・初期化パラメータprocessesが過小だった場合
初期化パラメータprocessesの値を増加させて最大プロセス数を引き上げます。processesの値を増やすとSGAに確保される領域が大きくなりますが、 ORA-00020が発生した場合重大な障害となるため必ず十分な余裕を持った値を設定します。

・processesの値は適正だったが不明な接続が急増した場合
急増した接続がアプリケーションからの接続であった場合はコネクションの解放漏れ等アプリケーション側の不具合の可能性が高いためアプリケーションの接続及び切断の処理を見直します。 なお、コネクションの解放漏れであった場合大抵の場合アイドル状態のセッション(V$SESSIONのSTATUS列がACTIVE以外のセッション)が大量に残った状態になるためV$SESSIONやV$PROCESSを確認します。

確認

プロセス及びそのプロセスのセッションはV$PROCESS及びV$SESSIONにより確認することができます。 なお、接続方法やプロセスの種類によってV$SESSION、V$PROCESSのいずれかにしかないデータがあるため完全外部結合で確認します。

SELECT * FROM V$SESSION A FULL OUTER JOIN V$PROCESS B ON A.PADDR=B.ADDR

主に以下のような項目を確認することができます。
V$PROCESS
・プロセス名

V$SESSION
・接続ユーザ名
・接続元のOSユーザ名
・接続時刻
・現在の状態(アイドルであるか、処理を実行中であるか)

★ORACLE案件承ります