SQL

오라클 아키텍처

class="song" 2026. 1. 29.

SGA(System Global Area) - 거대한 공유 작업장

- 모든 사용자가 공통으로 사용하는 메모리 영역
    - 1) Shared Pool(공유 풀)
        - 가장 중요한 두뇌 역할, SQL을 해석하고 실행 계획을 저장

        - Library Cache
            - 역할: 실행된 SQL 문장과 SQL의 실행 계획을 저장
            - 핵심 개념(Soft Parse VS Hard Parse)
                - Soft Parse: 캐시에서 실행 계획을 재사용
                - Hard Parse: 문법 검사, 권한 검사, 최적 경로 탐색 과정을 모두 거침

            - Data Dictionary Cache: 테이블 이름, 컬럼 정보, 사용자 권한 등 메타데이터를 저장

        - Database Buffer Cache
            - 디스크에서 읽어온 데이터 파일의 내용을(Block)을 저장하는 메모리 공간

            - 역할: 디스크는 느리니까, 한번 읽은 건 메모리에 올려두고 사용

            - 작동 원리
                - Select 요청이 오면 먼저 Buffer Cache를 확인(Logical I/O)
                - 없으면 디스크에서 읽어서 이곳에 올림(Physical I/O)

            - 튜닝 목표
                - 디스크로 가는 횟수(Physical I/O)를 줄이고, 메모리에서 바로 찾는 비율(Buffer Cache HitRatio)를 높이는 것

        - Redo Log Buffer
            - 데이터 변경이 생길 때, 복구를 위해 변경 내역을 임시로 기록하는 곳

PGA(Program Global Area)

- 각 프로세스마다 개별적으로 할당되는 메모리 -> 공유X

- Soft Area: Hash Join을 할 때 해시 맵을 만드는 공간

- 특징: 이 공간이 부족하면 디스크의 Temp Tablespace를 쓰게 되는데, 이때 성능이 급격히 느려짐

백그라운드 프로세스

- 메모리(SGA)와 디스크(파일) 사이에서 실제 데이터를 나르는 일꾼들

1. DBWR(Database Writer)
    - 역할: Buffer Cache에 있는 변경된 데이터(Dirty Block)를 실제 데이터 파일(Disk)에 기록
    - 특징: COMMIT 한다고 바로 쓰는 게 아니라 모았다가 한가할 때나 꽉 찼을 때 천천히 씀(Lazy Write)

2. LGWR(Log Writer) - 가장 중요
    - 역할: Redo Log Buffer에 있는 로그 기록을 Redo Log File(Disk)에 기록
    - 특징: COMMIT 명령어가 떨어지면, LGWR가 로그 파일에 기록을 완료해야 커밋이 성공했다고 사용자에게 알림(Fast Commit 메커니즘의 핵심)

3. PMON(Process Monitor)
    - 역할: 사용자가 프로세스가 비정상 종료(강제 종료, 네트워크 끊김)되면 뒤처리를 담당
    - 작업: 트랜잭션 롤백, 락(lock) 해제, 리소스 반환

4. SMON(System Monitor)
    - 역할: DB 시스템(인스턴스)이 비정상 종료(정전 등) 후 재기동될 때, 인스턴스 복구를 수행, 안쓰는 임시 세그먼트도 청소

5. CKPT(CheckPoint)
    - 역할: 지금 어디까지 디스크에 안전하게 저장했는지를 표시함, 데이터 파일과 컨트롤 파일의 헤더에 동기화 정보를 갱신하여, 나중에 복구할 시점을 알려줌

'SQL' 카테고리의 다른 글

[Oracle] VirtualBox에 RHEL8+Oracle 19c 설치  (0) 2026.02.03
오라클 파티셔닝  (0) 2026.01.30
오라클 데이터베이스 저장 구조  (0) 2026.01.29
Database 기초  (0) 2026.01.29
oracle 딕셔너리 뷰 종류  (1) 2026.01.13

댓글