mingming

Oracle - 메모리 관리 본문

새싹 하이브리드 클라우드/Database

Oracle - 메모리 관리

mingming_96 2023. 10. 17. 20:46

공유 메모리 자동 관리 ( Automatic Shared Memory Management, ASMM )

공유 메모리 자동 관리를 사용하게 되면 MMAN 백그라운드 프로세스가 주기적으로 업무 부하에 따른 SGA 구성 요소( Shared Pool , Data Buffer cache, Large Pool, Java Pool )의 사용량을 파악합니다. 파악한 정보로 SGA_TARGET 파라미터가 지정한 범위 내에서 SGA 구성 요소의 크기를 동적으로 지정합니다. 

 

공유 메모리 자동 관리 장점 

  • SGA 관리 요소 감소 : 데이터베이스 관리자가 수행하던 SGA 구성 요소 크기 조정을 오라클이 자동으로 수행합니다.
  • 메모라 사용 효율 증가 : 부하에 따라 SGA 구성 요소의 크기가 동적으로 조정되어 메모리 사용 효율이 증가합니다.
  • 메모리 부족으로 인한 에러 발생 감소

공유 메모리 자동 관리 설정 

파라미터 내용
STATICS_LEVEL TYPICAL 또는 ALL로 설정, 자가 진단을 위한 통계치를 수집하는 레벨을 정의하는 파라미터 입니다.
BASIC : 통계를 수집하지 않습니다.
TYPICAL : 데이터베이스 통계를 수집합니다.
ALL : 운영체제 통계와 SQL 실행계획 통계를 추가로 수집합니다.
SGA_TARGET  SGA_TARGET 파라미터는 SGA_MAX_SIZE 파라미터 값 이하까지 데이터베이스 운영 중 동적으로 설정이 가능합니다.

 

공유 메모리 자동 관리 단점

  • 관리항목 증가 : MMAN 백그라운드 프로세스가 비정상 종료 시 장애 발생
  • 성능 저하 가능 : MMAN 백그라운드 프로세스의 추가적인 모니터링에 의한 자원 사용
  • 정확한 메모리 관리 어려움 : 리터럴 SQL등이 많은 경우 Shared Pool이 비정상적으로 커지는 현상이 발생

리터럴 SQL 

바인드 변수 처리를 하지 않아 하드 파싱을 일으키는 형태의 SQL을 의미합니다. 

 

공유 메모리 자동 관리할 수 없는 SGA 영역 

자동 관리는 불가능하지만 파라미터 값을 변경해 수동으로 조정이 가능합니다.

항목 내용
고정 영역 Shared Pool에 저장된 고정 영역 
다중 블록 데이터 버커 캐시 기본 데이터 버퍼 캐시를 제외한 DB_2k_CACHE_SIZE와 같은 파라미터로 지정된ㄴ 다중 블록 데이터 버퍼 캐시
고정 또는재활용 데이터 버퍼 캐시  DB_KEEP_CACHE_SIZE 또는 DB_RECYCLE_CACHE_SIZE로 지정되는 고정 또는 재활용 데이터 버퍼 캐시
리두 로그 버퍼 LOG_BUFFER로 설정하는 리두 로그 버퍼

 

메모리 값 설정

항목 내용
0 으로 설정 SGA 구성 요소의 값을 0으로 설정하면 MMAN 백그라운드 프로세스가 각 SGA 구성 요소의 크기를 자유롭게 증가시키고 감소시킵니다.
0 이 아닌 다른 값 SGA 구성 요소의 크기가 자동으로 변경되지만 사용자가 지정한 값이하로 감소하지 않습니다.  

 

메모리 자동 관리 확인

SELECT * FROM V$SGA_DYNAMIC_COMPONETES;

DESC V$SGA_DYNAMIC_COMPONENTS;

 

컬럼의 의미 

컬럼명 내용
COMPONENT SGA 구성 요소
CURRENT_SIZE 현재 SGA 구성 요소의 크기
MIN_SIZE 데이터베이스 시작 후 할당되었던 가장 작은 크기
MAX_SIZE 데이터베이스 시작 후 할당되었던 가장 큰 크기
USER_SPECIFIED_SIZE 사용자가 직접 설정한 SGA 구성 요소 크기(SGA 하한 값)
OPER_COUNT 데이터 베이스 시작 후 조정되었던 횟수
LAST_OPER_TYPE 가장 마지막으로 조정된 타입 
LAST_OPER_MODE 가장 마지막으로 조정된 방법 
LAST_OPER_TIME 가장 마지막으로 변경된 시간 
GRANULE_SIZE SGA 그래뉼 단위

 

LAST_OPER_TYPE 

  • STATIC : 데이터 베이스 시작 후 변동 없음
  • INITIALIZING : 초기화
  • GLOW : 크기 증가
  • SHRINK : 크기 축소
  • SHRINK_CANCEL : 크기 축소 중 취소 

LAST_OPER_MODE

  • MANUAL : 사용자가 직접 수정
  • DEFERRED : 수정 값이 지연되어서 적용
  • IMMEDIATE : 수정 값이 바로 적용