Oracle open_cursors、sessions、processes的理解与监控

来源:互联网 发布:linux svn服务器 同步 编辑:程序博客网 时间:2024/04/29 06:38
Oracle open_cursors、sessions、processes的理解与监控 



总的来说,一个连接可能产生多个sessions,一个sessions可能产生多个processes,同样,一个processes可能对应多个sessions;Oracle的sessions和processes的数量关系大概是:sessions=1.1 * processes + 5。



#查看当前DB中的进程、会话、游标的设置情况:
SQL> select value from v$parameter where name in ('processes','sessions','open_cursors');
VALUE
--------------------------------------------------------------------------------
1024
1568
800


#当前系统中运行的进程数:
SQL>  select count(*) from v$process; 
  COUNT(*)
----------
       366


#通过v$resource_limit视图可以查询/监控相关重要资源的限制值和使用情况:
SQL> select * from v$resource_limit;
Oracle <wbr>open_cursors、sessions、processes的理解与监控

视图中相关字估含义:
current_utilization - Number of (resources, locks, or processes) currently being used.
max_utization - Maximum consumption of the resource since the last instance start up.
initial_allocation - Initial allocation. This will be equal to the value specified for the resource in the initialization parameter file (UNLIMITED for infinite allocation).
limit_value - Unlimited for resources and locks. This can be greater than the initial allocation value (UNLIMITED for infinite limit).



Oracle 使用 init.ora 中的初始化参数 OPEN_CURSORS 指定一个会话一次最多可以拥有的游标数。


Sessions 参数指定了一个 Instance中能够同时存在的sessions数量,或者说,就是能同时登陆到数据库的并发用户数。通常,我们设定这个数字时需要考虑我们可能会有多少个同时连接到数据库的并发用户,并加上后台进程的进程数,最后乘与1.1.
sessions=(1.1*process+5)
比如说,估计系统中可能会同时有100个用户连接到数据库,那么,你的session最少应该为: (100 + 10 ) * 1.1 = 121
当数据库连接的并发用户已经达到这个值时,又有新session连进来,就会报错。


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