sql - sesiones - ¿Cómo verificar el número máximo de conexiones permitidas a una base de datos Oracle?
numero maximo de sesiones oracle (7)
¿Cuál es la mejor manera, utilizando SQL, para verificar la cantidad máxima de conexiones permitidas para una base de datos Oracle? Al final, me gustaría mostrar el número actual de sesiones y el número total permitido, por ejemplo, "Actualmente, se utilizan 23 de las 80 conexiones".
El parámetro de sesiones se deriva del parámetro de procesos y cambia en consecuencia cuando se cambia el número de procesos máx. Consulte los documentos de Oracle para obtener más información.
Para obtener solo la información sobre las sesiones:
select current_utilization, limit_value
from v$resource_limit
where resource_name=''sessions'';
CURRENT_UTILIZATION LIMIT_VALUE ------------------- ----------- 110 792
Intenta esto para mostrar información sobre ambos:
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
Existen algunos límites diferentes que pueden intervenir para determinar el número de conexiones que admite una base de datos Oracle. El enfoque más simple sería usar el parámetro SESSIONS y V $ SESSION, es decir,
La cantidad de sesiones que la base de datos se configuró para permitir
SELECT name, value
FROM v$parameter
WHERE name = ''sessions''
La cantidad de sesiones actualmente activas
SELECT COUNT(*)
FROM v$session
Sin embargo, como ya he dicho, hay otros límites potenciales tanto a nivel de la base de datos como a nivel del sistema operativo y según si se ha configurado el servidor compartido. Si se ignora el servidor compartido, puede llegar al límite del parámetro PROCESOS antes de llegar al límite del parámetro SESIONES. Y puede alcanzar los límites del sistema operativo porque cada sesión requiere una cierta cantidad de RAM.
Nota: esto solo responde una parte de la pregunta.
Si solo quiere saber la cantidad máxima de sesiones permitidas, entonces puede ejecutar en sqlplus, como sysdba:
SQL> show parameter sessions
Esto le da un resultado como:
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
El parámetro de sesiones es el que quieres.
Pensé que esto funcionaría, basado en esta fuente .
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
Sin embargo, Justin Cave tiene razón. Esta consulta da mejores resultados:
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''
Use gv $ session para RAC, si desea obtener el número total de sesiones en el clúster.
v $ resource_limit view es tan interesante para mí para echar un vistazo a las sesiones de Oracle, a los procesos ..:
https://bbdd-error.blogspot.com.es/2017/09/check-sessions-and-processes-limit-in.html
select count(*),sum(decode(status, ''ACTIVE'',1,0)) from v$session where type= ''USER''