1. ASMM 정의 10g 부터 SGA 구성 요소 ( Buffer Pool , Shared Pool , Large Pool , Java Pool) 메모리를 동적으로 조정가능할 수 있게되었으며 이를 ASMM 기능이라 한다. 원래 Buffer Cache는 db_cache_size , Shared Pool 은 shared_pool_size , Large Pool은 large_pool_size 파라미터를 통해 변경되며 이들 파라미터를 변경하면 Oracle Instance는 재 기동이 되어야 함.
ASMM은 재 기동없이 이들 메모리 값을 동적으로 변경가능하게 한다. 이를 위해 SGA_TARGET , SGA_MAX_TARGET 이라는 신 파라미터가 도입됨.
2. ASMM 파라미터 할당
SGA_TARGET은 동적으로 조정될 수 있는 SGA값이며 , SGA_MAX_SIZE는 SGA가 최대로 할당 될 수 있는 값임.
만일 SGA_TARGET=250M , SGA_MAX_SIZE=400M 라면 SGA는 최소 250M부터 할당되어 최대 400M 까지 설정 가능함.
SGA_TARGET의 경우 운영중 동적으로 변경가능하나 SGA_MAX_SIZE는 운영중 그 값을 변경할 수 없음.
SGA_TARGET은 ALTER SYSTEM SET SGA_TARGET=400M SCOPE=BOTH 로 SPFILE 과 MEMORY에 동시 적용 가능.
그러나 SGA_MAX_SIZE 는 ALTER SYSTEM SET SGA_MAX_SIZE=500M SCOPE=SPFILE 로 SPFILE 파일에만 변경 적용 가능하며 운영중에는 변경이 불가능함.
SGA_TARGET은 SGA_MAX_SIZE보다 커질 수 없기때문에 이와 같이 파라미터를 설정할 경우 DB는 기동되지 않음. pfile 을 통해 파라미터를 SGA_TARGET 값을 SGA_MAX_SIZE보다 작게 설정한 후 STARTUP PFILE로 기동 필요.
SGA_TARGET을 특정값으로 설정하고 DB_CACHE_SIZE,SHARED_POOL_SIZE가 0 으로 설정하면 DB에서 자동으로 이들을 최적화된 값으로 재 설정해 줌. DB_CACHE_SIZE등의 값이 미리 설정되어 있다면 DB는 최소한 설정된 해당 값이상으로 메모리를 할당함.
만일 DB_CACHE_SIZE + SHARED_POOL_SIZE + LARGE_POOL_SIZE + JAVA_POOL_SIZE 가 SGA_TARGET 또는 SGA_MAX_SIZE보다 크다면 ASMM 값을 무시하고 설정된 DB_CACHE_SIZE , SHARED_POOL_SIZE , LARGE_POOL_SIZE , JAVA_POOL_SIZE 값으로 메모리를 할당함.
3. AMM
11g 부터는 기존 SGA메모리 뿐만 아니라 서버 프로세스의 메모리도 동적으로 조정가능할 수 있게 함. 즉 PGA_AGGREGATE_TARGET 까지 합산된 총 메모리 조정.
이를 위해 MEMORY_TARGET 과 MEMORY_MAX_TARGET 파라미터가 도입됨.
4. AMM 파라미터 할당
ASMM과 유사하게 MEMORY_TARGET은 동적으로 조정될 수 있는 메모리 값이며 , MEMORY_MAX_TARGET은 동적으로 최대 할당될 수 있는 메모리 값임. MEMORY_TARGET=400M , MEMORY_MAX_TARGET=500M로 설정하면 SGA+PGA는 최소 400M에서 최대 500M 까지 변경 가능.
ASMM과 마찬가지로 MEMORY_TARGET은 운영중 동적으로 변경 가능하나 MEMORY_MAX_TARGET은 운영중 그 값을 변경할 수 없으며 MEMORY_TARGET은 MEMORY_MAX_TARGET보다 반드시 같거나 작아야 함. 만일 MEMORY_TARGET 파라미터를 설정하지 않고 MEMORY_MAX_TARGET 값만 설정할 경우 MEMORY_TARGET은 MEMORY_MAX_TARGET 값과 동일하게 설정됨.
AMM을 적용할 경우 SGA_TARGET 및 PGA_AGGREGATE_TARGET을 0으로 설정하며 DB가 자동으로 SGA 및 PGA메모리를 할당함. 만일 SGA_TARGET 또는 DB_CACHE_SIZE,SHARED_POOL 등의 파라미터가 설정되어 있으며 대신 이들 파라미터 설정값을 메모리로 할당함.
SGA_MAX_SIZE + PGA_AGGREGATE_TARGET 이 MEMORY_MAX_SIZE 보다 클 경우 AMM은 무시하고 설정된 SGA_MAX_SIZE, PGA_AGGREGATE_TARGET 값을 사용함.