DB Study

🔴 Oracle 학습 홈

기업 시장을 30년 넘게 지켜온 상용 RDBMS의 대명사, Oracle Database. SGA·PGA·백그라운드 프로세스부터 Undo/Redo, 옵티마이저까지 — 아키텍처를 그림과 애니메이션으로 꿰뚫습니다.

📚 챕터 12개 + 튜닝 팁 🎬 시각화 중심 학습 ✅ 완료한 챕터: 0 / 12

한눈에 보는 Oracle — SELECT 한 번의 여정

Oracle 아키텍처의 전체 그림을 애니메이션 하나로 먼저 느껴보세요. SELECT 한 문장이 클라이언트를 떠나 결과로 돌아오기까지의 여정입니다. 여기 등장하는 리스너, 서버 프로세스, SGA, 데이터파일이 앞으로 12개 챕터의 주인공들입니다.

💻 클라이언트 SQL*Plus / 앱 📡 리스너 Listener :1521 ⚙️ 서버 프로세스 내 전담 일꾼 🧠 SGA Database Buffer Cache miss ✗ block ✓ 💾 데이터파일 DB block 단위 ① 접속 요청 (TCP 1521) ② 프로세스 생성·연결 인계 ③ SELECT … (이후 리스너는 관여하지 않음) ④ 버퍼 캐시에 있나? ⑤ 없으면 데이터파일에서 블록을 읽어 캐시에 적재 ⑥ 결과 반환! 🎉 이 그림의 등장인물을 1~4장(아키텍처 기초)에서 하나씩 자세히 만납니다
바쁜 분들을 위한 지름길 — 쿼리 튜닝 팁 모음

"당장 느린 쿼리부터 잡아야 한다"면 ⚡ 쿼리 튜닝 팁 모음부터 펼쳐보세요. 인덱스 설계, 실행계획 읽기, 바인드 변수, 힌트 사용법 등 실무에서 바로 쓰는 체크리스트를 한 페이지에 모았습니다. 원리가 궁금해지면 그때 해당 챕터로 돌아오면 됩니다.

챕터 한눈에 보기

🧱 아키텍처 기초 — Oracle의 뼈대

01. Oracle 개요 — Instance와 Database

Instance(메모리+프로세스)와 Database(파일)의 구분, 리스너와 접속 여정, CDB/PDB 멀티테넌트.

기초

02. SGA — 공유 메모리 구조

Buffer Cache의 LRU, Shared Pool의 커서 공유, 하드 파싱 vs 소프트 파싱, Redo Log Buffer.

중급

03. PGA와 서버 프로세스

프로세스의 사적 메모리 PGA, 정렬·해시 작업 공간, temp spill, PGA_AGGREGATE_TARGET.

중급

04. 백그라운드 프로세스

DBWn·LGWR·CKPT·SMON·PMON — "커밋 시 디스크에 쓰는 것은 데이터가 아니라 redo다."

중급

05. 저장 구조 — 테이블스페이스와 블록

테이블스페이스 → 세그먼트 → 익스텐트 → 블록의 계층, 블록 내부 해부.

중급

🔄 트랜잭션과 복구 — 데이터를 지키는 원리

06. Undo와 읽기 일관성

과거 버전을 복원하는 undo 세그먼트, 읽기 일관성(CR), ORA-01555의 정체.

중급

07. Redo · 커밋 · 인스턴스 복구

redo 로그의 순환 구조, 커밋의 실제 비용, 크래시 후 roll forward/rollback.

고급

08. 트랜잭션과 락

행 락(TX)과 테이블 락(TM), 블로킹과 데드락, 격리 수준.

중급

🔍 쿼리 성능 — 빠른 SQL의 조건

09. 인덱스 구조와 활용

B-tree 인덱스의 내부, 복합 인덱스 설계, 인덱스가 무시되는 순간들.

중급

10. 옵티마이저와 실행계획

비용 기반 옵티마이저(CBO), 통계, 실행계획 읽는 법, 힌트.

