Как проверить максимальное количество разрешенных подключений к базе данных Oracle?
каков наилучший способ с помощью SQL проверить максимальное количество подключений, разрешенных для базы данных Oracle? В конце концов, я хотел бы показать текущее количество сеансов и общее количество разрешенных, например: "в настоящее время используется 23 из 80 соединений".
7 ответов:
существует несколько различных ограничений, которые могут быть использованы для определения количества соединений, поддерживаемых базой данных Oracle. Самым простым подходом было бы использовать параметр SESSIONS и V$SESSION, т. е.
количество сеансов, для которых была настроена база данных
SELECT name, value FROM v$parameter WHERE name = 'sessions'
количество активных сеансов
SELECT COUNT(*) FROM v$session
Как я уже сказал, Есть и другие потенциальные ограничения как на уровне базы данных, так и на рабочем системный уровень и в зависимости от того, был ли настроен общий сервер. Если общий сервер игнорируется, вы вполне можете достичь предела параметра PROCESSES до того, как вы достигнете предела параметра SESSIONS. И вы можете нажать ограничения операционной системы, потому что каждый сеанс требует определенного объема оперативной памяти.
Я думал, что это будет работать, основываясь на этот источник.
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'
The сеансы параметр является производным от процессы параметр и соответственно изменяется при изменении числа Маха процессов. Смотрите Oracle docs для получения дополнительной информации.
чтобы получить только информацию о сессиях:
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
Примечание: это только отвечает на часть вопроса.
Если вы просто хотите знать максимальное количество разрешенных сеансов, то вы можете выполнить в 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
параметр сеансов-это то, что вы хотите.
V$resource_limit view настолько интересен для меня,чтобы взглянуть на сеансы oracle, процессы..:
https://bbdd-error.blogspot.com.es/2017/09/check-sessions-and-processes-limit-in.html