Как проверить максимальное количество разрешенных подключений к базе данных Oracle? - PullRequest
78 голосов
/ 02 октября 2008

Как лучше всего использовать SQL для проверки максимального числа соединений, разрешенных для базы данных Oracle? В конце я хотел бы показать текущее количество сеансов и общее количество разрешенных, например, «В настоящее время используется 23 из 80 соединений».

Ответы [ 7 ]

109 голосов
/ 02 октября 2008

При определении количества соединений, поддерживаемых базой данных Oracle, могут действовать несколько различных ограничений. Простейшим подходом будет использование параметра SESSIONS и V $ SESSION, т.е.

Количество сеансов, в которых база данных была настроена для разрешения

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

Количество активных в данный момент сеансов

SELECT COUNT(*)
  FROM v$session

Как я уже сказал, существуют и другие потенциальные ограничения как на уровне базы данных, так и на уровне операционной системы, а также в зависимости от того, был ли настроен общий сервер. Если общий сервер игнорируется, вы можете достичь предела параметра PROCESSES, прежде чем достигнете предела параметра SESSIONS. И вы можете выйти за пределы операционной системы, потому что для каждого сеанса требуется определенный объем оперативной памяти.

29 голосов
/ 02 октября 2008

Я думал, что это будет работать, основываясь на этом источнике .

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

Однако Джастин Кейв прав. Этот запрос дает лучшие результаты:

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'
27 голосов
/ 26 сентября 2014

Параметр сеансов получен из параметра процессов и изменяется соответствующим образом при изменении количества макс. Процессов. См. Oracle документы для получения дополнительной информации.

Чтобы получить только информацию о сессиях:

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

Попробуйте показать информацию об обоих:

    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
------------- ------------------- --------------- -----------
processes                      96             309         500
sessions                      104             323         792
4 голосов
/ 05 февраля 2015

Используйте gv $ session для RAC, если вы хотите получить общее количество сеансов в кластере.

3 голосов
/ 14 сентября 2017

v $ resource_limit Представление мне настолько интересно, чтобы заглянуть в сеансы оракула, процессы ..:

https://bbdd -error.blogspot.com.es / 2017/09 / CHECK-сеансов-и-процессы предела-in.html

3 голосов
/ 16 июня 2014

Примечание: это отвечает только на часть вопроса.

Если вы просто хотите узнать максимально допустимое количество сеансов, вы можете выполнить в 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

Параметр сессий - это то, что вам нужно.

1 голос
/ 05 июня 2010
select count(*),sum(decode(status, 'ACTIVE',1,0)) from v$session where type= 'USER'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...