Как лучше всего использовать SQL для проверки максимального количества подключений, разрешенных для базы данных Oracle? В конце концов, я хотел бы показать текущее количество сеансов и общее допустимое количество, например. "В настоящее время используется 23 из 80 подключений".
Как проверить максимальное количество разрешенных подключений к базе данных Oracle?
Ответ 1
Есть несколько разных ограничений, которые могут возникнуть при определении количества подключений, поддерживаемых базой данных Oracle. Самый простой подход - использовать параметр SESSIONS и V $SESSION, т.е.
Количество сеансов, в которые была настроена база данных, позволяющая
SELECT name, value
FROM v$parameter
WHERE name = 'sessions'
Количество активных сеансов
SELECT COUNT(*)
FROM v$session
Как я уже сказал, существуют другие потенциальные ограничения как на уровне базы данных, так и на уровне операционной системы и в зависимости от того, настроен ли общий сервер. Если общий сервер игнорируется, вы можете превзойти предел параметра PROCESSES, прежде чем вы достигнете предела параметра SESSIONS. И вы можете столкнуться с ограничениями операционной системы, поскольку каждый сеанс требует определенного объема оперативной памяти.
Ответ 2
Я думал, что это сработает, основываясь на этом источнике.
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'
Ответ 3
Параметр session выводится из параметра процессы и соответственно изменяется при изменении количества максимальных процессов. Дополнительную информацию см. В документах 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
Используйте сеанс gv $для RAC, если вы хотите получить общее количество сеансов в кластере.
Ответ 5
Примечание: это отвечает только на часть вопроса.
Если вы просто хотите узнать максимальное количество разрешенных сеансов, вы можете выполнить в 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 - это тот, который вы хотите.
Ответ 6
select count(*),sum(decode(status, 'ACTIVE',1,0)) from v$session where type= 'USER'
Ответ 7
v $resource_limit просмотр настолько интересен для меня, чтобы заглянуть в сеансы оракула, процессы..:
https://bbdd-error.blogspot.com.es/2017/09/check-sessions-and-processes-limit-in.html