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

时间:2020-03-06 15:01:33  来源:igfitidea点击:

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

解决方案

基于此消息,我认为这会奏效。

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'

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

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

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

当前活动的会话数

SELECT COUNT(*)
  FROM v$session

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

select count(*),sum(decode(status, 'ACTIVE',1,0)) from v$session where type= 'USER'