1. 등장 배경 - 하나의 DB, 하나의 Instance 구조의 문제점
일반적으로 사람들이 사용하는 DB는 하나의 DB, 그리고 하나의 Instance 형태다. 여기서 Instance란 DB에 접속하기 위한 창구 역할을 하는 것으로 이 하나 뿐인 Instance에 문제가 발생한다면 DB에 접근할 수 없는 문제가 발생한다. 아래 그림처럼 인스턴스에 장애가 발생하게 되면 더 이상 DB에 접근할 수 없으니 서비스 운영이 멈춰버리는 사태가 발생하게 된다. 이러한 현상을 막기 위한 구조로 RAC, HA가 등장한 것이다.
2. RAC
RAC 구조는 하나의 DB에 접속하기 위해 여러 인스턴스가 연결되어 사용되는 구조로써, 하나의 인스턴스에 문제가 발생하더라도 다른 인스턴스가 이에 대응하여 멈추지 않고 서비스를 할 수 있다는 장점이 있다. 이는 캐시 퓨전(Cache Fusion)이라는 기능을 사용하는데 캐시 퓨전에 대해 간단하게 말하자면 다음과 같다.
- 여러 인스턴스가 하나의 DB에 연결되어 있다 한들 이는 엄연히 서로 다른 인스턴스임.
- 각 인스턴스는 고유 SGA(System Global Area)를 가지고, SGA 내부에는 Buffer Cache가 존재하는데 이는 최근에 읽은 데이터를 메모리에 보관함(=메모리 블록).
- 만약 A 인스턴스가 수정한 데이터를 B 인스턴스가 바로 조회한다면 A 인스턴스의 상태를 DB에 저장하고 B 인스턴스가 이를 읽어오는 과정(디스크 I/O)이 필요한데, 이러한 과정 없이 인스턴스간에 바로 데이터(메모리 블록)를 공유해주는 기술이 바로 캐시 퓨전임.
요약하자면 RAC 구조는 인스턴스에 장애가 발생하더라도 DB에 계속해서 접근 가능한 구조이고, 여기에는 핵심 기술인 캐시 퓨전이 사용된다는 내용이다.
3. HA
HA 구조도 RAC와 같이 싱글 인스턴스 환경에서 장애가 발생하여 DB에 접속하지 못하는 상황을 막기 위한 구조로, 하나의 DB에 여러 인스턴스 구성인 RAC와는 달리 동일한 DB를 2대 구성하는 형태이다. 서버 1대는 Active 상태로 두고 남은 1대는 Standby 상태로 두는데 Active 서버에서 문제가 발생하면 Standby 서버가 즉시 Active 상태로 전환되는 방식이다. 그러나 이는 다음과 같은 문제를 갖는다.
- 완벽하게 동일한 DB 서버를 하나 더 구축하는 것이므로 비용이 증가함.
- Active 상태에서 아직 저장되지 않은 작업이 있었다면 Standby 서버는 해당 데이터가 반영되지 않았으므로 데이터 손실이 발생함.
- DB 서버를 동일하게 유지해야 하는 것에 따른 성능적 부담이 증가함.
'[DB] > - Oracle' 카테고리의 다른 글
[Oracle] NVL, NVL2 함수 (0) | 2025.05.27 |
---|---|
[Oracle] 정규식 (일반 문자 - Literal Character, 메타 문자 - Meta Character) (0) | 2025.05.27 |
[Oracle] 숫자 -> 문자 변경 시 포맷 설정 (0) | 2025.05.24 |
[Oracle] SID, SNAME이란? SNAME 변경 방법 (0) | 2025.05.23 |
[Oracle] Port 포트 번호 변경하는 방법 (0) | 2025.05.22 |