DB, SQL
[DB] Oracle Database 구조
의중
2025. 5. 15. 16:47
최근 Oracle을 학습해야 할 일이 생겨, Oracle학습 목적으로 작성해 보겠습니다..!
지금까지 진행했던 간단한 프로젝트들에서는 SpringBoot + JPA + MySQL를 주로 사용했는데, 그러다 보니 복잡한 데이터를 조회할 때 필요한 SQL도 생각이 안 나네요
전 세계적으로 많이 사용하는 Oracle Database에 대해 좀 더 심도 있게 학습하고자 합니다. + SQL까지
오라클 데이터베이스의 구조
클로드가 그렸는데 잘 그렸죠?
각 구조들을 알아보자면,
1. 메모리구조
SGA (System Global Area)
모든 사용자가 함께 사용하는 공유 메모리입니다.
Database Buffer Cache에서는 데이터 블록을 캐싱합니다.
Shared Pool에서는 SQL 문장과 실행 계획을 정리합니다.
Redo Log Buffer에서는 변경사항을 임시 저장합니다.
Large Pool, Java Pool은 특수 작업이 있을 때 사용합니다.
PGA (Program Global Area)
각 사용자/세션 별 개별 메모리입니다.정렬, 해시 조인 등 개인 작업을 수행합니다.
2. 프로세스 구조
백그라운드 프로세스
- DBWR(Database Writer): 메모리의 데이터를 디스크에 기록합니다.
- LGWR(Log Writer): 리두 로그 버퍼를 파일에 기록합니다.
- CKPT(CheckPoint): 체크포인트를 관리합니다.
- SMON(System Monitor): 시스템 레벨을 복구합니다.
- PMON(Process Monitor): 비정상 종료 프로세스를 정리합니다.
서버 프로세스
사용자 요청을 실제로 처리하는 프로세스입니다.
3. 물리적 구조
데이터 파일
실제 데이터가 저장되는 파일입니다.
논리적 구조: 테이블 스페이스 -> 세그먼트 -> 익스텐트 -> 데이터블록
컨트롤 파일
데이터베이스 구조와 상태 정보를 저장합니다.
모든 파일의 위치 정보를 보관합니다.
리두 로그 파일
모든 변경사항을 실시간으로 기록한다.
장애 발생 시 복구에 사용할 수 있다.
다음 포스팅에는 각 영역에 대하여 더 깊이 있게 공부하여 포스팅해보겠습니다.!