ASMM, AMM 메모리 관리기법
- 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으로 설정하기를 권장)
- STATISTICS_LEVEL Parameter 값이 typical 또는 ALL 로 설정
-
ASMM 설정하기(DB shutdown이 필요합니다.)
-
alter system set sga_max_size=10240m scope=spfile;
alter system set sga_target=10240m scope=spfile;
-
-
alter system checkpoint; 3회 실시
shutdown immediate;
-
startup;
-
아래 해당 변경된 내용을 조회 합니다.
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;
- 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의 값 까지 지정할 수 있습니다.
-
- 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 ;
-
-
alter system checkpoint; 3회 실시
shutdown immediate;
-
startup;
-
아래 해당 변경된 내용을 조회 합니다.
show parameter memory_max_target
show parameter memory_target