h1.1 오라클 아키텍쳐
h2.1 기본 아키텍쳐
오라클 = 데이터베이스 + 인스턴스
1.1 오라클 인스턴스
1.1.1 PGA(Program Global Area)
user process가 sever process 에게 session 을 허락해 달라는 요청이 오는 경우 PGA는 이러한 user process 를 처리하기 위한 메모리가 요구되는데 이때 사용되는 메모리 영역이 바로 PGA이다. PGA는 인스턴스에 속하지 않는다.
1.1.2 SGA(System Global Area)
Oracle이 구동되면 오라클은 기본적으로 SGA라는 메모리 영역을 가장 먼저 할당한다.
1) DB Buffer Cache
- - Data Files로부터 읽은 Data Block의 복사본을 담고 있는 영역
- - 수행하는 SQL 문장의 실제 데이터를 메모리에 저장하여 다른 사용자의 동일한 데이터의 요청 시 성능 저하의 주범인 Disk I/O를 수행하지 않고 메모리상의 데이터를 리턴하여 성능 개선을 위해 사용하고자 하는 공간
- - 아직까지 DISK에 Write하지 않은 수정된 데이터를 보유할 수도 있음
- - LRU 알고리즘에 의하여 가장 오래 전에 사용된것은 DISK로 밀어내고 가장 최근의 블록을 유지하게 하여 I/O 성능을 향상시키고자 함
- - DBWR(Database Writer Process)에 의해서 관리
- - Free Buffer는 'SERVER PROCESS'에 할당되어 사용되고, 사용 후 Dirty Buffer가 된 Buffer들은 DBWR에 의해 디스크에 씌여진 후다시 Free Buffer가 되어 'SERVER PROCESS'에 의해 재사용되는 작업을 반복함
- - Buffer Cache는 Dirty List(LRU Write List(LRUW))와 Least Recently Used(LRU) List 두 개의 List로 구성
- => LRUW(LRU Write List) List
- 수정되어 디스크에 반영되어야 할 블록들의 리스트
- LRUW에 모인 Dirty Buffer는 DBWR에 의해 디스크로 쓰여지고 나면 이 Buffer는 Free Mark 되어 다시 사용될 수 있도록 LRU List의 끝부분에 위치함
- => LRU(Least Recently Used) List
- 최근에 읽은 Datafile Block을 Buffer Cache에 보관하고, 새로운 Block이 파일에서 읽혀질 필요가 있을 경우가장 오래된 버퍼들로부터 메모리에서 없어지도록 관리하기 위한 알고리즘
2) Shared Pool
- - Shared Pool은 하나의 데이터베이스에 행해지는 모든 SQL 문을 처리하기 위해서 사용되며 Library Cache, Datadictionary Cache로 구성되어 있음
- Library Cache
- 이 메모리 영역은 사용자가 같은 SQL을 재실행할 경우 Hard Parse를 생략하고 Soft Parse를 할 수 있도록 SQL 정보를 저장
- SQL과 PL/SQL 영역을 저장하고 있음
- Data dictionary Cache
- 데이터베이스 테이블과 뷰에 대한 정보, 구조, 사용자 등에 대한 정보가 저장하여 Soft Parse를 할 수 있도록 함
3) Redo Log Buffer
- - 리두 로그 버퍼는 데이터베이스에서 일어난 모든 변화를 저장하는 메모리 공간
- - 이 영역에 저장된 값들은 LGWR에 의해 데이터베이스 복구에 사용되는 온라인 리두로그 파일에 저장
- - 리두 정보는 데이터가 COMMIT 되기 전에 먼저 보관이 되어야 어떤 상황에서도 복구가 가능하므로 변경 내용을 먼저 리두 로그 버퍼에 저장하고 난 후에 DB Buffer Block에 리두 로그 버퍼 내용을 적용 (SMON)
4) Streams Pool
- 오라클 10g부터 지원하는 메모리 영역이며 다른 DB로 데이터를 전달할 때 사용하는 메모리 영역
5) Large Pool
6)Java Pool
- Oracle JVM에 접속해 있는 모든 세션에서 사용하는 자바코드가 사용하는 메모리 영역
SMON (System Momitor)
- 시스템을 감시하는 기능.
- 인스턴스 복구 기능.
- 불필요한 임시세그먼트를 정리.
PMON (Process Monitor)
- 이전에 실패한 사용자 프로세스를 정리하는 기능
- 사용자가 사용하고 있는 리소스를 정리한다. ( Lock프로세스 소멸시 Lock해제)
DBWR (Database Writer)
- 데이타 블럭 버퍼 캐쉬와 딕셔너리 캐쉬의 내용을 관리하는 기능.
- Data Base Buffer cache 내용을 데이터 파일에 저장하는 작업을 수행
LGWR (Log Writer)
- 리두로그버퍼의 내용을 온라인 리두 로그파일에 기록한다.
CKPT (체크포인트)
- 마지막 체크포인트 이후에 변경된 모든 블록을 데이터 파일에 쓰도록 유도하고 체크포인트를 기록하기 위해 데이터 파일 헤더와 컨트롤 파일을 변경한다.
ARCH
참조: http://blog.naver.com/wineredhyun/89791924