如何检查到Oracle数据库的最大允许连接数?


89

使用SQL检查Oracle数据库允许的最大连接数的最佳方法是什么?最后,我想显示当前的会话数和允许的总数,例如“当前使用80个连接中的23个”。

Answers:


120

确定Oracle数据库支持的连接数时可能会有一些不同的限制。最简单的方法是使用SESSIONS参数和V $ SESSION,即

数据库配置为允许的会话数

SELECT name, value 
  FROM v$parameter
 WHERE name = 'sessions'

当前活动的会话数

SELECT COUNT(*)
  FROM v$session

但是,正如我所说,在数据库级别和操作系统级别,以及是否已配置共享服务器,都存在其他潜在限制。如果忽略共享服务器,则在达到SESSIONS参数的限制之前,您很可能会达到PROCESSES参数的限制。您可能会遇到操作系统限制,因为每个会话都需要一定数量的RAM。


抱歉,我们如何运行此查询?我收到“ SELECT COUNT(*)FROM v $ session”的“表或视图不存在”
村民

3
@ yin03-这意味着您正在使用的任何Oracle用户都没有对该v$session视图的特权。您需要要求DBA授予您该特权。最有可能的是,您希望获得select any dictionary特权,尽管select_catalog_role对该对象的角色或直接授予也可以。
贾斯汀·凯夫

35

会话参数从推导过程参数,当你改变最大进程数随之改变。有关更多信息,请参见Oracle文档

仅获取有关会话的信息:

    select current_utilization, limit_value 
    from v$resource_limit 
    where resource_name='sessions';
CURRENT_UTILIZATION LIMIT_VALUE
------------------- -----------
                110792

尝试显示两者的信息:

    select resource_name, current_utilization, max_utilization, limit_value 
    from v$resource_limit 
    where resource_name in ('sessions', 'processes');
RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION LIMIT_VALUE
------------- ------------------- ---------------- --------
加工96309500
届会104323792

34

根据此消息,我认为这会起作用。

SELECT
  'Currently, ' 
  || (SELECT COUNT(*) FROM V$SESSION)
  || ' out of ' 
  || DECODE(VL.SESSIONS_MAX,0,'unlimited',VL.SESSIONS_MAX) 
  || ' connections are used.' AS USAGE_MESSAGE
FROM 
  V$LICENSE VL

但是,贾斯汀·凯夫(Justin Cave)是对的。该查询提供了更好的结果:

SELECT
  'Currently, ' 
  || (SELECT COUNT(*) FROM V$SESSION)
  || ' out of ' 
  || VP.VALUE 
  || ' connections are used.' AS USAGE_MESSAGE
FROM 
  V$PARAMETER VP
WHERE VP.NAME = 'sessions'

抱歉,我们如何运行此查询?我收到“ SELECT COUNT(*)FROM v $ session”的“表或视图不存在”
村民

2
@ yin03您正在使用Oracle还是其他类型的数据库?如果是Oracle,则可能是权限问题。
JosephStyons '16

1
完美的查询@JosephStyons!
Gaurav

@guarav,很高兴您发现它有用!
JosephStyons

4

注意:这只能回答部分问题。

如果只想知道允许的最大会话数,则可以在sqlplus中以sysdba的身份执行:

SQL> show parameter sessions

这将为您提供如下输出:

    NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size           integer     0
java_soft_sessionspace_limit         integer     0
license_max_sessions                 integer     0
license_sessions_warning             integer     0
sessions                             integer     248
shared_server_sessions               integer

session参数是您想要的参数。


4

如果要获取整个集群的会话总数,请对RAC使用gv $ session。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.