it-source

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

criticalcode 2023. 3. 27. 21:18
반응형

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

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

Oracle 데이터베이스가 지원하는 연결 수를 결정할 때 적용되는 몇 가지 제한 사항이 있습니다.가장 간단한 방법은 SESSION 파라미터와 V$SESSION을 사용하는 것입니다.

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

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

현재 활성 세션 수

SELECT COUNT(*)
  FROM v$session

단, 앞서 설명한 바와 같이 데이터베이스 레벨과 운영체제레벨 모두에서 공유 서버가 설정되어 있는지 여부에 따라서는 다른 제한이 있을 수 있습니다.공유 서버를 무시하면 SESSIONS 파라미터의 제한에 도달하기 전에 PROCESS 파라미터의 제한에 도달하는 경우가 있습니다.또, 각 세션에 일정량의 RAM이 필요하기 때문에, operating system의 제한에 도달할 가능성이 있습니다.

sessions 파라미터processes 파라미터에서 파생되며 이에 따라 최대 프로세스 수를 변경하면 변경됩니다.자세한 내용은 Oracle 문서를 참조하십시오.

세션에 대한 정보만 가져오려면 다음 절차를 수행합니다.

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

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

    select resource_name, current_utilization, max_utilization, limit_value 
    from v$resource_limit 
    where resource_name in ('sessions', 'processes');
RESOURCE_NAME CURRENT_ULITION MAX_ULITION LIMIT_VALUE------------- ------------------- --------------- -----------프로세스 96 309 500세션 104 323 792

소식통에 의하면 이게 효과가 있을 줄 알았어요

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

하지만 저스틴 동굴이 옳다.이 쿼리는 더 나은 결과를 제공합니다.

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'

주의: 이는 질문의 일부에 대한 답변일 뿐입니다.

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

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

sessions 파라미터는 원하는 파라미터입니다.

클러스터 전체의 총 세션 수를 가져오려면 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'

언급URL : https://stackoverflow.com/questions/162255/how-to-check-the-maximum-number-of-allowed-connections-to-an-oracle-database

반응형