Processes参数设置过小导致错误
NinGoo's blog

Processes参数设置过小导致错误

如果初始化参数processes设置过小,新的连接请求将无法接入,而一些backgroup process也将出现错误,比如新的job queue process将无法创建。

alertSID.log中可以发现类似下面的错误记录:

Thu Jul 05 19:58:37 2007
Process J000 died, see its trace file
Thu Jul 05 19:58:37 2007
kkjcre1p: unable to spawn jobq slave process
Thu Jul 05 19:58:37 2007
Errors in file g:\database\admin\XXX\bdump\xxx_cjq0_2336.trc:

Thu Jul 05 20:00:56 2007
Process m001 died, see its trace file
Thu Jul 05 20:00:56 2007
ksvcreate: Process(m001) creation failed

我在Oracle10.2.0.3的测试中,发现如果当前系统中的process数目已经达到初始化参数processes-1以后,新的sqlplus连接将报告连接到空闲实例:

E:\>sqlplus /nolog

SQL*Plus: Release 10.2.0.3.0 – Production on Fri Jul 6 09:53:48 2007

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

@>conn / as sysdba
Connected to an idle instance.

无觅相关文章插件,快速提升流量

本文网址:http://www.ningoo.net/html/2007/process_limit_error.html

订阅到Google | 收藏到Del.icio.us | 推荐到鲜果

上一篇: 下一篇:

本文Tags:

9 条评论

  • At 2007.07.07 01:50, 木匠 said:

    上周休假, 一个 Maximum Processes reached 错误, 终止了RAC数据库, 气愤.

    我计划修改一下 init.ora
    processes=2000
    sessions=1800
    以前sessions都是用的缺省值.

    • At 2007.07.07 11:01, NinGoo said:

      建议sessions设置得比processes稍微大点,因为一个process可能有多个session。默认情况下,sessions=1.1*processes+5

    • At 2007.07.07 13:21, 木匠 said:

      有趣, 什么情况下 一个 process 能有多个sessions ?

      • At 2007.07.07 14:40, NinGoo said:

        很多情况下都有可能啊,最常见的比如,你在sqlplus中启用autotrace,就在同一个process中创建了另外一个session来执行trace的

        • At 2007.07.08 12:43, 木匠 said:

          吘, 想起来了.
          那么这个Session 没有 产生另一个新的 Unix Process ?

          • At 2007.07.08 18:59, NinGoo said:

            不会的,非MTS的情况下,一个oracle process对应一个server process

      • At 2007.07.09 06:56, 木匠 said:

        同一个process中创建了另外一个session来执行trace的,
        这个新的Session 没有 产生另一个新的 Server Process?

        还是这两个 Sessions 共用一个 Server Process?

        多谢解释.

        • At 2007.07.09 09:00, NinGoo said:

          多个session共用一个process。你可以自己从v$session和v$process中看到相关信息

        • At 2007.07.10 13:22, 木匠 said:

          看了 eagle 关于 Default Profile 的帖子
          http://www.dbafan.com/blog/?p=127

          正好可以用 SESSIONS_PER_USER 用来限制 Max Processes.

          SQL>
          ALTER PROFILE app_user_profile LIMIT SESSIONS_PER_USER 200;
          ALTER USER app_online PROFILE app_user_profile;


          (Required)
          (Required, will not be published)