ASMM, AMM 메모리 관리기법


ASMM, AMM 메모리 관리기법

 
 

  1. ASMM(Automatic Shared Memory Management)
  • 9i 까지는 SGA 구성요소인 shared_pool, large pool, DB Buffer Cache 등에 대해서 DBA가 모니터링을 하다가 수동으로 크기를 늘려주곤 하였습니다. (예 : alter system set shared_pool_size=40M scope spfile; )

     
     

  • 10g에서 등장한 ASMM은 이러한 사항을 해소시키기 위해 등장하였고 SGA구성 요소 중 Shared pool, DB buffer cache, Large pool, Java pool, Streams Pool 주요구성요소에 관하여 Oracle이 스스로 현재 부하상황을 판단하여 메모리를 관리할 수 있는 방법을 내놓았습니다.

     
     

  • 여기에서 Oracle 스스로 부하상황을 체크하기 위해 나온것이 MMAN 프로세스 입니다. MMAN 프로세스는 5분 마다 주기적으로 수집한 작업부하(Workload) 정보를 바탕으로 동적으로 구성 되며, 메모리는 필요한 곳으로 동적으로 할당이 되게 됩니다.

 
 

  • ASMM을 사용하기 위한 조건은 아래와 같습니다.
    • STATISTICS_LEVEL Parameter 값이 typical 또는 ALL 로 설정
    • SGA_TARGET Parameter 값을 0 보다 큰 값으로 설정(0은 사용하지 않음을 의미)
    • SGA_MAX_SIZE : ASMM에서 사용할 최대값을 지정합니다. SGA_TARGET : 이 값에서 ASMM이 이루어지게 됩니다. SGA_MAX_SIZE와 SGA_TARGET은 동일한 값으로 설정하길 권장합니다.
    • 위에서 설명한 SGA 구성요소들의 값은 0으로 설정(0 이상의 값이 설정되어 있다면 그 값을 최소값으로 인식하기 때문에 0으로 설정하기를 권장)

 
 

  • ASMM 설정하기(DB shutdown이 필요합니다.)
    • alter system set sga_max_size=10240m scope=spfile;

      alter system set sga_target=10240m scope=spfile;

       
       

  1. alter system checkpoint; 3회 실시

    shutdown immediate;

     
     

  2. startup;

     
     

  3. 아래 해당 변경된 내용을 조회 합니다.

    show parameter sga_max_size

    show parameter sga_target

     
     

  • ASMM으로 관리되는 SGA 구성요소에 대하여 아래 쿼리를 이용하여 관찰할 수 있습니다.

    select component, current_size/1024/1024 curr_MB, min_size/1024/1024 min_MB,

    user_specified_size/1024/1024 user_MB

    from v$sga_dynamic_components;

     
     

     
     

  1. AMM(Auto Memory Management)
  • Oracle은 9i부터는 PGA를 WORKAREA_SIZE_POLICY, PGA_AGGREGATE_TARGET 등의 Parameter를 이용하여 자동으로 관리하는 방식을 써 왔습니다.

 
 

  • 10g에서도 마찬가지로 SGA는 ASMM방식 + PGA는 WORKAREA_SIZE_POLICY, PGA_AGGREGATE_TARGET 을 이용하여 관리가 되었습니다.

 
 

  • 11g에서 등장한 AMM 관리 기법은 SGA+PGA를 자동으로 관리하는 방식으로 발전하게 됩니다.

 
 

  • AMM 관리 기법이 등장하면서 아래 2가지 Parameter가 생겼습니다.
    • MEMORY_TARGET : AMM 기능 사용시 사용할 수 있는 Memory의 총 량을 정할 수 있습니다.

      이 Parameter가 0이면 AMM을 사용하지 않는다는 뜻이며, 최대 설정 값은 MEMORY_MAX_TARGET의 값 까지 지정할 수 있습니다.

  1. MEMORY_MAX_TARGET : MEMORY_TARGET 값이 최대로 증가될 값을 지정합니다.

 
 

  • AMM 기능을 사용하게 된다면 SGA_TARGET, PGA_AGGREGATE_TARGET의 값을 0으로 지정하는 것이 좋습니다.

    ASMM과 마찬가지로 0이 아닌 경우 그 값을 최소값으로 인식하기 때문입니다.

     
     

  • AMM 방식 설정하기(DB shutdown이 필요합니다.)
    • alter system set memory_max_target=3G scope=spfile ;

      alter system set memory_target=3G scope=spfile ;

       
       

  1. alter system checkpoint; 3회 실시

    shutdown immediate;

     
     

  2. startup;

     
     

  3. 아래 해당 변경된 내용을 조회 합니다.

    show parameter memory_max_target

    show parameter memory_target

      


Comments

comments

haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

ASMM, AMM 메모리 관리기법”의 2개의 댓글

  • 2018-09-24 4:54 오전
    Permalink

    Hey! I know this is kind of off topic but I was wondering which blog platform are you using for this website? I’m getting sick and tired of WordPress because I’ve had problems with hackers and I’m looking at alternatives for another platform. I would be fantastic if you could point me in the direction of a good platform.

    댓글달기
  • 2019-09-08 3:20 오전
    Permalink

    I like this weblog very much, Its a real nice situation to read and find information. “Acceptance of dissent is the fundamental requirement of a free society.” by Richard Royster.

    댓글달기

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다