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'