💡 핵심 인사이트
데이터베이스는 단순히 하드디스크에 저장된 '파일 덩어리'가 아닙니다. 이 죽어있는 파일들에 생명을 불어넣어 작동하게 만드는 **'메모리(RAM) 구조'와 '백그라운드 프로세스(실행 중인 프로그램)'의 결합체를 데이터베이스 인스턴스(Instance)**라고 부릅니다.
즉, $Instance = Memory + Processes$ 입니다.
Ⅰ. 데이터베이스(Database)와 인스턴스(Instance)의 명확한 구분
많은 개발자들이 두 용어를 혼용하지만, 아키텍처 관점에서는 완전히 다른 세계입니다.
- 데이터베이스 (Database)
- 물리적으로 **하드 디스크(SSD/HDD)**에 영구적으로 저장되어 있는 파일들의 집합입니다. (데이터 파일, 컨트롤 파일, 로그 파일).
- 서버 전원을 뽑아도 영원히 살아남는 정적인 존재입니다.
- 인스턴스 (Instance)
- 서버가 부팅되고 DB 소프트웨어(예:
mysqld,oracle.exe)가 실행될 때, 메인 메모리(RAM)에 할당되는 거대한 공간(SGA, 버퍼 풀)과 백그라운드에서 돌고 있는 유령 같은 프로세스(스레드)들의 살아 숨 쉬는 집합체입니다. - 전원을 뽑으면 메모리에서 즉시 증발해버리는 동적인 존재입니다.
- 서버가 부팅되고 DB 소프트웨어(예:
"DB 서버를 켰다(Mount/Open)"는 것은 이 무형의 인스턴스가 생성되어 디스크의 데이터베이스 파일을 움켜쥐고 통제하기 시작했다는 뜻입니다.
Ⅱ. 백그라운드 프로세스의 주요 역할
메모리(버퍼 풀)와 하드디스크(파일) 사이는 거리가 멉니다. 누군가는 메모리의 데이터를 디스크로 나르고, 장애를 감시해야 합니다. 이 묵묵한 일꾼들이 백그라운드 프로세스들입니다. (오라클 기준 대표 4대장)
1. DBWR (Database Writer)
- 임무: 메모리(버퍼 캐시)에서 변경이 완료된 '더티 페이지(수정된 데이터)'를 모아서 뭉텅이로 하드디스크(데이터 파일)에 기록(Flush)하는 진짜 막노동꾼입니다.
- 시스템이 한가할 때나 버퍼가 꽉 찼을 때 조용히 활동하여 디스크 I/O 부하를 줄입니다.
2. LGWR (Log Writer)
- 임무: DBWR보다 훨씬 성질이 급한 일꾼입니다. 트랜잭션이 커밋(Commit)되는 그 찰나의 순간에, 무조건 메모리(로그 버퍼)에 있는 복구용 로그 기록을 하드디스크(리두 로그 파일)에 빛의 속도로 꽂아 넣습니다. (WAL 프로토콜 수행자)
3. SMON (System Monitor)
- 임무: 인스턴스 전체의 건강을 책임지는 응급구조대입니다. 갑작스러운 정전으로 DB가 뻗었다가 다시 켜질 때(Crash), 디스크에 남아있는 로그 파일(Redo Log)을 읽어서 **메모리를 정전 직전 상태로 완벽히 복구(Instance Recovery)**해 내는 위대한 역할을 합니다.
4. PMON (Process Monitor)
- 임무: 클라이언트 쪽에 문제가 생겼을 때의 청소부입니다. 사용자가 SQL을 던져놓고 강제로 앱을 끄거나 랜선을 뽑아버리면, 그 사용자가 DB 내부에서 잠가둔 락(Lock)을 강제로 풀어주고 쓰던 메모리를 수거해 다른 사람이 쓸 수 있게 청소합니다.
📢 섹션 요약 비유: 데이터베이스(파일)가 창고에 쌓인 **'밀가루와 설탕'**이라면, 인스턴스는 아침에 불이 켜지며 돌아가기 시작하는 **'반죽 기계(메모리)와 요리사들(프로세스)'**의 집합입니다. 요리사(DBWR)가 반죽을 창고에 나르고, 청소부(PMON)가 테이블을 닦아야만 빵집(DBMS)이 돌아갑니다.