Database Configuration Overview

흔적남기기·2025년 10월 10일

Database/SQL

목록 보기
1/2
post-thumbnail

Database Configuration Overview

Intro

데이터베이스 성능 최적화를 위해선 SGA, PGA, 프로세스 구조 등 데이터베이스 아키텍처에 대한 이해가 필수입니다.
더 나아가 DB의 안정적인 운영에 필요한 기술들 RAC, Sharding 같은 고가용성 및 확장성 기능들도 오라클 아키텍처 위에 구현된 기술이기 때문에 아키텍처에 대한 공부는 반드시 필요합니다.

이번 글은 시리즈로 준비를 했습니다.

  1. 데이터베이스 구성 개요
  2. 메모리 구조
  3. 백그라운드 프로세스 구조
  4. 데이터베이스 물리적 구조
  5. 데이터베이스 논리적 구조

오늘은 데이터베이스 구성 개요에 대해 알아보겠습니다.

데이터베이스 구성 개요

많은 초심자들이 “데이터베이스(DB)”와 “인스턴스(Instance)”를 같은 것으로 오해하지만,
메모리와 프로세스로 구성된 ‘실행 환경’(Instance)
디스크에 저장된 ‘데이터 파일 집합’(Database)을 명확히 구분해야 합니다.

Figure 1

우리가 일반적으로 데이터베이스에 접근하는 경우는 Listener를 통해서 Server Process간의 세션을 연결합니다.

  • User Process
    데이터베이스에 연결하는 응용 프로그램 혹은 도구
  • Database Process
    - Server Process: Instance가 연결되며 유저가 세션을 설정하면 시작됨
    - Background Process: Instance가 시작될때 시작
  • Daemon/Application Process
    - Networking Listener
    - Grid Infrastructure Daemon

Description of "Figure 11-1 Database Instance and Database Files"

첫번째 Figure를 자세히 보면 다음과 같습니다.
Database부분은 데이터베이스의 물리적 구조 부분에서 자세히 설명할 예정입니다. 그 전까지는 Instance 부분 위주로 알아보도록 하겠습니다.

Instance

Database Instance란?
👉 “디스크에 있는 데이터베이스를 구동하기 위한 메모리와 프로세스의 집합”입니다

Instance는 서버 프로세스, 메모리 영역 그리고 백그라운드 프로세스로 구성되어 있습니다.

인스턴스와 데이터베이스는 “1:1 관계”일 수도 있고, “1:N (RAC)” 구조일 수도 있습니다.

구분설명
Single Instance DB하나의 인스턴스가 하나의 데이터베이스를 관리 (일반적인 구조)
RAC (Real Application Clusters)여러 인스턴스가 동일한 DB 파일을 공유하여 고가용성(HA) 확보

RAC 환경에서는 각 노드가 독립된 SGA·PGA·BG 프로세스를 가지며,
Cache Fusion을 통해 노드 간 블록 일관성(Global Cache Service)을 유지합니다.

Instance 시작/종료

Database쪽에서 장애가 나면 disk 복구 혹은 instance 복구를 해야할 경우가 발생합니다. Instance 시작/종료 방법에 대해서도 간단하게 알아보겠습니다.

Instance 시작

Instance의 시작 상태는 진행 상황에 따라 크게 4가지 상태로 나눈다.
shutdown: Instance 종료 상태
nomount:

SQL > STARTUP NOMOUNT

DB와 관련된 parameter file을 생성 (DB 생성 단계)
control file 손상시 재생성 진행
mount:

SQL > ALTER DATABASE MOUNT;

해당 Instance에 대한 control file 열림

  • DB운영모드변경
  • RECOVERY DB
  • RENAME(위치 변경)

open:

SQL > ALTER DATABASE OPEN;

control file에 기술한대로 모든 파일이 열림
datafile, redo log file open

startup:

SQL > STARTUP;

위 단계를 일괄로 수행한다.

Instance 종료

Instance의 종료는 크게 두가지로 나누어 진다.

1. 일관성 있는 데이터베이스

NORMAL (정상 종료):

SQL > SHUTDOWN NORMAL

새로운 세션의 연결을 허용하지 않음.
현재 연결되어 있는 모든 사용자 세션이 스스로 종료될 때까지 기다림.
모든 세션이 종료되면 인스턴스가 정상적으로 종료됨.
데이터베이스의 모든 버퍼, 트랜잭션 로그가 정상적으로 디스크에 기록됨.
가장 안전하고 완벽한 종료 방식.

IMMEDIATE (즉시 종료):

SQL > SHUTDOWN IMMEDIATE;

새로운 세션의 연결을 허용하지 않음.
현재 실행 중인 SQL을 즉시 중단.
활성 트랜잭션은 롤백 처리.
모든 세션을 강제로 종료시킴.
이후 DB 버퍼 내용을 디스크에 기록하고 인스턴스를 종료함.
가장 일반적으로 권장되는 종료 방식.
데이터 일관성을 완벽히 유지하면서 빠르게 종료 가능.

TRANSACTIONAL (트랜잭션 종료):

SQL > SHUTDOWN TRANSACTIONAL;

새로운 세션 연결은 허용하지 않음.
현재 진행 중인 트랜잭션이 모두 완료될 때까지 대기.
트랜잭션이 완료되면 세션을 강제로 종료.
이후 DB 버퍼를 기록하고 인스턴스 종료.
트랜잭션 일관성을 완벽히 보장.
단순 SELECT 등의 세션은 종료될 수 있지만,
COMMIT 또는 ROLLBACK이 필요한 트랜잭션은 끝날 때까지 기다림.

2. 일관성 없는 데이터 베이스

ABORT (비정상 종료)

SQL > SHUTDOWN ABORT;

즉시 모든 사용자 세션을 종료하고,
실행 중인 트랜잭션을 롤백 없이 강제 중단.
인스턴스를 즉시 강제 종료 (OS 레벨 프로세스 종료와 유사).
데이터 일관성은 보장되지 않으며, 다음 STARTUP 시 Instance Recovery 수행.

표로 정리하면 아래와 같습니다.

종료 모드트랜잭션 처리세션 처리복구 필요 여부특징
NORMAL완료될 때까지 대기자발적 로그아웃 대기완전한 정상 종료
IMMEDIATE롤백 후 종료강제 종료가장 권장되는 방식
TRANSACTIONAL트랜잭션 완료 대기이후 종료안전한 서비스 중단용
ABORT즉시 중단강제 종료긴급 강제 종료용

중요하게 봐야할 부분은 일관성없는 데이터베이스입니다.
이 경우는 Instance failure 상황 즉 Instance가 비정상적으로 종료된 상황이기 때문에 Instance Recovery가 필요합니다.

  • Online Redo file을 활용하여 변경 내용 재적용
  • Undo segement가 commit되지 않은 변경 사항을 Rollback하는데 사용
  • 리소스 해제

이번 글에서는 instance에 대해 알아보았습니다.
다음 시리즈에서 메모리 영역에 대해 살펴보도록 하겠습니다.

Reference

https://docs.oracle.com/en/database/oracle/oracle-database/18/cncpt/oracle-instance-architecture.html
https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/introduction-to-oracle-database.html#GUID-5EC67D71-B865-4CA4-95EC-B04B6BB82976
https://docs.oracle.com/cd/F19136_01/nonpub_db_techarch/pdf/db-19c-architecture.pdf

profile
Walk the Walk

0개의 댓글