oracle最大进程数 processes sessions 概念与修改

    技术2022-05-19  20

    整理了下最近查阅的资料

     

    查看oracle的最大并发数限制,可是查看v$license视图其实,该试图中的SESSIONS_CURRENT就等于select count(*) from v$session where TYPE = 'USER'show parameter license_max_sessions    //查看最大并发数,如果是0,则默认是无限制,但如果在初始化文件里说明了,就以初始化文件为主

     

    1.process 和session的概念:

     

    sessions

    在初始化参数所设定的限制中,最为人所知的估计就是sessions和processes

    Sessions 参数指定了一个 Instance中能够同时存在的sessions数量,或者说,就是能同时登陆到数据库的并发用户数。通常,我们设定这个数字时需要考虑我们可能会有多少个同时连接到

    数据库的并发用户,并加上后台进程的进程数,最后乘与1.1.

    比如说,估计系统中可能会同时有100个用户连接到数据库,那么,你的session最少应该为

    (100 + 10 ) * 1.1 = 121

    当数据库连接的并发用户已经达到这个值时,又有新session连进来,就会报错

    00018, 00000, "maximum number of sessions exceeded"

    // *Cause: All session state objects are in use.

    // *Action: Increase the value of the SESSIONS initialization parameter.

     

     Processes

    和Sessions是类似的是processes这个参数。

    Processes参数指定了Instance在OS层面所能同时运行的进程数。基于和sessions设定同样的考虑,我们在设定processes时,也应考虑我们可能会有多少个同时连接到数据库的并发用户,并

    加上后台进程的进程数。

    当然,在MTS(shared server)的配置下,这个值的确定会有所不同。应该是普通后台进程+最大共享服务器的进程数(max_shared_servers) + 最大Dispatcher进程数(max_dispatchers).

    另外,由于在window平台中,Oracle是以单一一个进程的形式存在,Processes 参数变成了限制Oracle进程里的线程数了。

    当Oracle需要启动新的process而又已经达到processes参数时,就会报错:

    00020, 00000, "maximum number of processes (%s) exceeded"

    // *Cause: All process state objects are in use.

    // *Action: Increase the value of the PROCESSES initialization parameter.

     

    sessions=1.1*processes + 5

     

    2 修改processes 与 sessions

    使用sys,以sysdba权限登录:SQL> show parameter processes;NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------aq_tm_processes                      integer     1db_writer_processes                  integer     1job_queue_processes                  integer     10log_archive_max_processes            integer     1processes                            integer     150SQL> alter system set processes=300 scope = spfile;系统已更改。SQL> show parameter processes;NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------aq_tm_processes                      integer     1db_writer_processes                  integer     1job_queue_processes                  integer     10log_archive_max_processes            integer     1processes                            integer     150SQL> create pfile from spfile;文件已创建。 重启数据库,

    SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup ORACLE 例程已经启动。

       SQL> show parameter processes;NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------aq_tm_processes                      integer     1db_writer_processes                  integer     1job_queue_processes                  integer     10log_archive_max_processes            integer     1processes                            integer     300   搞定!

     

    主要参考-》http://blog.sina.com.cn/s/blog_539eb6a901000b7g.html

                    http://guolr.javaeye.com/blog/549692


    最新回复(0)