Failed to commit the transaction: … caused by: ORA-00018: maximum number of sessions exceeded在commit的时候,发送了异常!
在oracle官方的解释是,会话超限导致的问题,但是会话超限的话,是不是会导致connection不上?也不会已经connection到的连接commit时候会异常啊。 

解决方案 »

  1.   

    -- 请参考:
    http://weiyingjun.blog.hexun.com/50994330_d.html
      

  2.   


    Diagnoses:
    SSQL> conn system/change_on_install as sysdba;
    Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 
    Connected as SYS1、find session hight water
    SQL>  select  *  from v$licenseSESSIONS_MAX SESSIONS_WARNING SESSIONS_CURRENTSESSIONS_HIGHWATER  USERS_MAX
    ------------ ---------------- ---------------- ------------------ ----------
               0                0                4                83          02、Current  parameter process and session
    SQL> show parameter processNAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    aq_tm_processes                      integer     0
    db_writer_processes                  integer     1
    job_queue_processes                  integer     0
    log_archive_max_processes            integer     2
    processes                            integer     150SQL> show parameter sessionNAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    java_max_sessionspace_size           integer     0
    java_soft_sessionspace_limit         integer     0
    license_max_sessions                 integer     0
    license_sessions_warning             integer     0
    logmnr_max_persistent_sessions       integer     1
    mts_sessions                         integer     0
    session_cached_cursors               integer     0
    session_max_open_files               integer     10
    sessions                             integer     170
    shared_server_sessions               integer     0Resolution:SQL> alter system set processes=300 scope=spfile;
    SQL> alter system set sessions=320 scope=spfile;
    SQL> shutdown immediate;
    SQL> startup;参照

    ORA-00018: maximum number of sessions exceeded
      

  3.   

    奇怪的是,为什么你执行 SQL 时 Oracle 不说超过 session 限制而是在提交时才报错呢?
      

  4.   


    有可能!因为在你的连接建立时session数量还没有超过阀值,当你commit时,数据库的session数已经超过阀值了,所以会提醒。我以前貌似也遇到过类似问题。你最好去检查一下数据库的session数是否已经超过阀值。如果超过的话,检查一下是什么应用建立了如此多的连接数。