본문 바로가기
오라클/이론 및 실습

버전별 메모리 관리 기법

by LaTale 2019. 7. 2.

1. 9i

9i부터는 "Dynamic"하게 메모리 관련 파라미터의 설정 값을 변경하고 적용할 수 있게 되었다. 'alter system set' 을 이용하면 인스턴스의 재시작 없이 즉시 적용이 가능하게 되었다.


단 모든 항목들을 합친 값이 SGA_MAX_SIZE보다 클 수는 없다. 예를 들어 Shared Pool의 값을 늘리고 싶다면 다른 파라미터의 값을 줄인 후에 늘려주어야 한다.


PGA를 관리하는 방법도 자동 관리모드로 변경되었다. 이로 인해 많은 점이 편리해졌지만 문제가 되는 점도 생겼다.


하나의 세션이 사용할 수 있는 PGA용량이 정해져 있다는 것이다. 대량의 데이터를 Sort나 Hash할 경우 PGA의 용량이 작업속도에 크게 영향을 끼치는데 PGA 전체 용량이 아무리 커도 한 세션이 사용할 수 있는 값이 정해져 있기 때문에 문제가 생긴다.


2. 10g

10g부터는 SGA 주요 구성요소들의 크기를 오라클이 스스로 변경할 수 있는 Automatic Shared Memory management(ASMM)이 등장한다.


이 기능은 Redo log buffer를 제외한 나머지 구성요소들의 크기를 상황에 맞도록 스스로 변경하는 기능이며 이를 수행하기 위해 새로 등장한 백그라운드 프로세서가 MMAN이다.


MMAN이 SGA의 양을 할당하고 관리할 때 기준으로 사용하는 파라미터가 SGA_TARGET이다. SGA_TARGET에 설정된 용량의 범위 안에서 메모리를 할당하고 관리한다.


물론 SGA_TARGET은 SGA_MAX_SIZE에서 Log_buffer 값을 제외하고 예약공간 값을 제외한 크기를 초과할 수는 없다.


3. 11g

11g에서는 SGA뿐만 아니라 PGA까지 한꺼번에 자동으로 관리하는 기술인 Automatic Memory Management(AMM)이 등장한다.


AMM을 위해 새로 생긴 두 개의 파라미터가 있다.

1) MEMORY_TARGET

AMM으로 관리할 메모리의 총량을 지정할 수 있다. 이 파라미터는 SGA와 PGA를 모두 관리한다. 최대값은 MEMORY_MAX_SIZE이며 기본값은 0이다.


2) MEMORY_MAX_TARGET

MEMORY_TARGET 값이 최대로 증가될 값을 지정하는 용도이다. 별다른 설정을 해주지 않으면 MEMORY_TARGET값과 동일하게 된다.




'오라클 > 이론 및 실습' 카테고리의 다른 글

DBMS_JOB & DBMS_SCHEDULER  (0) 2019.07.04
사용자 관리  (0) 2019.07.04
Oracle 저장 구조 - Extent와 Segment  (0) 2019.07.02
Oracle 저장 구조 - block(2)  (0) 2019.07.02
Oracle 저장 구조 - block(1)  (0) 2019.07.01