IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Oracle:关于会话与Processes

    Adamhuan发表于 2017-03-30 07:54:15
    love 0

    一、问题的表现

    有时候,客户端连接数据库服务器的时候可能遇到这样的错误:

    [oracle@ora12c-1 admin]$ sqlplus system@enmy
    
    SQL*Plus: Release 12.2.0.1.0 Production on Thu Mar 30 15:30:43 2017
    
    Copyright (c) 1982, 2016, Oracle.  All rights reserved.
    
    Enter password: 
    ERROR:
    ORA-12537: TNS:connection closed
    
    
    Enter user-name:

    造成该错误的原因可能有两个:
    1. $ORACLE_HOME/bin/oracle的权限不正确?(很少是这种情况)
    2. 数据库服务端的process进程数满(比较可能是这个问题)

    在我的环境中,模拟的该错误发生的时候,服务器的alert日志会如下呈现:

    Thu Mar 30 15:33:41 2017
    ORA-00020: maximum number of processes (40) exceeded
     ORA-20 errors will not be written to the alert log for
     the next minute. Please look at trace files to see all
     the ORA-20 errors.
    Process m000 submission failed with error = 20

    当前的参数的设置:

    SYS@enmy --> col name for a12
    SYS@enmy --> col value for a8
    SYS@enmy --> select name,type,value from v$parameter where name in ('processes','sessions');
    
    NAME               TYPE VALUE
    ------------ ---------- --------
    processes             3 40
    sessions              3 82
    
    SYS@enmy -->

    当前的会话情况:
    set linesize 400
    set pagesize 300
    col program for a30
    col username for a10
    col osuser for a14
    col machine for a14
    select
    a.program,a.osuser,a.type,a.sid,a.serial#,a.paddr,a.username,a.machine,a.command,a.status,a.schema#,a.schemaname,
    b.TEMPORARY_TABLESPACE,b.username
    from
    v$session a,dba_users b
    where
    a.schemaname = b.username;

    SYS@enmy --> select
      2  a.program,a.osuser,a.type,a.sid,a.serial#,a.paddr,a.username,a.machine,a.command,a.status,a.schema#,a.schemaname,
      3  b.TEMPORARY_TABLESPACE,b.username
      4  from
      5  v$session a,dba_users b
      6  where
      7  a.schemaname = b.username;
    
    PROGRAM                        OSUSER         TYPE              SID    SERIAL# PADDR            USERNAME   MACHINE           COMMAND STATUS      SCHEMA# SCHEMANAME                     TEMPORARY_TABLESPACE           USERNAME
    ------------------------------ -------------- ---------- ---------- ---------- ---------------- ---------- -------------- ---------- -------- ---------- ------------------------------ ------------------------------ ----------
    oracle@ora11gdg1 (W000)        oracle         BACKGROUND         62         19 00000000F52FBF98            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (SMCO)        oracle         BACKGROUND         60         31 00000000F5308838            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (Q001)        oracle         BACKGROUND         57          1 00000000F5304558            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (QMNC)        oracle         BACKGROUND         54          9 00000000F53023E8            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (ARC2)        oracle         BACKGROUND         51          1 00000000F5300278            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (MMON)        oracle         BACKGROUND         49          1 00000000F52F5B48            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (SMON)        oracle         BACKGROUND         48          1 00000000F52F39D8            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (LGWR)        oracle         BACKGROUND         47          1 00000000F52F1868            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (MMAN)        oracle         BACKGROUND         46          1 00000000F52EF6F8            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (DBRM)        oracle         BACKGROUND         45          1 00000000F52ED588            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (GEN0)        oracle         BACKGROUND         44          1 00000000F52EB418            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (PSP0)        oracle         BACKGROUND         43          1 00000000F52E92A8            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (ARC0)        oracle         BACKGROUND         42          5 00000000F52FE108            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (Q000)        oracle         BACKGROUND         17          1 00000000F53034A0            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (ARC3)        oracle         BACKGROUND         14          1 00000000F5301330            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (ARC1)        oracle         BACKGROUND         12          3 00000000F52FF1C0            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (NSS2)        oracle         BACKGROUND         11          1 00000000F52FAEE0            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (CJQ0)        oracle         BACKGROUND         10         13 00000000F5307780            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    sqlplus@ora11gdg1 (TNS V1-V3)  oracle         USER                9          7 00000000F52F8D70 SYS        ora11gdg1               3 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (MMNL)        oracle         BACKGROUND          8          1 00000000F52F6C00            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (RECO)        oracle         BACKGROUND          7          1 00000000F52F4A90            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (CKPT)        oracle         BACKGROUND          6          1 00000000F52F2920            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (DBW0)        oracle         BACKGROUND          5          1 00000000F52F07B0            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (DIA0)        oracle         BACKGROUND          4          1 00000000F52EE640            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (DIAG)        oracle         BACKGROUND          3          1 00000000F52EC4D0            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (VKTM)        oracle         BACKGROUND          2          1 00000000F52EA360            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (PMON)        oracle         BACKGROUND          1          1 00000000F52E81F0            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               65          1 00000000F530EC88 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               64         17 00000000F530CB18 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               61         11 00000000F53066C8 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               59          5 00000000F530A9A8 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               24          7 00000000F530DBD0 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               23         37 00000000F52FD050 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               22         19 00000000F5305610 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               20         19 00000000F53098F0 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               19         17 00000000F530BA60 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    
    36 rows selected.
    
    SYS@enmy -->

    上面的会话都是我在其他的机器上模拟出来的。

    现在断掉其中的一个的远程连接,看看这个数字会不会降下来:

    [oracle@ora11gdg2 ~]$ sqlplus system@enmy
    
    SQL*Plus: Release 11.2.0.4.0 Production on Thu Mar 30 15:13:29 2017
    
    Copyright (c) 1982, 2013, Oracle.  All rights reserved.
    
    Enter password: 
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    SYSTEM@enmy --> exit
    Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    [oracle@ora11gdg2 ~]$

    服务端再次查看:

    SYS@enmy --> /
    
    PROGRAM                        OSUSER         TYPE              SID    SERIAL# PADDR            USERNAME   MACHINE           COMMAND STATUS      SCHEMA# SCHEMANAME                     TEMPORARY_TABLESPACE           USERNAME
    ------------------------------ -------------- ---------- ---------- ---------- ---------------- ---------- -------------- ---------- -------- ---------- ------------------------------ ------------------------------ ----------
    oracle@ora11gdg1 (W000)        oracle         BACKGROUND         62         19 00000000F52FBF98            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (SMCO)        oracle         BACKGROUND         60         31 00000000F5308838            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (Q001)        oracle         BACKGROUND         57          1 00000000F5304558            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (QMNC)        oracle         BACKGROUND         54          9 00000000F53023E8            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (ARC2)        oracle         BACKGROUND         51          1 00000000F5300278            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (MMON)        oracle         BACKGROUND         49          1 00000000F52F5B48            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (SMON)        oracle         BACKGROUND         48          1 00000000F52F39D8            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (LGWR)        oracle         BACKGROUND         47          1 00000000F52F1868            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (MMAN)        oracle         BACKGROUND         46          1 00000000F52EF6F8            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (DBRM)        oracle         BACKGROUND         45          1 00000000F52ED588            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (GEN0)        oracle         BACKGROUND         44          1 00000000F52EB418            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (PSP0)        oracle         BACKGROUND         43          1 00000000F52E92A8            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (ARC0)        oracle         BACKGROUND         42          5 00000000F52FE108            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (Q000)        oracle         BACKGROUND         17          1 00000000F53034A0            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (ARC3)        oracle         BACKGROUND         14          1 00000000F5301330            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (ARC1)        oracle         BACKGROUND         12          3 00000000F52FF1C0            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (NSS2)        oracle         BACKGROUND         11          1 00000000F52FAEE0            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (CJQ0)        oracle         BACKGROUND         10         13 00000000F5307780            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    sqlplus@ora11gdg1 (TNS V1-V3)  oracle         USER                9          7 00000000F52F8D70 SYS        ora11gdg1               3 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (MMNL)        oracle         BACKGROUND          8          1 00000000F52F6C00            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (RECO)        oracle         BACKGROUND          7          1 00000000F52F4A90            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (CKPT)        oracle         BACKGROUND          6          1 00000000F52F2920            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (DBW0)        oracle         BACKGROUND          5          1 00000000F52F07B0            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (DIA0)        oracle         BACKGROUND          4          1 00000000F52EE640            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (DIAG)        oracle         BACKGROUND          3          1 00000000F52EC4D0            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (VKTM)        oracle         BACKGROUND          2          1 00000000F52EA360            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    oracle@ora11gdg1 (PMON)        oracle         BACKGROUND          1          1 00000000F52E81F0            ora11gdg1               0 ACTIVE            0 SYS                            TEMP                           SYS
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               65          1 00000000F530EC88 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               64         17 00000000F530CB18 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               61         11 00000000F53066C8 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               59          5 00000000F530A9A8 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               24          7 00000000F530DBD0 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               23         37 00000000F52FD050 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               22         19 00000000F5305610 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    sqlplus@ora11gdg2 (TNS V1-V3)  oracle         USER               19         17 00000000F530BA60 SYSTEM     ora11gdg2               0 INACTIVE          5 SYSTEM                         TEMP                           SYSTEM
    
    35 rows selected.
    
    SYS@enmy -->

    确实降了一个。

    这时候,再连就没有问题了:

    [oracle@ora12c-1 ~]$ sqlplus system@enmy
    
    SQL*Plus: Release 12.2.0.1.0 Production on Thu Mar 30 15:34:32 2017
    
    Copyright (c) 1982, 2016, Oracle.  All rights reserved.
    
    Enter password: 
    ERROR:
    ORA-12537: TNS:connection closed
    
    
    Enter user-name: ^C
    [oracle@ora12c-1 ~]$ 
    [oracle@ora12c-1 ~]$ sqlplus system@enmy
    
    SQL*Plus: Release 12.2.0.1.0 Production on Thu Mar 30 15:44:32 2017
    
    Copyright (c) 1982, 2016, Oracle.  All rights reserved.
    
    Enter password: 
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    SQL>

    二、问题的解决:

    增加参数processes的值

    参数【processes】是初始化参数,修改该参数需要重启数据库服务

    修改:

    SYS@enmy --> select name,type,value from v$parameter where name in ('processes','sessions');
    
    NAME               TYPE VALUE
    ------------ ---------- --------
    processes             3 40
    sessions              3 82
    
    SYS@enmy --> 
    SYS@enmy --> show parameter pfile                       
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    spfile                               string      /u01/app/oracle/product/11.2.0
                                                     /dbhome_1/dbs/spfileenmy.ora
    SYS@enmy --> 
    SYS@enmy --> alter system set processes=190 scope=spfile;
    
    System altered.
    
    SYS@enmy -->

    重启数据库服务:

    SYS@enmy --> startup force
    ORACLE instance started.
    
    Total System Global Area 2505338880 bytes
    Fixed Size                  2255832 bytes
    Variable Size             620758056 bytes
    Database Buffers         1862270976 bytes
    Redo Buffers               20054016 bytes
    Database mounted.
    Database opened.
    SYS@enmy --> 
    SYS@enmy -->

    这里,我实验环境,使用【force】的方式重启数据库。
    如果是正式环境,还是按照正常步骤一步步的来,比较好。

    再次查看参数的配置:

    SYS@enmy --> select name,type,value from v$parameter where name in ('processes','sessions');
    
    NAME               TYPE VALUE
    ------------ ---------- --------
    processes             3 190
    sessions              3 308
    
    SYS@enmy -->

    可以看到,参数processes已经被修改了。

    ——————————————
    Done。



沪ICP备19023445号-2号
友情链接