[sql] Oracle 데이터베이스에 허용되는 최대 연결 수를 확인하는 방법은 무엇입니까?

SQL을 사용하여 Oracle 데이터베이스에 허용되는 최대 연결 수를 확인하는 가장 좋은 방법은 무엇입니까? 마지막으로 현재 세션 수와 허용 된 총 수 (예 : “현재 80 개 연결 중 23 개 사용 중”)를 보여주고 싶습니다.



답변

Oracle 데이터베이스가 지원하는 연결 수를 결정하는 데에는 몇 가지 다른 제한이 있습니다. 가장 간단한 방법은 SESSIONS 매개 변수와 V $ SESSION을 사용하는 것입니다.

데이터베이스가 허용하도록 구성된 세션 수

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

현재 활성화 된 세션 수

SELECT COUNT(*)
  FROM v$session

내가 말했듯이 데이터베이스 수준과 운영 체제 수준 및 공유 서버가 구성되었는지 여부에 따라 다른 잠재적 인 제한이 있습니다. 공유 서버가 무시되면 SESSIONS 매개 변수의 한계에 도달하기 전에 PROCESSES 매개 변수의 한계에 도달 할 수 있습니다. 그리고 각 세션에는 일정량의 RAM이 필요하기 때문에 운영 체제 제한에 도달 할 수 있습니다.


답변

세션 으로부터 파생 된 매개 변수 를 처리 매개 변수 및 최대 프로세스 수를 변경하면 그에 따라 변경됩니다. 자세한 정보는 Oracle 문서 를 참조하십시오 .

세션에 대한 정보 만 얻으려면 :

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

두 가지에 대한 정보를 표시하려면 다음을 시도하십시오.

    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
------------- ------------------- --------------- --- --------
프로세스 96309500
세션 104323792


답변

이 소스를 기반으로 이것이 작동 할 것이라고 생각했습니다 .

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

그러나 Justin Cave가 옳습니다. 이 쿼리는 더 나은 결과를 제공합니다.

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'


답변

참고 : 이것은 질문의 일부에만 대답합니다.

허용되는 최대 세션 수만 알고 싶다면 sqlplus에서 sysdba로 실행할 수 있습니다.

SQL> show parameter sessions

이것은 다음과 같은 출력을 제공합니다.

    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

세션 매개 변수는 원하는 것입니다.


답변

클러스터 전체의 총 세션 수를 얻으려면 RAC에 gv $ session을 사용하십시오.


답변

v $ resource_limit보기는 oracle 세션, 프로세스를 한눈에보기 위해 저에게 매우 흥미 롭습니다 .. :

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'