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


90

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

답변:


121

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

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

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

현재 활성화 된 세션 수

SELECT COUNT(*)
  FROM v$session

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


죄송합니다.이 쿼리를 어떻게 실행할 수 있습니까? 내가받을거야 "테이블 또는 존재하지 뷰", "브이 $ 세션에서 SELECT COUNT (*)"에 대한
마을 주민

3
@ yin03-사용중인 Oracle 사용자가 v$session보기 에 대한 권한이 없음을 의미합니다 . DBA에게 해당 권한을 부여해달라고 요청해야합니다. 대부분의 select any dictionary경우 select_catalog_role역할 또는 해당 개체에 대한 직접 부여도 작동 하지만 권한을 원할 것입니다.
Justin Cave

36

세션 으로부터 파생 된 매개 변수 를 처리 매개 변수 및 최대 프로세스 수를 변경하면 그에 따라 변경됩니다. 자세한 정보는 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

34

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

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'

죄송합니다.이 쿼리를 어떻게 실행할 수 있습니까? 내가받을거야 "테이블 또는 존재하지 뷰", "브이 $ 세션에서 SELECT COUNT (*)"에 대한
마을 주민

2
@ yin03 Oracle 또는 다른 유형의 데이터베이스를 사용하고 있습니까? Oracle의 경우 권한 문제 일 수 있습니다.
JosephStyons

1
완벽한 쿼리 @JosephStyons!
Gaurav

@guarav, 유용하다는 것을 알게되어 기쁩니다!
JosephStyons

4

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

허용되는 최대 세션 수만 알고 싶다면 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

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


4

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



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.