AIX-maxuproc参数案例
发布日期:2021-05-14 17:50:29 浏览次数:23 分类:精选文章

本文共 1187 字,大约阅读时间需要 3 分钟。

转自-----------http://blog.chinaunix.net/uid-14877370-id-2782044.html

AIX系统对资源的管理有一些特定的限制,比如进程的最大数量。这个参数叫做maxuproc,可以表示“单个用户允许的最大进程数”。如果一个用户试图创建超过这个参数值的进程,就会导致失败。

对于Oracle数据库来说,更为特殊。假设数据库处于私有模式(Exclusive Mode),那么每个客户端连接都需要在数据库服务器上创建一个独立的进程来处理。这意味着如果maxuproc这个参数设置得过低,就容易因进程数量限制而出现问题。

然而,maxuproc的默认值可能并不是非常高。例如,我们的一个实例中,发现maxuproc被设置为2000,这时候数据库就无法支持超过这个数量的进程。当晚,我们对一个Oracle数据库进行了数据迁移,将部分schema迁移到另一个数据库上。这次迁移是在晚上完成的,之后系统仍能正常运行。

第二天,我们接收到了报警,提示无法连接到数据库。检查Oracle的监听日志后,发现有以下错误信息:

  • TNS-12500: TNS:listener failed to start a dedicated server process
  • TNS-12540: TNS:internal limit restriction exceeded
  • TNS-12560: TNS:protocol adapter error
  • TNS-00510: Internal limit restriction exceeded
  • IBM/AIX RISC System/6000 Error: 11: Resource temporarily unavailable

错误提示表明,连接过程中发生了资源限制被超过的问题。为了深入分析,我们检查了当前系统的进程数限制:

db_XXX:/home/oracle$ lsattr -El sys0 | grep maxuproc
maxuproc 2000 Maximum number of PROCESSES allowed per user True

结果显示,maxuproc被设置为2000。与此同时,我们发现当前系统中的Oracle进程数为1995个,接近但未超过限制。

但显然,前一天迁移后的系统耗能较高,导致进程数量超过限制。这时候,我们知道唯一的解决方法就是增加maxuproc的值。

执行以下命令来增大参数值:

chdev -l sys0 -a maxuproc='3000'

这种方式可以在相同设备中增加进程数的上限,从而解决连接问题。

经过调整后,系统能够正常运行。这个问题提醒我们,在进行数据库迁移或对数据库配置进行调整时,必须充分考虑资源限制和负载状况。

上一篇:ORA-03113:通信通道的文件结尾
下一篇:local_listener参数作用

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年04月24日 16时24分37秒