오늘은 오라클 아키텍처의 큰 그림을 그려보려고 합니다.
오라클 아키텍처의 첫 번째 글인 만큼, 세부적인 수치보다는 전체적인 흐름을 이해하는 데 집중해 보세요.
오늘 이 큰 그림만 머릿속에 담아두셔도, 앞으로 이어질 심화 내용들이 훨씬 쉽게 읽히실 겁니다.
👇용어정리
더보기
- SGA(System Global Area) : 공유메모리 영역으로 데이터를 빠르게 처리하기 위한 공간
- PGA(Program Global Area) : 개별 메모리 공간으로 정렬 중간 데이터, 사용자 세션 정보 등 처리
- Shared Pool: 내가 방금 실행한 SQL 문장이 어떻게 실행될지 짜놓은 '계획서'를 보관합니다. 똑같은 SQL을 던지면 다시 분석 안 하고 여기서 계획서를 꺼내 씁니다
- Library Cache: SQL 문장, 실행 계획을 저장하는 곳
- Data Dictionary Cache: 테이블 정보, 권한, 통계 (설계도)를 저장하는 곳
- Database Buffer Cache: 하드디스크에서 읽어온 실제 데이터(Table 등)를 보관하는 곳입니다. 똑같은 데이터를 또 찾을 때 디스크까지 안 가고 여기서 바로 꺼내주니 속도가 엄청나게 빨라지죠.
- Redo Log Buffer: 데이터에 변화가 생겼을 때(Insert, Update 등) 그 기록을 잠시 보관합니다. 갑자기 정전이 되어도 이 기록을 보고 복구할 수 있게 해주는 보험 같은 공간입니다.
- Large Pool: 백업이나 대용량 처리처럼 메모리를 많이 잡아먹는 작업을 위해 따로 빼놓은 보조 공간입니다.
- Java Pool: 오라클 데이터베이스 내부에서 자바(Java) 코드를 실행할 때 사용하는 전용 메모리 영역입니다.
Node와 Instance

Node
- 오라클이 설치된 실제 서버
- 하나의 Node는 여러개의 Instance를 구성 가능
Instance
- SGA(메모리)와 백그라운드 프로세스의 집합 즉, 서버 메모리에서 실행 중인 DB엔진
- 하나의 인스턴스는 하나의 데이터베이스만 Mount 가능


1. 메모리 구조 (Memory Structures)
오라클은 데이터를 디스크에서 직접 읽기보다 메모리에 올려두고 처리하는 것을 선호합니다.
- SGA (System Global Area): 모든 사용자가 공유하는 메모리 영역입니다.
- Shared Pool: SQL 실행 계획과 딕셔너리 캐시를 보관
- Database Buffer Cache: 디스크에서 읽어온 실제 데이터 블록을 보관
- Redo Log Buffer: 변경 이력을 기록해 장애 시 복구에 사용
- PGA (Program Global Area): 개별 사용자가 독점하는 메모리 영역입니다. 정렬(Sort) 작업이나 세션 정보를 담고 있으며, 사용자가 나가면 즉시 회수됩니다.

2. 프로세스 구조 (Process Structures)
메모리에 있는 데이터를 주무르고 사용자와 소통하는 '일꾼'들입니다.
- User Process: 사용자가 실행한 SQL*Plus 같은 클라이언트 툴
- Server Process (Foreground): 사용자의 요청을 받아 실제로 SQL을 실행하고 결과를 전달하는 전담 비서
- Background Process: 시스템이 원활하게 돌아가도록 뒤에서 묵묵히 일하는 프로세스
- DBWn: 메모리의 데이터를 디스크에 기록
- LGWR: 로그 버퍼의 내용을 리두 로그 파일에 기록
- PMON/SMON: 비정상 종료된 프로세스를 정리하고 시스템을 감시

3. 저장 구조 (Storage Structures)
메모리는 휘발성입니다. 데이터를 영구적으로 저장하기 위한 물리적 파일들입니다.
- Data Files: 실제 테이블과 인덱스 데이터가 저장되는 파일
- Control Files: DB의 상태 정보와 구조를 담고 있는 관리용 파일 (없으면 DB 안 켜짐)
- Redo Log Files: 장애 복구를 위해 모든 변경 내역을 기록해둔 '블랙박스' 파일