고급

11. 파티셔닝과 병렬 처리

Range/List/Hash 파티션, 파티션 pruning, 병렬 쿼리의 동작.

고급

12. AWR과 대기 이벤트 — 모니터링

AWR 스냅샷·리포트 읽기, 주요 대기 이벤트 해석, 성능 문제의 진단 순서.

고급

⚡ 빠른 참조

⚡ 쿼리 튜닝 팁 모음

실무에서 바로 쓰는 튜닝 체크리스트 — 인덱스, 실행계획, 바인드 변수, 힌트, 통계 관리 요약.

빠른 참조

PostgreSQL 개념 대응표

PostgreSQL 파트를 먼저 공부했다면 이 표가 최고의 지름길입니다. 두 DB는 용어만 다를 뿐 같은 문제(캐싱, 다중 버전, 장애 복구)를 풀고 있어서, 대응 관계를 알면 학습 속도가 두 배가 됩니다.

OraclePostgreSQL공통 아이디어PG 챕터
SGA Database Buffer Cacheshared buffers디스크 블록을 공유 메모리에 캐싱pg 2장
Dedicated 서버 프로세스backend 프로세스세션 1개 = 전담 프로세스 1개pg 2장
Undo (undo 세그먼트)dead tuple + VACUUM과거 버전 보관으로 MVCC 구현 — Oracle은 별도 공간, PG는 테이블 안에pg 3장 · pg 8장
Redo (redo log)WAL변경 이력을 먼저 기록해 커밋 내구성 보장pg 9장
DBWn / CKPTbackground writer / checkpointerdirty 페이지를 뒤에서 천천히 디스크로pg 9장
옵티마이저(CBO) + 힌트쿼리 플래너 (힌트 없음)통계 기반 비용 계산으로 실행계획 선택pg 6장
파티셔닝 (Range/List/Hash)선언적 파티셔닝큰 테이블을 조각내고 pruning으로 스캔 축소pg 12장
Data GuardStreaming Replication변경 로그(redo/WAL) 전송으로 대기 서버 유지pg 10장
RMAN 백업 + 아카이브 로그pg_basebackup + WAL 아카이브 (PITR)물리 백업 + 로그 재생으로 시점 복구pg 11장
AWR / v$ 뷰pg_stat_statements / pg_stat_* 뷰실행 통계 축적으로 병목 진단pg 14장
🧭
가장 큰 사고방식 차이 하나만 기억하세요

PostgreSQL은 옛 버전을 테이블 안에 남기고(dead tuple → VACUUM이 청소), Oracle은 옛 버전을 undo라는 별도 공간에 복사해 둡니다. 그래서 PG에는 Bloat/VACUUM 고민이, Oracle에는 undo 크기/ORA-01555 고민이 생깁니다. 같은 MVCC, 다른 청구서입니다.

추천 학습 경로

목적에 따라 골라 읽어도 좋습니다. 화살표 순서대로 읽으면 앞 장의 개념이 뒷 장의 발판이 됩니다.

🌱 처음 시작 (아키텍처 완주)

1장2장3장4장5장

Instance/Database → SGA → PGA → 백그라운드 프로세스 → 저장 구조. Oracle의 몸을 완성하는 순서입니다.

🔄 트랜잭션 이해가 급할 때

6장7장8장

Undo → Redo → 락. "커밋하면 무슨 일이 일어나는가"에 답할 수 있게 됩니다. (2·4장을 먼저 읽으면 더 쉽습니다.)

🚀 쿼리가 느려서 왔습니다

⚡ 튜닝 팁9장10장12장

응급처치 후 인덱스 → 옵티마이저 → AWR 순서로 원리를 채우는 실전파 경로입니다.

💡
학습 진도는 자동으로 저장됩니다

각 챕터 하단의 "이 장 완료로 표시" 버튼을 누르면 사이드바에 ✓ 표시가 남습니다(브라우저 로컬 저장). 부담 없이 하루 한 챕터씩 진행해 보세요.