글
메모리 관리기법
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 |
글
오라클 아키텍쳐
Architecture = Memory Architecture + Process Architecture
- Oracle Server = Instance + Database
- Intance = SGA Memory + Background Process
- Database = Datafile + Redo Log File + Control File + Parameter File
- SGA Memory = Shared Pool + Data Buffer Cache + Redo Log Buffer + Large Pool + Java Pool + Streams Pool
- Shared Pool = Library Cache + Dictionary Cache + Control Structures
- Process = User Process + Oracle Process
- Oracle Process = Background Process + Server Process
- Background Process = DBWn + LGWR + CKPT + SMON + PMON + RECO + ARCn ...
- Server Process = Shared Server Process + Dedicated Server Process
Introduction to Oracle Memory Structures
Oracle 메모리 구조는 실행 중인 프로그램 코드 정보와 세션정보 등을 저장 하고 사용자들이 공유하는 데이터를 저장합니다.
Oracle의 대표적인 메모리 구조는 시스템 글로벌 영역(System Global Area: SGA)과 프로그램 글로벌 영역(Program Global Area: PGA)이 있습니다.
문서에 대하여
- - 강좌 URL : http://www.gurubee.net/lecture/1883
- - 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- - 구루비의 모든 강좌는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
'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 |
글
Control File 관리
spfile 의 경우 순서
spfile 내용 변경 명령어 -> alter system set contrl_files='경로1','경로2','경로3' scope=spfile;
※ scope=spfile 옵션은 현재 인스턴스에는 적용하지 않고 재부팅 후 변경하겠다는 옵션이다.
경로 변경작업
-> 인스턴스 종료
-> 디렉토리 생성 및 컨트롤파일 복사
-> 인스턴스 오픈
※ pfile 의 경우 vi로 수정이 가능하다. pfile 의 경우 인스턴스를 먼저 종료 하고 나서
!vi $ORACLE_HOME/dbs/initSID.ora 로
컨트롤 파일의 경로를 수정한 후 해당 디렉토리 생성, 최근 컨트롤파일 복사 후
다시 startup 한다.
자세히 살펴보면
1. select status from v$instance;
현재상태 확인.
2. show parameter spfile;
spfile or pfile 바라보는지 확인
3. select name from v$controlfile;
현재 Controlfile 경로 조회
4. alter system set control_files='/home/oracle/disk1/control01.ctl','/home/oracle/disk2/control02.ctl' scope=spfile ;
spfile 파라미터 변경 후 DB 종료
shutdown immediate;
5. cd /home/oracle
mkdir disk1 disk2
이동시킬 경로로 가서 폴더 생성
생성한 폴더에 컨트롤파일 복사
cp /app/oracle/oradata/testdb/control01.ctl /home/oracle/disk1/control01.ctl
cp /app/oracle/oradata/testdb/control01.ctl /home/oracle/disk1/control02.ctl
DB startup
'Oracle Admin' 카테고리의 다른 글
메모리 관리기법 (0) | 2015.04.06 |
---|---|
오라클 아키텍쳐 (0) | 2015.04.06 |
data file , redo log file , control file 이동 간단정리 (0) | 2015.04.02 |
Tablespace 와 Data File 관리 (0) | 2015.04.01 |
pfile , spfile 생성 및 관리 (0) | 2015.03.30 |