1. SGA의 핵심 특징
- 공유 메모리: 모든 서버 프로세스와 백그라운드 프로세스가 이 공간에 접근하여 데이터를 주고받습니다.
- 인스턴스 단위: 오라클 인스턴스가 시작될 때 할당되며, 인스턴스가 종료되면 사라집니다.
- 데이터 중심: 실제 디스크에서 읽어온 데이터나 SQL 실행 계획 등을 담고 있습니다.
2. SGA를 구성하는 주요 구성 요소
SGA는 여러 개의 작은 메모리 영역(Pool)으로 나누어져 각각 중요한 역할을 수행합니다.
- Database Buffer Cache: 디스크의 데이터 파일에서 읽어온 실제 데이터 블록을 보관하는 공간입니다. 사용자가 데이터를 요청하면 먼저 여기서 찾고, 있으면 메모리에서 바로 처리하므로 속도가 매우 빠릅니다.
- Shared Pool: SQL 문장이나 실행 계획(Execution Plan)을 저장하는 공간입니다.
- Library Cache: 이전에 실행했던 SQL 문장과 분석된 코드를 저장하여 재사용합니다.
- Data Dictionary Cache: 테이블 구조, 권한 정보 등 데이터베이스의 메타데이터를 보관합니다.
- Redo Log Buffer: 데이터에 가해진 모든 변경 사항(DML 등)을 기록하는 공간입니다. 장애 발생 시 복구를 위해 사용되며, 여기 기록된 내용은 나중에 리두 로그 파일(Redo Log File)로 저장됩니다.
- Large Pool: 대규모 백업 및 복구 작업이나 공유 서버 구성 시 보조적으로 사용하는 큰 메모리 영역입니다.
- Java Pool: 자바 명령을 실행할 때 필요한 메모리 공간입니다.
1. SGA의 핵심 특징
- 공유 메모리: 모든 서버 프로세스와 백그라운드 프로세스가 이 공간에 접근하여 데이터를 주고받습니다.
- 인스턴스 단위: 오라클 인스턴스가 시작될 때 할당되며, 인스턴스가 종료되면 사라집니다.
- 데이터 중심: 실제 디스크에서 읽어온 데이터나 SQL 실행 계획 등을 담고 있습니다.
2. SGA를 구성하는 주요 구성 요소
SGA는 여러 개의 작은 메모리 영역(Pool)으로 나누어져 각각 중요한 역할을 수행합니다.
- Database Buffer Cache: 디스크의 데이터 파일에서 읽어온 실제 데이터 블록을 보관하는 공간입니다. 사용자가 데이터를 요청하면 먼저 여기서 찾고, 있으면 메모리에서 바로 처리하므로 속도가 매우 빠릅니다.
- Shared Pool: SQL 문장이나 실행 계획(Execution Plan)을 저장하는 공간입니다.
- Library Cache: 이전에 실행했던 SQL 문장과 분석된 코드를 저장하여 재사용합니다.
- Data Dictionary Cache: 테이블 구조, 권한 정보 등 데이터베이스의 메타데이터를 보관합니다.
- Redo Log Buffer: 데이터에 가해진 모든 변경 사항(DML 등)을 기록하는 공간입니다. 장애 발생 시 복구를 위해 사용되며, 여기 기록된 내용은 나중에 리두 로그 파일(Redo Log File)로 저장됩니다.
- Large Pool: 대규모 백업 및 복구 작업이나 공유 서버 구성 시 보조적으로 사용하는 큰 메모리 영역입니다.
- Java Pool: 자바 명령을 실행할 때 필요한 메모리 공간입니다.
'🗄️ DB_이야기 > # 🛢️ Oracle' 카테고리의 다른 글
| [Oracle] Oracle Architecture(3) [SQL 처리 과정] (0) | 2026.03.17 |
|---|---|
| [Oracle] Oracle Architecture(2) [Oracle 접속 과정] (0) | 2026.03.17 |
| [Oracle] Data Pump(impdp) (0) | 2026.02.24 |
| [Oracle] Data Pump(expdp) (0) | 2026.02.23 |
| [Oracle] MRP0: Background Media Recovery terminated with error 1111 (0) | 2026.02.23 |
