데이터베이스 아키텍쳐는 크게 프로세스 + 공유메모리 + 디스크 등으로 이뤄져 있다.
일단 프로세스를 제외하고 공유 메모리 영역과 디스크(물리적 파일) 영역만 보면 다음과 같은 구조로 이뤄져 있다.
▶ 메모리(인스턴스): 컴퓨터 저장 공간에 할당된 실체로 메모리에 적재되는 오라클 시스템의 논리적 구조
▶ 디스크(데이터베이스): 하드 드라이브 안에 만들어지는 오라클 시스템의 물리적인 구조

Instance | SGA (System Global Area) |
Database Buffer Cache | 데이터베이스의 데이터 파일로부터 읽어들인 데이터 블록(테이블, 인덱스)을 담는 캐시 영역. 사용자가 데이터를 조회하거나 변경하려고 할 때, 데이터는 먼저 Database Buffer Cache에 로드된다. SELECT 포함 모든 실제 데이터가 적재돼 용량(Byte)가 크며 수정된 데이터는 Dirty Buffer 표시 후 체크포인트나 Commit 수행, Buffer 공간 부족 시 Datafiles에 기록된다 | |
Redo Log Buffer Cache | 데이터베이스에서 발생된 모든 변경 작업(Insert, Update, Delete)에 대한 변경 기록이 기록되는 공간. 트랜잭션이 데이터 변경을 수행하면 데이터 자체가 아닌 그 변경 작업의 기록이 저장됨. 이후 특정 조건(Commit, Buffer가 가득 찰 때)에서 Redo Log File로 플러시된다 | |||
Shared Pool | Library Cache | 사용자가 수행했던 SQL 문과 실행계획, 저장 프로시저를 저장해 두는 캐시. 사용자가 SQL 명령어를 통해 결과를 요청하면 이를 최적으로 수행하기 위한 루틴인 실행계획이 생성된다. 예로 쿼리 구문을 분석해 문법이 맞는지, 테이블 존재가 맞는지, 권한이 있는지 등 최적화 과정을 거쳐 실행계획을 생성하고 SQL 실행 엔진이 이해할 수 있는 형태로 포멧팅하는 전 과정을 하드 파싱이라 한다. 이런 최적화 과정을 바로 사용할 수 있게 SQL 문과 실행계획을 저장하는 공간 | ||
Data Dictionary Cache | 최근에 사용된 DB 정의 정보가 저장된 공간(테이블 메타데이터 정보 같은 것들) | |||
Background Process |
PMON (Process Monitor) |
항상 다른 프로세스를 모니터링한다. 이상이 생긴 프로세스가 사용하던 리소스를 복구하기 위한 프로세스 | ||
SMON (System Monitor) |
오라클이 비정상 종료돼 인스턴스에 이상이 생겼을 때 Redo Log File에 있는 내용으로 데이터 파일을 복구하는 역할. 임시 세그먼트와 익스텐트를 모니터링한다 | |||
DBWR (Database Writer) |
Database Buffer Cache에 있는 Dirty Buffer를 Datafile에 기록하는 프로세스 | |||
LGWR (Log Writer) |
Redo Log Buffer Cache의 로그 정보를 Redo Log File에 기록하는 프로세스 | |||
CKPT (Checkpoint) |
DBWR과 LGWR의 가동 시기가 달라 동기화가 되지 않을 때 동기화 시키기는 프로세스 Dirty Buffer가 Data files에 적재되면 해당 변경 작업에 대한 로그 정보 역시 Redo Log에 기록된다. CKPT는 가장 마지막 Redo Log의 기록 지점을 저장한다. 만약 데이터베이스가 비정상 종료될 시 가장 최근 checkpoint 위치를 찾아 그 이후의 로그만 재생해 데이터베이스를 복구한다 |
|||
Database | Database 내부 파일 |
Data File | 데이터베이스의 테이블, 인덱스, 뷰 등 사용자 데이터와 데이터베이스 객체가 실제로 저장되는 파일. 이를 디스크에서 읽거나 수장하는 작업을 처리. 오라클의 경우 '.dbf' 파일명으로 저장 | |
Control File | 데이터베이스의 구조 정보와 운영 상태를 저장하는 파일. 데이터베이스 이름, 데이터 파일과 Redo Log 파일의 위치, Checkpoint 정보 등을 저장. 데이터베이스 시작 시 구조를 정의하고 복수 시 필요한 정보를 제공 | |||
Redo Log File | 데이터베이스에서 발생한 모든 데이터 변경 작업의 기록을 저장하는 파일. Redo Log Buffer에서 플러시된 기록 내용이 적재됨. 통상 2 - 3개 그룹으로 구성돼 로그 스위칭을 통해 사용된다. 데이터베이스 장애 발생 시 데이터 변경 작업을 복구하는 데 사용 | |||
Database 외부 파일 |
Parameter File | 데이터베이스 인스턴스의 구성 설정 정보를 저장하는 파일. 데이터베이스의 메모리 크기, 프로세스 개수, 캐시 크기 등 초기 설정 정보를 저장 | ||
Password File | 데이터베이스의 인증과 관리 사용자 정보를 저장하는 파일. 인증된 사용자만 데이터베이스를 관리할 수 있도록 보안 기능을 제공 | |||
Archived Log File |
Redo Log file이 다 찬 후 덮어쓰기 전에 백업용으로 저장된 로그 파일. 데이터 복구 및 백업 시 과거 트랜잭션 로그를 활용
|
● SGA(System Global Area)
오라클 서버의 메모리 영역. 데이터베이스를 가동하면 데이터베이스의 데이터가 메모리 영역에 올라온다. 따라서 SGA는 오라클 인스턴스에 대한 데이터와 제어 정보를 가지고 있는 공유 메모리 영역의 집합
● Background Process
서버 프로세스가 하는 일 외에 내부적으로 DB시스템이 잘 돌아가도록 하는 프로세스. 데이터 파일을 읽어서 DB버퍼 캐시에 적재하는 일, Dirty블록(파일에 기록된 데이터와 메모리에 기록된 데이터가 다른 데이터가 존재하는 블록)을 캐시에서 제거해 FREE 블록을 확보하는 일, REDO 로그 버퍼를 비우는 일 등
※ Dirty Buffer
Database Buffer Cache에 로드된 데이터 블록 중, 수정된 후 아직 디스크에 기록되지 않은 상태의 블록. 사용자의 조작(INSERT, UPDATE, DELETE)에 수정된 데이터는 메모리(Database Buffer Cache)에만 존재하며 Dirty Buffer로 표시된다. 아직 영구 저장소(디스크)에 반영되지 않은 상태다. 이후 체크포인트가 발생하거나 Buffer Space 부족, Commit 수행 시 Dirty Buffer가 디스크에 기록된다. 데이터 베이스는 모든 수정 작업을 즉시 디스크에 기록하지 않고 Dirty Buffer로 관리하며 디스크 I/O를 최소화한다. => 효율성 증가
'데이터베이스' 카테고리의 다른 글
[MYSQL] 옵티마이저와 실행 계획 (0) | 2025.04.04 |
---|---|
인덱스(index)의 종류와 활용 (0) | 2025.03.31 |
[ORCL] 데이터베이스 아키텍쳐(프로세스) (0) | 2025.03.26 |
인덱스(index)의 활용 (1) | 2025.03.26 |
KRX 데이터 경진대회 후기 (0) | 2025.03.06 |