DBAtlas · 数据库运维图谱

ORA-00020: maximum number of processes (N) exceeded(超出最大进程数 N)

Oracle

含义

实例的进程数达到了 PROCESSES 初始化参数定义的上限,无法创建新的连接/进程。新会话无法连接;甚至管理员也可能无法连接。

原因

应用连接池过大、连接从不关闭(泄漏)、并发用户多于预期,或 PROCESSES 参数设置过低,导致超出限制。有时挂起的后台作业或并行查询进程也会占用进程。

解决方法

可以用 sqlplus -prelim / as sysdba 连接,但此连接无法运行 SQL(无法查询 v$session);它只能用于 oradebug(例如 hanganalyze)和 SHUTDOWN ABORT。要释放槽位,在操作系统级别谨慎终止空闲的应用服务器进程(ps -ef | grep 'LOCAL=NO');然后用普通 SYSDBA 连接,通过 v$session/v$process 找出泄漏的会话,用 ALTER SYSTEM KILL SESSION 关闭它们。作为永久方案,增大 PROCESSES 并重启实例(如果 spfile 中显式设置了 SESSIONS,它不会被重新推导;也要一并更新)。在应用端,修正连接池最大值和空闲连接清理。

在 DBAtlas 中打开 →

同一数据库的其他条目