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

ORA-00020 進程數超限根因分析與應對策略

     編輯:Oracle 教學

錯誤現象

Alert 日志出現:ORA-00020: maximum number of processes (150) exceeded

直接原因

數據庫參數 processes=150 過小,無法容納當前連接數(含用戶會話、後台進程、並行查詢進程等)。

場景還原

  • 歷史庫,早期為安全考慮設置較小值
  • 應用連接池配置過大、未釋放
  • 開發工具直連生產庫佔用大量會話

排查與驗證 SQL

-- 當前進程使用情況
SELECT * FROM v$resource_limit WHERE resource_name = 'processes';

-- 會話來源分析
SELECT program, machine, COUNT(*) cnt
FROM v$session
GROUP BY program, machine
ORDER BY cnt DESC;

解決方案

  1. 臨時緩解:殺掉閒置/異常會話 ALTER SYSTEM KILL SESSION 'sid,serial#'
  2. 根治:增大 processes 參數(需重啟)
    ALTER SYSTEM SET processes=300 SCOPE=SPFILE; → 重啟實例
  3. 配套調整:sessions 通常 = processes * 1.1 + 5,transactions 同步調整
  4. 治理:
    - 限制應用連接池上限
    - 禁止生產庫直連(TOAD/PL/SQL Developer)
    - 啟用 Resource Manager 或 Profile 限制 SESSIONS_PER_USER

關聯錯誤

進程耗盡時,新連接常報 ORA-12537: TNS:connection closed 或 ORA-00018: maximum number of sessions exceeded。

官方文檔說明

Oracle 文檔指出:processes 定義作業系統用戶進程最大數,含後台進程;建議預留 10%-20% 緩衝。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved