本帖最后由 hgz6536 于 2012-02-10 11:55:45 编辑

解决方案 »

  1.   


    ORA-00020: maximum number of processes (%s) exceeded1. DB 版本多少? OS 版本?
    2. 应用是通过中间件连数据库还是直接连的,一般中间件可以控制连接数。
    2. 应用确实有这么多连接吗? 如果不是,检查下连接为什么没有释放,如果是,在内存足够的情况,调整一下process 参数值。 Oracle 服务器 进程中的 LOCAL=NO 和 LOCAL=YES
    http://blog.csdn.net/tianlesoftware/article/details/5675404Oracle sessions,processes 和 transactions 参数 关系 说明
    http://blog.csdn.net/tianlesoftware/article/details/6893561
      

  2.   

    系统 redhat as4 软件oracle9i 9.2.0.4,谢谢Dava老大,我先学习下你给的资料
      

  3.   

    发现并不起作用,进程杀不掉怎么个杀法? OS 的KILL -9 PID?
    还是DB的KILL SESSION?你终止了SHUTDOWN IMMEDIATE会出问题的,建议重新启动数据库再观察
      

  4.   

    如果系统在之前没有出现过如此多的进程,是突然出现的,一般有2种情况。1、客户端连接,一般一个pl/sql的一个窗口就是一个进程,开的多了,进程也就多了,再加上开发维护人员多了,那系统的进程自然多。可以看看近期是否有新的项目组成员进驻。2、中间件开发了新的程序,这个程序没有进行数据库连接关闭,导致系统的进程一直存在。直到爆掉。可以多关注下进程的增长,或者增加一个job,来定时采样进程数,找到24小时内的进程变化趋势。
      

  5.   

    看了Dave给的资料和网上的许多帖子,都是用系统命令kill -9 直接杀死,但是这样做有么有弊端呢?会不会给数据库造成不可估计的伤害,如何能判断如此大量的进程是不是僵死的进程,担心如果进程是活动的,会对数据库造成不良影响。