Comment vérifier le nombre maximal de connexions autorisées à une firebase database Oracle?

Quelle est la meilleure façon d’utiliser SQL pour vérifier le nombre maximal de connexions autorisées pour une firebase database Oracle? Au final, je voudrais montrer le nombre actuel de sessions et le nombre total autorisé, par exemple “Actuellement, 23 des 80 connexions sont utilisées”.

Il existe différentes limites pour déterminer le nombre de connexions sockets en charge par une firebase database Oracle. L’approche la plus simple serait d’utiliser le paramètre SESSIONS et V $ SESSION, c’est-à-dire

Le nombre de sessions que la firebase database a été configurée pour autoriser

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

Le nombre de sessions actuellement actives

 SELECT COUNT(*) FROM v$session 

Comme je l’ai dit, il existe d’autres limites potentielles tant au niveau de la firebase database qu’au niveau du système d’exploitation et selon que le serveur partagé a été configuré ou non. Si le serveur partagé est ignoré, vous pouvez bien atteindre la limite du paramètre PROCESSES avant que vous atteigniez la limite du paramètre SESSIONS. Et vous pouvez atteindre les limites du système d’exploitation car chaque session nécessite une certaine quantité de RAM.

Je pensais que cela fonctionnerait, basé sur cette source .

 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 

Cependant, Justin Cave a raison. Cette requête donne de meilleurs résultats:

 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' 

Le paramètre sessions est dérivé du paramètre processes et change en conséquence lorsque vous modifiez le nombre de processus max. Consultez la documentation Oracle pour plus d’informations.

Pour obtenir uniquement les informations sur les sessions:

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

Essayez ceci pour montrer des informations sur les deux:

  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
 ------------- ------------------- --------------- --- --------
 processus 96 309 500
 sessions 104 323 792

Utilisez gv $ session pour RAC, si vous souhaitez obtenir le nombre total de sessions sur le cluster.

Remarque: cela ne répond qu’à une partie de la question.

Si vous voulez simplement connaître le nombre maximal de sessions autorisées, vous pouvez exécuter sqlplus, en tant que sysdba:

 SQL> show parameter sessions 

Cela vous donne une sortie comme:

  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 

Le paramètre sessions est celui que vous voulez.

v La vue $ resource_limit est tellement intéressante pour moi que pour jeter un œil sur les sessions Oracle, les processus ..:

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'