SQL

[Oracle] DB 서버의 구조

class="song" 2026. 7. 27.

데이터베이스 메모리

1. SGA 메모리, 버퍼 캐시, Shared Pool, Large Pool, Java Pool

SGA: System Global Area

Buffer Cache : 스토리지 디스크의 데이터 파일에서 읽어온 데이터 블록의 복사본을 저장하는 공간

  • 사용자가 동일한 데이터를 요청할 때 느린 물리적 디스크 I/O를 발생시키지 않고, 빠른 메모리에서 데이터를 읽고 쓰기 위함

Shared Pool

  • Library Cache
    • 사용자가 실행한 SQL 문장의 파싱 결과(실행 계획 등)를 저장함
    • 동일한 쿼리가 들어오면 하드 파싱을 생략하고 이곳에서 실행 게획을 재사용하여 CPU 부하를 줄임
  • Dictionary Cache
    • DBA_TABLES, DBA_OBJECTS 등 데이터베이스의 구조 정보(메타 데이터)를 캐싱
  • Large Pool
    • RMAN 작업, 병렬 처리, 공유 서버 환경에서의 세션 메모리 등 대규모 메모리 할당이 필요할 때 버퍼 캐시나 공유 풀의 푸하를 막기 위해 별도로 사용하는 공간
  • Java Pool
    • 데이터베이스 내부에 저장된 자바 프로시저나 JVM 구동을 위해 할당되는 메모리 영역

2. PGA 메모리

PGA: Program Global Area

  • SGA가 공유 메모리라면 PGA는 특정 서버 프로세스가 독립적으로 사용하는 개인 메모리 영역, 다른 프로세스가 접근할 수 없음
  • 주요 역할
    • ORDER BY, GROUP BY 등을 처리하기 위한 Sort Area
    • 해시 조인을 수행하기 위한 Hash Area
    • 세션 상태 정보 및 커서 상태 보관

3. 백그라운드 프로세서

  • 사용자의 요청을 직접 처리하지 않고, 데이터베이스 시스템이 원할하게 돌아가도록 뒤에서 비동기적으로 유지보수 작업을 수행하는 OS 프로세스들
    • DBWn(Database Writer): 버퍼 캐시에서 변경된 데이터 블록들을 모아 물리적인 데이터 파일(.dbf)에 기록
    • LGWR(Log Writer): Redo Log Buffer에 쌓인 트랙잭션 변경 로그를 디스크의 Redo Log File에 기록함(DBWn보다 먼저 디스크에 씀)
    • SMON(System Monitor): DB 인스턴스 비정상 종료 시 재기동할 때 인스턴스 복구를 수행하고 사용하지 않는 임시 세그먼트를 정리
    • PMON(Process Monitor): 비정상적으로 종료된 사용자의 세션을 감지하여 해당 프로세스가 점유하던 락을 해제하고 PGA 메모리를 반환
    • CKPT(CheckPoint): 특정 시점에 모든 변경된 데이터를 디스크에 쓰도록 DBWn에게 신호를 보내고, 데이터 파일 헤더와 컨트롤 파일에 체크포인트 발생 시점을 기록

4. Redo log, Archive log, Undo

  • 데이터베이스의 무결정 보장과 복구를 위한 핵심
    • Redo log
      • 데이터베이스에 가해진 모든 변경 사항을 기록하는 로그 파일, 장애 발생 시 가장 최근의 체크포인트 이후부터 Redo log를 재생(Roll-forward)하여 데이터를 복구함
    • Archive log
      • 꽉 찬 Redo log 파일이 덮어씌워지기 전에 별도의 디렉토리로 오프라인 백업해 둔 로그 파일, 이를 통해 과거 특정 시점으로 데이터 복구 가능
    • Undo
      • 트랜잭션이 변경하기 이전의 원본 데이터를 저장하는 공간
        • ROLLBACK 실행 시 이전 상태로 되돌리기 위해
        • 다른 사용자가 변경 중인 데이터를 조회할 때 읽기 일관성 보장

5. 리스너, SQL*Net 통신

  • 클라이언트(애플리케이션, 툴)와 데이터베이스 서버 간의 네트워크 통신을 담당하는 계층
    • 리스너(Listener)
      • 클라이언트의 연결 요청을 백그라운드에서 듣고 있는 OS 상의 독립적인 프로세스
    • SQL*Net(Net Services)
      • 오라클의 네트워크 통신 프로토콜
      • 클라이언트 시스템의 파일에 정의된 호스트, 포트, 서비스 네임 정보를 통해 리스너에게 정확히 라우팅

6. Dedicated Server, MTS Server

  • 사용자 접속을 데이터베이스 엔진이 어떻게 할당하고 처리할 것인지에 대한 방식
    • Dedicated Server(전용 서버 방식)
      • 클라이언트 1명이 접속할 때마다 OS 상에 1개의 서버 프로세스를 1:1로 새롭게 생성하여 전담
      • 장점: 처리 속도가 가장 빠르고 안정적(배치 작업 등 대용량 처리에 유리)
      • 단점: 동시 접속자가 많아지면 OS 프로세스가 기하급수적으로 늘어나 메모리 고갈 및 컨텍스트 스위칭 부하가 발생
    • MTS Server(Multi-Threaded Server, Shared Server: 공유 서버 방식)
      • 다수의 클라이언트 요청을 소수의 Dispatcher 프로세스가 받아 큐에 넣으면 미리 생성된 서버 프로세스 풀에서 쉬고 있는 프로세스가 이를 가져다가 처리
      • 장점: 적은 프로세스와 메모리로 대규모 동시 접속(OLTP) 처리 가능
      • 단점: 긴 트랜잭션 처리 시 병목 현상, SGA 메모리 부하 및 튜닝 복잡도 증가

댓글