usuarios una sesiones numero maximo developer datos conexiones conectarse conectar aumentar sql oracle

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.



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