首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

ORA-12520 與 ORA-00020 連續排查:進程數耗盡導致監聽無可用 Handler

     編輯:Oracle 教學

ORA-12520 與 ORA-00020 連續排查:進程數耗盡導致監聽無可用 Handler

生產庫突發 ORA-12520: TNS:listener could not find available handler,實為進程數參數 PROCESSES 耗盡。記錄完整排查與解決流程。

錯誤現象

  • PL/SQL Developer 間歇性連線失敗:ORA-12520
  • 伺服器 sqlplus "/ 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

參數調整建議

驗證

SQL> SHOW PARAMETER PROCESSES;
NAME         TYPE   VALUE
------------ ------ -----
processes    integer 650

# 應用端連線測試通過,ORA-12520 消失

總結

  1. ORA-12520 往往是 ORA-00020 的表象:監聽無可用 Server Process
  2. 與開發溝通是關鍵:確認業務上線、連接池配置、是否洩漏
  3. 參數調整需重啟:SCOPE=SPFILE + SHUTDOWN/STARTUP
  4. 事後優化:檢查連接池大小、啟用 DRCP、監控 V$RESOURCE_LIMIT
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
參數預設建議值說明
PROCESSES150預估最大連接數 × 1.5衍生 SESSIONS、TRANSACTIONS
SESSIONSPROCESSES × 1.1 + 5自動衍生實際會話上限
TRANSACTIONSSESSIONS × 1.1自動衍生交易槽上限