Jak sprawdzić maksymalną liczbę dozwolonych połączeń do bazy danych Oracle?

Jaki jest najlepszy sposób, używając SQL, aby sprawdzić maksymalną liczbę połączeń, która jest dozwolona dla bazy danych Oracle? Na koniec chciałbym pokazać aktualną liczbę sesji i całkowitą dozwoloną liczbę, np. "obecnie używane są 23 z 80 połączeń".

 66
Author: Niklas Gustavsson, 2008-10-02

7 answers

Istnieje kilka różnych ograniczeń, które mogą pojawić się przy określaniu liczby połączeń obsługiwanych przez bazę danych Oracle. Najprostszym podejściem byłoby użycie parametru SESSIONS I V$SESSION, czyli

Liczba sesji, na które została skonfigurowana baza danych

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

Liczba aktualnie aktywnych sesji

SELECT COUNT(*)
  FROM v$session

Jak już wspomniałem, istnieją jednak inne potencjalne limity zarówno na poziomie bazy danych, jak i na poziomie systemu operacyjnego i w zależności od czy serwer współdzielony został skonfigurowany. Jeśli serwer współdzielony jest ignorowany, możesz również trafić limit parametru process przed naciśnięciem limitu parametru SESSIONS. I możesz trafić limity systemu operacyjnego, ponieważ każda sesja wymaga pewnej ilości pamięci RAM.

 100
Author: Justin Cave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-02 13:53:36

Myślałem, że to zadziała, na podstawie tego źródła .

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
Jednak Justin Cave ma rację. To zapytanie daje lepsze wyniki:
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'
 27
Author: JosephStyons,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-02 14:02:06

Parametr sessions pochodzi z parametru processes i zmienia się odpowiednio po zmianie liczby max procesów. Więcej informacji można znaleźć w Oracle docs.

Aby uzyskać tylko informacje o sesjach:

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

Spróbuj to pokazać informacje o obu:

    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
 22
Author: FuePi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-26 14:00:46

Użyj GV$session dla RAC, jeśli chcesz uzyskać całkowitą liczbę sesji w całym klastrze.

 4
Author: Tom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-05 18:44:03

Uwaga: To odpowiada tylko na Część pytania.

Jeśli chcesz tylko znać maksymalną liczbę dozwolonych sesji, możesz wykonać w sqlplus, jako sysdba:

SQL> show parameter sessions

To daje wyjście takie jak:

    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

Parametr sessions jest tym, czego chcesz.

 3
Author: botkop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-16 08:10:49

V$resource_limit widok jest dla mnie tak interesujący,aby spojrzeć na sesje, procesy oracle..:

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

 2
Author: fdominguez.bbdd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-14 05:58:51
select count(*),sum(decode(status, 'ACTIVE',1,0)) from v$session where type= 'USER'
 1
Author: saris mohammad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-17 16:54:24