今天报了个异常  java.sql.SQLException: ORA-00018: maximum number of sessions exceeded
  想知道  oracle 在什么时候创建session 什么时候 关闭session 为什么会出这个问题
     我写的是个 无限循环  创建连接在循环外面创建的。。

解决方案 »

  1.   

    光看你现在的异常,应该是你程序创建的session数,超过了oracle的最大连接数processes。
      

  2.   


    SQL> show parameter sessionsNAME                                 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
    sessions                             integer     203
    shared_server_sessions               integer
    SQL> alter system set sessions = 300;
    alter system set sessions = 300
                     *
    ERROR at line 1:
    ORA-02095: specified initialization parameter cannot be modified
    SQL> alter system set sessions = 300 scope = spfile;System altered.
    你需要修改你的会话数
      

  3.   

    然后
    shutdown immediatestartup
      

  4.   

    另外可以考虑在创建session前做一些判断和处理
      

  5.   

    因为session多少要根据主机的硬件配置决定,不是可以随意增加的
      

  6.   

    不能只设定sessions数,
    实际上sessions是由processes决定的:sessions = processes * 1.1 + 5
    在10g里只需设置processes数据就行了,oracle会根据上述公式自行设置sessions数