하나의 오라클 세션에 할당할 수 있는 메모리는 PGA_AGGREGATE_TARGET를 통해 설정 가능하다.  주지해야 할 것은 PGA_AGGREGATE_TARGET 값이 한개의 오라클 세션값이 가지는 최대 메모리 크기가 아니라는 것이다. 즉 PGA_AGGREGATE_TARGET을  32GB로 설정하더라도 32G를 하나의 세션이 점유하여 사용하지 않는다. 

 
PGA_AGGREGATE_TARGET 설정값을 기반으로 Real Memory 의 사용값은 hidden parameter로 설정이 되며 , 이 hidden parameter를 통해 실제로 세션이 사용되는 메모리 값이 결정되며 보통 OLTP 세션에서는 최대 사용 가능한 세션 메모리는 PGA_AGGREGATE_TARGET의 5% 정도임.

주요 hidden parameter

1. _pga_max_size : 
  한개의 세션이 PGA영역에서 최대 사용가능한 메모리

  단 Serial Operation일 경우에 적용되며  Parallel Operation일 경우는 _smm_px_max_size를 따른다. 

2. _smm_max_size : 
  한개의 세션이 단일 operation에서 최대 사용 가능한 메모리. 
  
  여기서 단일 Operation 이란 sort 또는 hash join과 같이 PGA를 사용하는 Operation 중 하나라는 뜻임. 즉 _pga_max_size는 PGA내에서 수행하는 모든 Operation 들이   
최대 사용가능한 메모리, _smm_max_size는 단일 Operation이 사용 가능한 메모리임.
9i 이전에는 이런 단일 operation에 대한 max 메모리 설정이 Default 였음. 즉 SORT_AREAR_SIZE , HASH_AREA_SIZE 에 해당됨.

  Parallel Operation 일 경우에는 하나의 PQ가 단일 Operation에서 최대 사용가능한 메모리임. _smm_px_max_size 와 결합하여 PQ시 사용 메모리가 결정됨. 

3. _smm_px_max_size
   PQ 수행 시 DOP가 5 이상일 경우 _smm_px_max_size가 PGA 크기에 영향을 미침.  PQ 처리시 하나의 세션이 최대 사용 가능한 메모리. 

   _smm_px_max_size가 12G 일 경우 _smm_max_size가 1G , DOP 가 100개라면 세션이 차지하는 메모리는 12G로 제한된다. 즉 각 PQ가 가지는 _smm_max_size는 전체 12G를 넘지 않는 정도에서 동적으로 크기가 제한된다. 

4. Hidden parameter 로 해당 파라미터를 조회 할 경우 _smm_max_size 와 _smm_px_max_size는 KB 단위로 보이므로 유의할 것. 

5. 크기 설정
  Default 설정 크기는 아래와 같음 ( 정확하게 아래 룰을 따르는지는 추가 확인 필요 )
   5.1 _pga_max_size 의 경우는 PGA_AGGREGATE_TARGET의 5%가 부여됨. (PGA_AGGREGATE_TARGET의 크기가 매우 커지면 3%정도로 추정됨)
   5.2 _smm_max_size 는 _pga_max_size의 50% 임. 
   5.3 _smm_px_max_size는 PGA_AGGREGATE_TARGET의 50% 가 부여됨. 
   5.4 PGA_AGGREGATE_TARGET을 64G로 설정했을 때 
        _pga_max_size 는 2G, _smm_max_size 는 1G , _smm_px_max_size는 32G로 셋팅됨. 

+ Recent posts