Oracle数据库中Sessions and Processes的概念总结_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2659 | 回复: 0   主题: Oracle数据库中Sessions and Processes的概念总结        下一篇 
white
注册用户
等级:少校
经验:1327
发帖:305
精华:0
注册:2011-7-21
状态:离线
发送短消息息给white 加好友    发送短消息息给white 发消息
发表于: IP:您无权察看 2015-4-7 17:44:43 | [全部帖] [楼主帖] 楼主

在做项目时遇到了连接不上数据库的问题,搜索错误之后发现原因在于进程数已经到达oracle的上限。但是不太明白oracle中的sessions和processes这两个参数的含义,于是摘录了一下网友的总结。

一、引言
经常有朋友会聊到sessions和processes这两个参数,所以很有必要了解一下这两个参数的概念。那什么是sessions和什么是processes呢?

二、Sessions的概念
Sessions参数指定了一个Instance中能够同时存在的sessions数量,或者说,就是能同时登陆到数据库的并发用户数。通常,我们设定这个参数时需要考虑我们可能会有多少个同时连接到数据库的并发用户,并加上后台进程的进程数,最后乘以1.1。
比如说,估计系统中可能会同时有100个用户连接到数据库,那么你的session最少应该为(100+10)*1.1 = 121.
在这里需要提一下的是:Sessions和Processes的关系
Oracle的连接数(sessions)与其参数文件中的进程数(processes)相关,它们的关系如下:

 sessions = (1.1*process + 5)


若资源允许,当当前process数过小,那么可以适当增大process数(session数依赖于process数,一般不会直接修改session数)。
当数据库连接的并发用户已经达到这个值时,又有新session连进来,就会报错:

 1 [oracle@yft dbs]$ oerr ORA 00018
2 00018, 00000, "maximum number of sessions exceeded"
3 // *Cause: All session state objects are in use.
4 // *Action: Increase the value of the SESSIONS initialization parameter.


Reference的介绍
北京联动北方科技有限公司

三、Processes的概念
Processes参数指定了Instance在OS层面所能同时运行的进程数。基于和sessions设定同样的考虑,我们在设定processes时,也应该考虑我们可能会有多少个同时连接到数据库的并发用户,并加上后台进程的进程数。
在MTS(shared server)的配置下,这个值是有所不同的。应该是普通后台进程+最大共享服务器的进程数(max_shared_servers)+最大Dispatcher进程数(max_dispatchers)。
另外,由于在windown平台中,Oracle是以单一一个进程的形式存在的,processes参数变成了限制Oracle进程的线程数。
关于processes应该设置多少的问题,只能根据实际情况来设置,设置成适当值是最好的,既不能设置的太小,又不能设置的太大。
下面两个例子:
当processes设置的比较小的时候,Oracle需要启动新的process而又已经达到processes参数时,就会报错:

----先查看一下当前processes的值----
1 SQL> show parameter processes;
2
3 NAME TYPE VALUE
4 ------------------------------------ ----------- ------------------------------
5 processes integer 150
6
----将processes的值设置的小一点----
7 SQL> alter system set processes=30 scope=spfile;
8
9 System altered.
10
11 SQL> shutdown immediate;
12 Database closed.
13 Database dismounted.
14 ORACLE instance shut down.
15 SQL> startup
16 ORACLE instance started.
17
18 Total System Global Area 330600448 bytes
19 Fixed Size 1336344 bytes
20 Variable Size 247466984 bytes
21 Database Buffers 75497472 bytes
22 Redo Buffers 6299648 bytes
23 Database mounted.
24 Database opened.
25
----当我打开多个session的时候就会启动一些processes,所以当processes超过30后就会有报错----
26 SQL> conn /as sysdba
27 ERROR:
28 ORA-00020: maximum number of processes (30) exceeded
29
30 [oracle@yft bin]$ oerr ORA 00020
31 00020, 00000, "maximum number of processes (%s) exceeded"
32 // *Cause: All process state objects are in use.
33 // *Action: Increase the value of the PROCESSES initialization parameter.
在这个时候的解决办法是增加processes的值,直接使用alter system set processes=xxx scope=spfile,再重启一下。

;
如果processes的值设置过大也是会有报错的:

----在原来30的基础上设置成5000----
1 SQL> alter system set processes=5000 scope=spfile;
2
3 System altered.
4
----重启的时候就会报错-----
5 SQL> startup force
6 ORA-04031: unable to allocate 70672 bytes of shared memory ("shared pool","unknown object","sga heap(1,0)","private strands")
7
8
----其实processes的值也是跟操作系统的内存有关系,在这里就应给processes的值太大,影响到了shared memory----
9
10 [oracle@yft ~]$ oerr ORA 04031
11 04031, 00000, "unable to allocate %s bytes of shared memory (\"%s\",\"%s\",\"%s\",\"%s\")"
12 // *Cause: More shared memory is needed than was allocated in the shared
13 // pool.
14 // *Action: If the shared pool is out of memory, either use the
15 // DBMS_SHARED_POOL package to pin large packages,
16 // reduce your use of shared memory, or increase the amount of
17 // available shared memory by increasing the value of the
18 // initialization parameters SHARED_POOL_RESERVED_SIZE and
19 // SHARED_POOL_SIZE.
20 // If the large pool is out of memory, increase the initialization
21 // parameter LARGE_POOL_SIZE.
解决办法:
通过spfile创建pfile,在pfile中修改一下processes的值,再用pfile创建spfile,最后启动数据库。

;
Reference中对processes的介绍:

北京联动北方科技有限公司

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论