본문 바로가기
오라클/오라클 튜닝

오라클 DB 구조

by 카리3 2021. 12. 3.

오라클 DB 구조

 

오라클 DB 구조

 

SGA (System Global Area)

SGA는 오라클 서버가 메모리에 할당되어 실제 데이터 입출력에 필요한 작업이 진행되는 고용 메모리 영역이다.
1) Database Buffer Cache : 데이터의 조회와 변경 등 실제 작업이 일어나는 공간
2) Redo Log Buffer : 변경 내용을 기록하는 메모리 공간
3) Shared Pool : 어떤 대상을 공유해서 사용하기 위한 공간
 3-1) Library Cache : Soft Parse시 사용, SQL과 실행계획 등이 저장된 공간
 3-2) Data Dictionary Cache : 구문분석이나 실행계획을 세울때 사용하는 Dictionary들이 Cache 되어진 공간
 3-3) Server Result Cache : 결과값을 Cache해 두는 공간
4) Large Pool
5) Java Pool
6) Streams Pool
7) Fixed SGA

 

PGA (Program Global Area)

PGA : Process들이 개별적으로 사용하는 메모리 공간
1) SQL Work Area : Sort 관련 작업을 수행하는 공간
2) Private SQL Area

저장되는 정보들
1)Sort Area : order by, group by 등의 정렬을 수행하기 위한 공간, 공간이 부족하면 디스크 이용
2)Session Information : 세션정보를 저장한다.
3)Cursor State : 해당 SQL의 parsing 정보가 저장되어 있는 주소를 저장
4)Stack Space : SQL 문장에 bind variable을 사용했을 경우 해당 bind variable을 저장하는 공간

 

백그라운드 프로세스 (Background Process)

백그라운드 프로세스 : Oracle Server가 잘 운영되도록 하는 역할
1) DBWR(Database Writer) : 데이터 파일로 저장하는 역할
2) LGWR(Log Writer) : Redo Log Buffer에 있는 내용을 Redo Log File로 저장하는 역할
3) PMON(Process Monitor) : 모든 서버 프로세스들 감시 및 프로세스 정리
4) SMON(System Monitor) : 비정상 종료 후 인스턴스 시작 시 크래시 리커버리 수행 
  Instance Clean Up 역할
  Instance Recovery 과정에서 누락된 Transaction Recovery 역할
  비정상 종료된 Transaction이 사용 중이던 Temporary segment를 Clean up 역할
  Dictionary Managed Tablespace에서 Free extents들을 모아주는 역할
5) CKPT(Check Point) : DBWR에게 Checkpoint 신호를 전달. 마지막 변경점을 기록한 체크포인트를 
  나타내도록 데이터베이스의 모든 데이터 파일 및 콘트롤 파일을 갱신
6) ETC
7) ARCn(Archiver) : 로그 전환이 발생하면 Redo Log File을 Archive 영역으로 복사하여 영구기록

 

데이터베이스 (Database)

데이터베이스 : 디스크에 위치한 파일들의 세트
1) 데이터 파일 (Data File) : 데이터(Data)를 저장하는 공간
2) 컨트롤 파일 (Control File) : DB 운영 정보 저장
3) 리두 로그 파일 (Redo log File) : 변경 내용을 기록하는 파일 공간
DBA(Data Block Address) : 모든 데이터 블록은 디스크 상에서 몇 번 데이터 파일의 몇 번째 
블록인지를 나타내는 자신만의 고유 주소값을 갖는다. 이 주소값을 DBA라고 부른다. 
데이터를 읽고 쓰는 단위가 블록이므로 데이터를 읽으려면 먼저 DBA부터 확인해야 한다. 
인덱스를 이용해 테이블 레코드를 읽을 때는 인덱스 ROWID를 이용한다. 
ROWID는 DBA + 로우번호(블록 내 순번)로 구성되므로 이를 분해하면 읽어야 할 테이블 레코드가 
저장된 DBA를 알수 있다.
시퀀셜 액세스
테이블 블록 간에는 서로 논리적인 연결고리를 갖고 있지 않다. 그럼, 테이블은 어떻게 
시퀀셜 방식으로 액세스할까?
오라클은 세그먼트에 할당된 익스텐트 목록을 세그먼트 헤더에 맵으로 관리한다. 익스텐트 맵은 
각 익스테트의 첫 번째 블록 주소 값을 갖는다. 읽어야 할 익스텐트 목록을 익스텐트 맵에서 얻고, 각 익스텐트의 
첫 번째 블록 뒤에 연속해서 저장된 블록을 순서대로 읽으면, 그것이 곧 Full Table Scan이다.

랜덤 액세스
논리적, 물리적인 순서를 따르지 않고, 레코드 하나를 읽기 위해 한 블록씩 접근하는 방식이다.

'오라클 > 오라클 튜닝' 카테고리의 다른 글

오라클 HINT  (0) 2021.12.04
인덱스 개요  (0) 2021.12.04
실행계획 용어 정리  (0) 2021.12.03
실행계획 읽는 순서  (0) 2021.12.03
SQL 처리 과정  (0) 2021.12.03