生產庫突發 ORA-12520: TNS:listener could not find available handler,實為進程數參數 PROCESSES 耗盡。記錄完整排查與解決流程。
ORA-12520sqlplus "/ as sysdba" 報:ORA-00020: maximum number of processes (150) exceeded與開發溝通:前晚新業務上線,連接數暴增,超過預設 PROCESSES=150。
# 1. 停止監聽(避免新連入)
lsnrctl stop
# 2. 強制清理殭屍連接(謹慎操作)
ps -ef | grep LOCAL=NO | awk '{print $2}' | xargs kill -9
# 3. 增加 PROCESSES 參數(需重啟實例生效)
sqlplus / as sysdba
SQL> ALTER SYSTEM SET PROCESSES=650 SCOPE=SPFILE;
System altered.
# 4. 重啟資料庫
SQL> SHUTDOWN IMMEDIATE;
Database closed. Database dismounted. ORACLE instance shut down.
SQL> STARTUP;
ORACLE instance started. Database mounted. Database opened.
# 5. 啟動監聽
lsnrctl start
| 參數 | 預設 | 建議值 | 說明 |
|---|---|---|---|
| PROCESSES | 150 | 預估最大連接數 × 1.5 | 衍生 SESSIONS、TRANSACTIONS |
| SESSIONS | PROCESSES × 1.1 + 5 | 自動衍生 | 實際會話上限 |
| TRANSACTIONS | SESSIONS × 1.1 | 自動衍生 | 交易槽上限 |