Oracle

게시글 보기
작성자 유건데이타 등록일 2015-07-15
제목 PGA 와 UGA 의 SIZE 구하기
PGA 와 UGA 의 SIZE 구하기
-----------------------------
Program Global Area 는 1 user 가 connect 되어 1 session 이 create 되면
PGA 가 allocate 되는데 이는 non_shared memory 이다.
PGA 는 항상 stack space 를 가지는데 이 space 에는 session 의 variable,
array와 그 외 필요한 정보를 저장한다.
PGA 의 size는 OPEN_LINKS, DB_FILES, LOG_FILES 에 의해 결정된다.
또 이는 open_cursors, session_cached_cursors, sort_arae_size,
sort_area_retained_size 에도 dependent 하다.

PGA는 UGA(for dedicated connections)와 call heaps(all connections)의
parent heap으로 이들 heap가 커지면 따라서 커진다.
이 PGA의 size 는 다음을 통해 구할 수 있다.

select a.sid, c.username, b.name, a.value
from v$sesstat a, v$statname b, v$session c
where a.statistic# = b.statistic#
and c.sid = a.sid
and (b.name like '%pga%' or b.name like '%uga%')
and c.username <> ' '
order by a.sid, b.name;

또한 client process에 대응되는 shadow process의 size를 알 수 있다 .

참고)

The fixed PGA is static in size and the doc probably means this.
However the PGA is the parent heap for the UGA (for dedicated connections)
and
the call heaps (all connections) and as such will grow as these heaps grow.
Memory freed from these heaps are freed to the PGA but will not then be
released back to the OS (on most Unix platforms using malloc() libraries
even if the free PGA space was freed back using free() the memory would
still be allocated to the Unix process as it is rare for a malloc package
to shrink back a process size (using sbrk()).


from otn
오라클 유지보수 유건데이타
Comment
등록된 코멘트가 없습니다.