글
Oracle Architecture
흔히 컴퓨터의 구성을 이야기 할 때
1. CPU
2. 작업을 하는 장소인 메모리(RAM)
3. 데이터를 저장하는 하드디스크(HDD)
이 세가지로 나눔.
컴퓨터와 오라클 모두 '메모리에서 작업하고 디스크에 저장한다' 는 원리가 중요.
오라클도 컴퓨터와 비슷하게 작업공간과 저장공간이 나뉘어져 있다.
1. 메모리 역할을 하는 INSTANCE
2. 데이터를 저장하는 DATABASE
<사진출처> ORACLE 계의 신성 꼬꼬마님 (http://blog.naver.com/chicken19)
그림으로 간단하게 살펴보면 위와같이 메모리부분, 저장공간부분으로 나뉘어져 있음.
System Global Area (SGA) 라고 하는 부분에서 실제 작업들이 수행되고 백그라운드 프로세스들은
오라클 서버(위의 구조를 Oracle Server 라고 함.) 가 잘 운영되도록 해주는 역할을 한다.
DB에 접속해서 startup 명령어를 치면
초기화 파라미터(pfile , spfile)에 적혀있는 설정을 참고하여 OS kernel에게 공유메모리 요청.
※파라미터 : SGA를 만들때 참조되는 설계도 같은 것.
메모리 요청을 받은 OS Kernel은 자신이 알고있는 OS Kernel 파라미터를 조회해서
그대로 메모리 할당.(리눅스: /etc/sysctl.conf 솔라리스: /etc/system 에서 OS 파라미터 조회)
★ SGA는 Oracle Server Process 가 요청하고 만들지만 만들어진 후에는 OS Kernel이 관리를 한다.
커널에게 SGA 생성을 요청한 오라클 서버 프로세스가 종료되어도 SGA는 종료되지 않고
인스턴스가 종료되어야 SGA가 공유메모리에서 사라진다.
SGA 의 각 구성요소 (빨간부분은 필수 구성요소)
1. Database Buffer Chache
데이터 조회, 변경 등의 실제 작업공간. 작업에 필요한 모든 데이터는 이곳에 있어야 한다.
만약 데이터가 없을 경우 데이터파일에서 해당 블록을 복사해 버퍼캐쉬로 가져와야 함.
버퍼캐쉬 블락의 상태 3가지
1) Pinned Buffer
다른 사용자가 사용하고 있는 블락. 식당으로 치면 현재 손님이 밥을 먹고있는 테이블.
2) Dirty Burffer
작업중은 아니지만 아직 변경된 작업내용을 저장하지 않은 버퍼.
저장이 안 된 상태에서 다른 사용자가 다시 덮어써서 사용한다면 이전 작업한 데이터가 문제가
되기 때문에 사용할 수 없다.
손님이 밥 다먹고 갔지만 테이블 안치움.
3) Free Buffer
애초에 사용이 되지 않았던 블락 또는 더티버퍼 였다가 하드디스크로 저장이 완료되어
재사용이 가능해진 블락.
테이블 치움.
※ 여기서 중요한 것은 저장의 유무이다.
※ 버퍼들의 상태를 관리하기 위해 LRU(Least Recently Used) List 만들어 관리.
가장 최근에 사용된 적이 있는 리스트. 많이 쓰이는 블락만 유지하도록.
LRU List (메인과 보조의 free 버퍼는 중복 안 됨)
-메인 리스트 : free, dirty 섞여있음
-보조 리스트 : free만
LRUW List
-메인 리스트 : dirty 버퍼만 모아놓은 것
-보조 리스트 : DBWR(디비라이터) 에 의해 기록중인 버퍼리스트
2. Redo Log Buffer (장부라고 생각하면 됨)
데이터가 변경될 경우 변경사항을 저장한다.
DDL , DML , TCL 같은 작업 내용.
※ SELECT 제외
3. Shaed Pool
다른 사용자와 어떤 대상을 공유해서 사용하기 위해 만들어진 곳
4. Large Pool
5. Java Pool
6. Streams Pool
10g 이상 버전부터.
7. Fixed Pool
백그라운드 프로세스들이 필요한 DB 전반적인 공유정보 , 프로세스들끼리 공유해야하는
Lock 정보 같은 것들이 저장
※ Dynamic SGA 기능
- 관리자 필요에 의해 SGA 구성요소의 크기 변경 후 인스턴스 재시작 없이 바로 적용할 수 있는 기능
PGA (Program Global Area) 의 주요 구성요소
SGA가 모든 프로세스들의 공유 메모리인 반면에
PGA는 각각의 서버 프로세스들이 개별적으로 사용하는 메모리 공간.
학교를 예로들면 공동으로 쓰는 운동장과 개별적으로 사용하는 사물함 개념.
주로 정렬관련 작업이 이루어진다.
그림출처 : https://docs.oracle.com/cd/E11882_01/server.112/e40540/memory.htm#CNCPT1237
1) Private SQL Area
사용자가 SQL 문장 수행 -> 유저 프로세스 -> 서버 프로세스 -> 작업을 요청한 유저 프로세스의
정보를 세션 메모리 부분에 저장한 후 SQL Parse 작업을 시작.
SQL에 Bind 변수 등이 있을 경우 Private SQL Area 에 보관. 임시로 정보를 저장할때도 사용.
2) SQL Work Area
Sort 관련 작업이나 Hash 관련 작업.
내용출처 : 강남 아이티윌 DB취업반 서진수샘 강의 및 오라클 관리실무 책(서진수)
'Oracle Admin' 카테고리의 다른 글
data file , redo log file , control file 이동 간단정리 (0) | 2015.04.02 |
---|---|
Tablespace 와 Data File 관리 (0) | 2015.04.01 |
pfile , spfile 생성 및 관리 (0) | 2015.03.30 |
Oracle Background Process (0) | 2015.03.29 |
SQL 문장의 실행원리 (0) | 2015.03.29 |