web-dev-qa-db-fra.com

Comment vérifier le nombre maximum de connexions autorisées à une base de données Oracle?

Quelle est la meilleure façon, en utilisant SQL, de vérifier le nombre maximal de connexions autorisé pour une base de données Oracle? En fin de compte, je voudrais montrer le nombre actuel de sessions et le nombre total autorisé, par ex. "Actuellement, 23 connexions sur 80 sont utilisées".

81

Il existe différentes limites qui peuvent entrer en jeu pour déterminer le nombre de connexions prises en charge par une base de données Oracle. L’approche la plus simple consisterait à utiliser le paramètre SESSIONS et V $ SESSION, c.-à-d.

Le nombre de sessions que la base de données a été configurée pour permettre

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, cependant, il existe d'autres limites potentielles à la fois au niveau de la base de données et 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 atteindre la limite du paramètre PROCESSES avant celle 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.

113
Justin Cave

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'
30
JosephStyons

Le paramètre sessions est dérivé du paramètre process et change en conséquence lorsque vous changer le nombre de processus max. Voir le 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 afficher 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 
 ------------- ------------------- ---- ----------- ----------- 
 traite 96 309 500 
 sessions 104 323 792 
28
FuePi

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

4
Tom

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

Si vous voulez juste connaître le nombre maximum de sessions autorisées, vous pouvez exécuter en 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.

3
botkop

la vue v $ resource_limit m’intéresse tellement de pouvoir jeter un coup d’œil sur les sessions et les processus Oracle ..:

https://bbdd-error.blogspot.com.es/2017/09/check-sessions-and-processes-limit-in.html

3
fdominguez.bbdd
select count(*),sum(decode(status, 'ACTIVE',1,0)) from v$session where type= 'USER'
1
saris mohammad