본문 바로가기

Legacy/Oracle DBMS

[ORACLE] 오라클 메모리 설정 (AMM, ASSM)

 
운영하는 시스템 중 한 서버가
ORA-4031이 발생하며 서비스가 불가능해진 적 있었다.
 
.trc파일과 alert로그를 확인해보니,
SGA : allocation forcing component growth
이벤트가 발생하며
세션들이 처리되지 못하고 쌓이다보니
process수를 초과한 것이였음.
 
SGA_TARGET값이 설정 되어 있었지만
최소값이 설정이 되지 않아있었어서
db cache size가 확 작아져 있는 상태로 
여러 세션이 몰리면서 발생한 일이라고 생각한다. (standard라 정확한 원인을 밝힐 수 없음)
 
shared pool size, db buffer cache 사이즈를
최소 값으로 지정해주었지만

alter system set db_cache_size=10G spfile=both;
alter system set shared_pool_size=1G spfile=both;


ORA-4031이 발생 안 한다고는 장담을 할 수 없어서,
ASSM을 끄고 SGA component를 고정 값으로 설정해주기로 하였음.
 
 
💡ASSM
(Automatic Shared Memory Management) 
 : 오라클 9i부터 나온 SGA 메모리 관리 방법으로 
 SGA 전체 값(SGA_MAX_SIZE) 중에 자동으로 메모리 값을 각 component들에 할당 해주는 방식을 의미한다.

데이터베이스 버퍼캐시 , 리두로그버퍼, shared pool, large pool, java pool의 값을 고정으로 설정하는 것이 아닌,
오라클의 판단 하에 자동으로 조정하는 것을 의미함.
이러기 위해서는 SGA_TARGET 값은 >0으로 설정되어 있어야 한다.
ASSM을 사용한다면
SGA_MAX_SIZE= SGA_TARGET 이
오라클의 권고 사항임.

SGA_TARGET =0값으로 설정 되어 있으면
ASSM을 사용하지 않겠다 라는 의미이다.
즉, 데이터베이스 버퍼캐시 , 리두로그버퍼,
shared pool, large pool, java pool의 값을
수동으로 설정 해주어야 한다.

 
💡AMM (Auto Memory Management)
: 오라클 11g 이상부터 나온 개념으로
SGA값과 PGA 값 모두 자동으로 관리해주는 방식이다
이를 사용하기 위해서는 MEMORY_TARGET 값이 0보다 커야하며,
SGA_TARGET=0, PGA_AGGREGATE_TARGET =0으로 설정이 되어 있어야 한다. 
 
* AMM은 DBA가 있는 상황에서는 사용을 하지 않음.
AMM은 SGA<->PGA간 교류도 의미한다.
정렬이나 Hash 조인을 사용하는 경우
PGA의 영역을 이용해서 정렬한다.
이 때 SGA가 PGA의 메모리를 빌려 buffer cache로 가져다 쓰게 된다면,
이에 따라 디스크(TEMP Tablespace)에서 정렬/hash 작업을 하게 되므로 operation cost 변경 및 실행계획이 변하게 되어 성능에 영향을 줄 수 있으므로 AMM을 사용하는 것은 권고를 하지 않는다.
 
 
그래서 나는
✔️ASSM 사용 안함 (component 고정 설정)
✔️SGA값 증설
✔️현재와 같은 PGA 설정
으로 변경 예정이다.
 
그럴려면….
SGA_MAX_SIZE = 12G -> 18G
SGA_TARGET =0 로 변경
db_cache_size = 고정값 설정
shared_pool_size = 고정값 설정
java_pool_size = 고정값 설정
large_pool_size = 고정값 설정
으로 해야할 것이다.

현재 값)
SGA_TARGET = 12G
SGA_MAX_SIZE = 12G
PGA workarea_size_policy : auto
pga_aggregate_target : 6G 
 

🙋🏻‍♀️서버에서 물리메모리 중 오라클이 사용하는 값은 PGA + SGA인건가?
현재 그럼 6G+12G이므로 18G정도를 사용하고 있는 것인가..?
SGA 값 증설을 하려고 하는데 애매하군...ㅇㅅㅇ....
SGA 를 6G나 증설하게되면 총 24G인데,, 24G used/32G 이면 빡센 것 같기도하고,,,
-- 24.11.25 이후 보완 예정
 

💡 오라클에서 권고하는 component 별 비율
-- 24.11.25 이후 보완 예정
(오라클에 SR 오픈하였고 답변오는대로 보완해야지)