PGA와UGA Monitor
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍
실무교육센터
(신입사원채용무료교육, 오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷)
PGA(Program Global Area)는 하나의 단일 프로세스(server or background)에 대한 데이터와 제어 정보를 가지고 있는 메모리 공간 입니다. PGA는 다음과 같은 요소로 구성 됩니다.
- Stack Space
PGA는 항상 stack space를 포함하며 이곳에는 세션 변수, 배열과 같은 것들이 저장 됩니다.
- Session 정보 – (UGA)
Multi-Thread 서버 환경(Shared Server 환경)이 아닌 경우 PGA는 private SQL area등과 같은 사용자에 대한 추가적인 세션 정보를 필요로 합니다. 만약 Multi-Thread 서버 환경이라면 이러한 정보는 PGA에 위치하지 않으며 SGA의 Shared Pool에 저장 됩니다.
- Shared SQL Areas
Multi-Thread 서버의 여부와 관계없이 Shared SQL Area는 PGA가 아니라 항상 SGA의 shared memory 영역 안에 위치 합니다.
- Non-shared and Writable
PGA는 프로세스간 공유할 수 없는 영역이며 write가 가능한 영역입니다.
UGA(User Global Area)는 dedicated server 환경에서 오라클 서버에 접속한 각각의 세션에 대해 할당되는 메모리 공간으로 PGA내에 위치 합니다. 이와는 달리 Shared Server 환경(Multi-Thread 서버 환경)에서는 이러한 메모리 영역을 SGA의 Shared Pool에 저장 합니다.
아래는 PGA와 UGA의 상태를 확인 할 수 있는 SQL 문장 입니다.
SELECT
s.sid sid
, lpad(s.username,12) oracle_username
, lpad(s.osuser,9) os_username
, s.program session_program
, lpad(s.machine,8) session_machine
, (select ss.value from v$sesstat ss, v$statname sn
where ss.sid = s.sid and
sn.statistic# = ss.statistic# and
sn.name = 'session pga memory') session_pga_memory
, (select ss.value from v$sesstat ss, v$statname sn
where ss.sid = s.sid and
sn.statistic# = ss.statistic# and
sn.name = 'session pga memory max') session_pga_memory_max
, (select ss.value from v$sesstat ss, v$statname sn
where ss.sid = s.sid and
sn.statistic# = ss.statistic# and
sn.name = 'session uga memory') session_uga_memory
, (select ss.value from v$sesstat ss, v$statname sn
where ss.sid = s.sid and
sn.statistic# = ss.statistic# and
sn.name = 'session uga memory max') session_uga_memory_max
FROM
v$session s
ORDER BY session_pga_memory DESC
/
댓글 없음:
댓글 쓰기