글
메모리 관리기법
9i 버전에서의 메모리 관리기법
두가지로 나뉘는 메모리의 구조
SGA (System Global Area) , PGA (Program Global Area)
8i 이전까지는 이 두 메모리를 DBA가 수동으로 관리.
설정값이 변경되면 인스턴스 재시작 해야했다.
9i 부터 Dynamic 기능 (관련 파라미터 변경 후 재부팅 없이 명령어만 쳐서 즉시 적용) 등장.
※ alter system set 명령어
9.0.1 버전에서는 Default Buffer Cache 값을 Dynamic 하게 변경
9.2.0 버전부터 Shared pool , Default Buffer Cache , Large pool , Java pool 값을
10g 버전부터는 Streams pool 추가
※ 위 항목들을 모두 합친 값이 SGA_MAX_SIZE 에 설정된 값보다 클 수 없다.
즉, 전체 SGA의 크기는 SGA_MAX_SIZE 로 지정되고 이 값을 초과할 수 없다.
그래서 파라미터를 수정할 경우 전체 파라미터의 값을 늘린 후 개별 파라미터를 수정해야,
먼저 통을 늘린 후 내용을 늘려야 적용이 되는게 9i Dynamic 의 특징이다.
※ 동적으로 각종 메모리 값을 변경할 때 그래뉼 (Granule) 단위 사용.
1 그래뉼 = 4M (SGA 전체 128M) 또는 16M (128M 초과)
10g -> SGA 128M 에서 1G 로 변경
SGA 총 크기와 그래뉼 사이즈 확인하기
SQL> select name , bytes/1024/1024 MB from v$sgainfo where name='Maximum SGA Size' ;
NAME MB
-------------------------------- ----------
Maximum SGA Size 590.667969
10g 버전에서의 메모리 관리기법
SGA 주요 구성요소들의 크기를 오라클 스스로 변경할 수 있는 기술인
ASMM 기능이 등장한다. (Automatic Shared Memory Management)
Redo log Buffer 를 제외한 나머지 구성요소들의 크기를 상황에 맞도록 스스로 변경.
Shared pool , Default Database Buffer Cache , Large pool , Java pool , Streams pool 자동변경
이 기능을 수행하기 위해 10g부터 새로 등장한 백그라운드 프로세스 -> MMAN (Memory Manager)
ASMM은 MMAN이라는 백그라운드 프로세스가 현재SGA의 Workload 를 보고 메모리의 부족함과
충분함을 판단한 후 충분한 곳에서 메모리를 회수해 부족한 곳으로 재배치 해주는 기능.
이 기능을 위한 필수요소는 현재 SGA 의 Workload.
이 부분은 MMON(Memory Monitor) 라는 백그라운드 프로세스가 SYSAUX 테이블스페이스에 저장
해두는 통계정보와 각종 Advisor 들이 실시간으로 보내주는 정보를 참조함.
MMAN이 SGA의 양을 자동으로 할당하고 관리할 때 기준으로 사용하는 파라미터가
SGA_TARGET 이다. 이 파라미터에 설정된 용량 범위 안에서 메모리 할당, 관리.
SGA_TARGET 역시 SGA_MAX_SIZE 값을 초과할 수 없다.
Auto-Tuned dynamic Parameter :
DB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_SIZE, JAVA_POOL_SIZE,
STREAMS_POOL_SIZE
Manual-Tuned dynamic Parameter :
DB_KEEP_CACHE_SIZE, DB_RECYCLE_CACHE_SIZE, DB_nK_CACHE_SIZE,
SGA_TARGET
11g 버전에서의 메모리 관리기법
9I 버전의 Dynamic SGA 기능에서 10g 버전의 ASMM 기능으로 SGA의 크기를 스스로 튜닝하는
기술로 발전했고 11g 버전에서는 SGA 뿐 아니라 PGA 까지 한꺼번에 자동으로 관리하는 기술인
Automatic Memory Management (AMM) 으로 발전함.
이 기능은 Linux , Solaris , Windows , HP-UX , AIX 버전의 오라클에서만 작동.
MEMORY_TARGET
이 파라미터로 AMM 기능으로 관리할 메모리의 총량을 지정할 수 있다.
이 파라미터는 SGA와 PGA 모두를 관리.
오라클이 SGA와 PGA의 양을 이 파라미터 범위 안에서 증감하며 관리.
Dynamic parameter 이며 최대 설정값은 MEMORY_MAX_SIZE 값까지 지정 가능.
기본값은 0으로 사용하지 않는다는 의미.
MEMORY_MAX_TARGET
이 파라미터는 MEMORY_TARGET 값이 최대로 증가될 값을 지정하는 용도로 사용.
설정하지 않으면 기본값은 MEMORY_TARGET 값과 동일하게 설정됨.
AMM 기능 사용하게 된다면 SGA_TARGET , PGA_AGGREGATE_TARGET
파라미터 값을 별도로 지정할 필요는 없다. 그러나 지정을 한다면 오라클은 그 값을
최소값으로 인식한다.
권장값은 SGA_TARGET , PGA_AGGREGATE_TARGET 모두 0으로.
AMM 기능 사용시 물리적 메모리가 충분한 여유공간이 있어야하고 부족할 경우 에러 발생.
/dev/shm 공간을 공유 메모리 공간과 매핑시켜서 마치 메모리를 디스크처럼 사용.
기본 크기는 OS 메모리의 50%로 설정되는데 설정값보다 물리메모리 양이 부족할 경우
아래와 같은 에러가 발생하면서 오라클이 시작되지 않는다.
SQL> startup;
ORA-00845: MEMORY_TARGET not supported on this system
'Oracle Admin' 카테고리의 다른 글
사용자 관리 (0) | 2015.04.06 |
---|---|
오라클 아키텍쳐 (0) | 2015.04.06 |
Control File 관리 (0) | 2015.04.02 |
data file , redo log file , control file 이동 간단정리 (0) | 2015.04.02 |
Tablespace 와 Data File 관리 (0) | 2015.04.01 |