はじめに
とあるプログラムでOracleへの接続、切断を繰り返す処理があり、途中でORA-12516のエラーとなってしまいました。
ORA-12516: TNS: リスナーは、一致するプロトコル・スタックが使用可能なハンドラを検出できませんでした。
ざっくり言うと
- listener.logのログにORA-12516が出力される
- ORA-12516は同時に接続できるプロセス数を超えたときに発生することがある
- 初期化パラメタPROCESSESの値を増やすことで回避できる
最大接続数を確認する
Oracleには、同時に接続するプロセス数を制限するパラメタがあります。以下のクエリで、データベースに同時に接続できるOSのユーザー・プロセスの最大数を確認できます。
connect sys/oracle as sysdba show parameter PROCESSES;