프로잉2 2025. 6. 6. 16:36
728x90

1.1 오라클을 배우기 전에

오라클 데이터베이스는 기업에서 가장 널리 사용되는 RDBMS 중 하나로, 안정성과 성능, 확장성을 기반으로 다양한 산업군에서 활용되고 있다. 오라클을 제대로 배우기 위해서는 단순히 SQL을 실행하는 수준을 넘어, 내부 구조와 아키텍처를 이해하는 것이 중요하다. 이 장에서는 오라클의 핵심 구성 요소들과 이들이 어떤 원리로 작동하는지에 대해 직관적으로 설명한다.


1.2 오라클 아키텍처 개요

오라클 데이터베이스는 크게 두 가지 구성 요소로 이루어진다:

  • 오라클 인스턴스: 메모리 구조(SGA 등)와 백그라운드 프로세스
  • 오라클 데이터베이스: 실제 데이터가 저장되는 파일들의 집합

🔹 인스턴스 = SGA + 백그라운드 프로세스


1.3 SGA(System Global Area)

SGA는 오라클 인스턴스가 작동하기 위해 사용하는 공유 메모리 공간으로, 여러 세션이 동시에 접근하며 SQL 실행, 데이터 캐시, 트랜잭션 처리를 돕는다.

주요 구성 요소:

  • Database Buffer Cache: 디스크에서 읽어온 데이터 블록을 임시로 저장. 반복 조회 시 성능 향상.
  • Redo Log Buffer: 트랜잭션의 변경 내역을 일시 저장. 복구에 사용됨.
  • Shared Pool: SQL 실행 계획, PL/SQL 코드 등을 캐싱하여 파싱 부담 줄임.
  • Large/Java Pool: 병렬 처리, Java 실행을 위한 메모리.

💡 Dirty Buffer란? Buffer Cache 내에서 변경되었지만 아직 디스크에 반영되지 않은 블록을 의미. DBWR 프로세스가 디스크로 플러시할 때까지 메모리에 존재.


1.4 Lock 메커니즘

여러 사용자가 동시에 같은 데이터를 사용할 수 있기 때문에, 오라클은 Lock을 통해 데이터 일관성과 무결성을 보장한다.

주요 Lock 종류:

  • TX Lock: 행 단위 락. DML 트랜잭션 시 발생.
  • TM Lock: 테이블 락. DDL 또는 제약 조건 관련.
  • UL Lock: 사용자 정의 락 (DBMS_LOCK 사용).

💥 Deadlock: 서로 상대방의 락을 기다리는 교착 상태. 오라클은 이를 감지하고 하나의 세션을 종료함으로써 해결한다.


1.5 RAC(Real Application Clusters)

RAC는 여러 대의 서버가 하나의 데이터베이스를 동시에 접근할 수 있도록 구성된 클러스터 구조이다. 고가용성과 확장성이 필요한 엔터프라이즈 환경에서 자주 사용된다.

RAC의 장점:

  • 고가용성: 한 노드 장애 시 다른 노드로 자동 전환 가능
  • 수평 확장성: 서버를 추가하여 성능 향상 가능
  • 로드 밸런싱: 요청을 여러 인스턴스로 분산 처리

핵심 기술 - Cache Fusion:

  • 각 노드의 SGA를 네트워크로 연결해 메모리 블록을 공유. 데이터 일관성을 유지하면서도 빠른 처리 가능.

1.6 커넥션 풀의 필요성

애플리케이션이 DB와 통신할 때, 매번 새로 커넥션을 만드는 것은 성능적으로 비효율적이다. 커넥션 풀은 일정 수의 DB 커넥션을 미리 만들어 두고 재사용함으로써 다음과 같은 장점을 제공한다:

  • 커넥션 생성/소멸 오버헤드 제거
  • DB 자원 사용 제한 및 보호
  • 다수 사용자 처리 능력 향상

💡 실무에서는 HikariCP(Spring Boot), QueuePool(SQLAlchemy) 등을 통해 커넥션 풀을 관리한다.


1.7 요약

구성 요소설명

SGA SQL 실행, 캐시, 트랜잭션 관리를 위한 공유 메모리 공간
Dirty Buffer 수정된 상태이지만 디스크에 반영되지 않은 데이터 블록
Lock 데이터 일관성을 위한 동시성 제어 메커니즘
RAC 다중 서버가 하나의 DB를 공유해 고가용성과 확장성 제공
커넥션 풀 DB 커넥션을 미리 만들어 재사용함으로써 성능 최적화

이제 오라클의 기본 구조를 이해했으니, 다음 장에서는 SQL 실행 흐름과 옵티마이저에 대해 배워보자.

728x90