ORA-00020: maximum number of processes (150) exceeded

本文介绍了在遇到ORA-00020错误时,即数据库最大连接数超出限制的问题。文章详细描述了故障情况,分析了无法登录数据库并尝试通过重启服务器进行故障排查的场景,最后提醒了恢复服务时开启监听和注册的注意事项。
1、故障描述

厂家反映数据库连不上
这里写图片描述

登上去看,报ORA-00020,数据库连接数达到了数据库的最大连接数

[oradba@szpwgddb01:/oracle/app/product/11.2.0/db_1/dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Mar 8 15:09:42 2018

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

ERROR:
ORA-00020: maximum number of processes (150) exceeded
2、故障分析

数据库已经登不进去了,查看 $ORACLE_HOME/dbs/ 下也没有pfile文件,只能申请服务器重启

3、故障解决
[oradba@szpwgddb01:/home/oradba]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Mar 8 15:17:33 2018

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 5010685952 bytes
Fixed Size                  2261848 bytes
Variable Size             939527336 bytes
Database Buffers         4060086272 bytes
Redo Buffers                8810496 bytes
Database mounted.
Database opened.

SQL> show parameter processes;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes                      integer     1
db_writer_processes                  integer     1
gcs_server_processes                 integer     0
global_txn_processes                 integer     1
job_queue_processes                  integer     1000
log_archive_max_processes            integer     4
processes                            integer     150

SQL> alter system set processes=500 scope=spfile;

System altered.

SQL> create pfile from spfile;

File created.

SQL> shutdown immediate;

SQL> startup

SQL> show parameter processes;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes                      integer     1
db_writer_processes                  integer     1
gcs_server_processes                 integer     0
global_txn_processes                 integer     1
job_queue_processes                  integer     1000
log_archive_max_processes            integer     4
processes                            integer     500   --修改成功

别忘记开监听并注册

<think>好的,用户遇到了错误信息“system limit exceeded-see manual”,需要了解其原因和解决方法。首先,我得分析这个错误可能的来源。根据引用[1]提到的执行时间超限,可能与资源限制有关,比如内存、进程数或文件句柄。引用[2]提到Oracle的权限问题,但用户的问题更偏向系统层面的限制。 接下来,我需要考虑不同的系统或软件可能触发此类错误。数据库如Oracle可能在达到系统参数限制时抛出此错误,例如超出最大连接数。操作系统方面,可能是用户进程数超过ulimit设置,或者内存不足。应用服务器如Tomcat也可能有自身的资源限制。 解决方案方面,应该分情况讨论。如果是数据库问题,检查并调整相关参数,比如processes和sessions。如果是系统限制,需要修改ulimit配置,临时或永久调整。应用服务器则需要查看其配置文件的资源设置。此外,用户可能需要检查应用程序是否存在资源泄漏,优化代码,或者联系管理员调整系统策略。 最后,生成相关问题,帮助用户进一步排查。例如询问具体上下文,调整参数的方法,如何检查资源使用情况,以及优化应用程序的建议。确保回答结构清晰,步骤明确,并引用提供的参考资料中的相关部分,如执行时间超限的例子,但需结合当前错误类型。</think>### 错误信息 "system limit exceeded-see manual" 的含义及解决方法 #### 错误原因分析 1. **系统资源超限** 当应用程序或服务(如数据库、Web服务器等)尝试使用的系统资源(如内存、进程数、文件句柄等)超过操作系统或软件本身设定的上限时,会触发此错误。例如: - 数据库连接池耗尽(如Oracle的`PROCESSES`参数限制)[^2] - 操作系统对用户的进程数限制(通过`ulimit -u`查看) - 内存分配超出系统允许范围 2. **配置限制** 某些软件(如Oracle、Tomcat等)会在配置文件中定义资源使用上限。例如: ```sql -- Oracle中若超出`PROCESSES`参数限制,可能报错: ORA-00020: maximum number of processes (100) exceeded ``` 3. **应用程序设计缺陷** 代码中未正确释放资源(如数据库连接未关闭、文件句柄未回收)可能导致资源逐渐耗尽。 --- #### 解决步骤 1. **定位具体资源类型** - 检查错误日志中是否有附加说明(如`ORA-00020`明确指向进程数限制) - 使用系统命令快速排查: ```bash # 查看进程数 ps -ef | grep [进程名] | wc -l # 查看内存使用 free -h # 查看文件句柄数 lsof | wc -l ``` 2. **调整系统/软件限制** - **操作系统层面** 修改`/etc/security/limits.conf`(需root权限): ```conf * soft nproc 65535 # 进程数 * hard nofile 65535 # 文件句柄 ``` - **数据库层面(以Oracle为例)** 调整`PROCESSES`和`SESSIONS`参数: ```sql ALTER SYSTEM SET PROCESSES=500 SCOPE=SPFILE; ALTER SYSTEM SET SESSIONS=555 SCOPE=SPFILE; ``` 3. **优化应用程序** - 使用连接池管理数据库连接 - 确保代码中`try-with-resources`(Java)或`using`(C#)等自动释放资源机制 - 减少长时间占用资源的操作 --- #### 典型场景示例 1. **Oracle数据库报错** ```sql ORA-00020: maximum number of processes (100) exceeded ``` **解决方法**: - 执行`ALTER SYSTEM SET PROCESSES=300 SCOPE=SPFILE;`后重启数据库[^2] 2. **PHP脚本超限** 类似引用[1]中的`Maximum execution time`错误,可通过修改`php.ini`: ```ini max_execution_time = 60 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值