일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- java
- SW봉사
- 알고리즘
- 1과목
- 데이터베이스
- programmers
- 정보처리산업기사
- BFS
- 프로그래머스
- 스프링
- 자바
- 코틀린
- 코딩교육봉사
- Spring
- 백준
- 소프티어
- MYSQL
- 백준 알고리즘
- CJ UNIT
- 코딩봉사
- SQL
- python
- 백준알고리즘
- 회고
- 문제풀이
- 공부일지
- kotlin
- 파이썬
- C++
- softeer
- Today
- Total
JIE0025
[Oracle] 오라클 구조의 주요 개념 및 용어 정리 (인스턴스, SID, 서비스, RAC, 공유공간 등) 본문
[Oracle] 오라클 구조의 주요 개념 및 용어 정리 (인스턴스, SID, 서비스, RAC, 공유공간 등)
sdoaolo 2025. 6. 6. 12:58
✅ 오라클의 데이터 추출 과정

- 유저 프로세스(User Process)는 사용자가 오라클 프로그램을 실행시켰을 떄 생성되는 프로세스이다.
- 사용자가 SQL문을 실행시키면
-> 이를 처리하기 위해 서버 프로세스가 생성/연결된다. - 서버프로세스는 오라클 인스턴스 내부의 SGA (공유메모리) 영역에서
라이브러리 캐시/ 버퍼 캐시에 접근해 데이터가 있는지 확인한다.
- 라이브러리 캐시는 SQL문 자체를 저장해두는 메모리 공간이다.
-> 같은 SQL문장을 실행할떄 바로 실행하기 위함 (소프트 파싱)
- 버퍼캐시는 데이터 자체를 저장해두는 메모리공간이다.
-> 실제 테이블/인덱스 데이터를 블록 단위로 캐싱한다.
-> 변경된 데이터가 디스크에 쓰기전 수정내용을 저장한다 (Dirty Block) - 캐시에 데이터가 없으면 디스크에 있는 실제 데이터 파일을 읽어온다. (Pysical I/O)
- 최종 결과를 유저 프로세스에게 전달한다.
++
SQL문은 최근에 사용되는 SQL문이 라이브러리 캐시에남게 된다. 대소문자를 구분하기 떄문에 한글자만 달라져도 전체 프로세스를 다시 경험해야한다. 이것이 아주 비효율적이기 떄문에 최대한 재사용 가능하도록 쿼리를 짜야한다.
✅ 노드와 인스턴스

⏹ 노드
오라클이 설치된 실제 서버이다.
** 2 Node RAC : 2대의 물리적인 서버가 하나의 DB에 연결된 경우이다.
2개의 컴퓨터 (OS기준) 으로 보면 될 것 같다.
⏹ 인스턴스
- 각 노드는 인스턴스를 갖는다.
- 오라클이 실행되면서 구성되는 SGA + 백그라운드 프로세스 단위
- 하나의 노드는 여러개의 인스턴스로 구성될 수 있다.
- 한개의 인스턴스는 여러개의 노드에 중복으로 존재할 수 없다.
노드에 인스턴스가 1개 있다면
리눅스에 오라클 서버가 설치되어 작동중이다 라고 생각하면 된다.
⏹ SGA
- 인스턴스 내부에 있는 공유 공간이다.
- 서버프로세스와 데몬프로세스가 공유하는 캐시/ 데이터공간에 접근한다.
✅ Oracle RAC
⏹ 단일서버의 위험
단일서버만 사용하면 화재/정전등의 사고로 서버가 마비 되었을 떄 전체 시스템이 다운된다
> 고객이 서비스를 사용할 수 없게 된다.
이를 방지하기 위해 여러대의 서버를 클러스터링 하여 사용하는 오라클의 RAC를 사용한다.
⏹ RAC (Real Application Cluster)
물리적으로 구성된 서버를 하나의 시스템으로 구성해
실제로 사용하는 서버는 여러개지만 클러스터링 기술을 통해 하나의 데이터베이스를 사용하도록 하는 소프트웨어이다.
두개이상의 서버에 데이터베이스 파일을 복제하고, 복제된 데이터베이스 파일을 다수의 서버에서 서비스를 제공해
서버가 마비되어 서비스 제공이 중단되는 상황을 방지할 수 있따.
Oracle clusterware라는 것을 사용해 어느 인스턴스에 접속해도 사용자에게 동일한 data를 실시간으로 조회/변경할 수 있도록 기능을 제공한다.
인스턴스에는 각각 의 SGA와 백그라운드 프로세스가 존재하는데,,
모든 Datafile과 Control File 은 모든 인스턴스에서 동일하게 액세스 해야하므로 공유 스토리지에 위치해야한다.
N개의 인스턴스 + 1개의 Database (저장공간 / 디스크)를 의미한다.
⏹ DB Buffer Cache
유저가 요청한 SQL문의 필요한 데이터 블록을 디스크에서 찾아와 메모리로 올리는 영역이다 .(캐싱)
RAC에서 2개의 인스턴스 가 DB Buffer Cache 에서 블록을 이동하는 과정이 있고 이것이 Cache Fusion이라고 한다.
RAC에서는 각 노드마다 하나의 인스턴스를 올려서,
→ 여러 인스턴스가 하나의 DB (데이터 저장소)를 공유함
RAC는 여러개의 인스턴스와 한개의 DATABASE로 구성되었다고 되어있었다.
인스턴스가 여러개이므로 SGA공간이 여러개이다.
다른 인스턴스의 /버퍼 캐시에 접근이 가능한가? -> 가능하다 (Cache Fusion)
sql 캐시는 가능한가?
인스턴스마다 Library Cache가 따로 있다.
같은 SQL 문이어도 각 인스턴스는 자기 메모리(Library Cache)에 따로 캐싱한다.
RAC에서 SQL 캐시를 공유하지 않는 이유는 왜일까?
라이브러리캐시까지 실시간 동기화 하면 성능저하의 위험이 있을 수 있다.?
그래서 서비스 단위로 SQL 트래픽을 특정 인스턴스에 고정 (집중)하는 방법을 씀
⏹ RAC의 핵심 기술 : Cache Fusion
Oracle RAC 버퍼캐시를 논리적으로 통합해 하나의 글로벌 캐시처럼 동작하게 하는 기술이다.
다른 인스턴스에 있는 블록이 필요할 경우 디스크가 아니라 네트워크로 전달 받는다.
만약 인스턴스1에서 홍길동을 강감찬으로 업데이트 - 커밋 이후 B유저가 deptNo 10을 조회했다.
이때 인스턴스1에서 변경된 데이터를 거치지 않고 interconnect 를 통해 즉시 인스턴스2로 전달된다.

HA 와 OPS 의 비교
HA( High Availability)는 액티브 스탠바이 구조로
같은 장비 2개를 구축하여 실제서비스(액티브) 다른한개는 (스탠바이) 대기 상태로 두는 서버 구성방식이다.
장애를 대비하여 대기만 하고 실제 서비스엔 도움이 안된다는 뜻이다.
OPS는 Oracle Parallel Server로
한개의 스토리지에 2개의 인스턴스가 구성되어있다.
사용자는 다른 인스턴스에 접속해도 결국 스토리지가 1개이므로 같은 데이터를 조회 변경할 수 있따.

RAC(Real Application Cluster) (9i버전부터)

Public network : 관리자가 유지보수시 사용한다. 퍼블릭 망에 붙어 쓰는게 VIP (Service IP)라고 한다.
interconnect : private network로 인스턴스끼리 연결하는 망이있다.
Cache Fusion - 인스턴스끼리 데이터를 서로 즉시 볼 수 있다.

✅ Oracle RAC Network의 구성요소
⏹ Public IP
각 노드에 대한 고유 IP이다.
일반적으로 노드 관리 목적으로 사용된다.
OS의 IP정도로 이해하면 된다.
⏹ VIP
RAC에서 사용하는 가상의 IP이다.
노드에서 장애 발생시 다른 노드로 이동이 가능하다.
⏹ SCAN
Single Client Access Name
클라이언트가 여러개의 VIP를 기록할 필요없이 하나의 도메인으로 통합하는 접속지점이다 .
- GNS DNS를 사용하여 SCAN을 정의한다.
- 클러스터 내 서버 수에 관계 없이 접속 가능하게 해준다.
- 만약 HOST = rac-scan.mycompany.com 이렇게 지정하면
- 도메인이 인스턴스만큼 VIP로 라운드 로빈을 하게 된다.
⏹ Service IP
클라이언트에서 Database 서버의 Public IP를 사용해 접속할경우
만약 1개 노드에서 장애가 발생하면 세션을 다른 노드로 옮기는데 많은 시간이 걸릴 수 있다.
이때 VIP 를 사용해 클라이언트가 노드에 장애 발생했다는 것을 식속하게 알 수 있고 다른 노드로 재연결하도록 돕는다.
✅ SERVICE_NAME vs SID
⏹ 서비스
서비스는 무슨 단위일까?
DB 전체를 가리킬수도 특정 사용자그룹/업무기능으로 나뉜 논리적 접속 단위일 수 있다. .
서비스를 웹서버/ 인스턴스를 WAS로 생각하면 이해가 쉬울것이다 .
한개의 서비스에서 2개의 인스턴스를 관리하고 있다.
WEB 이 내려가면 2개의 WAS가 모두 기동될수 없다.
그러나 WAS1이 Stop되어도 WAS2엔 영향이 가지 않는다.
서비스가 내려가면 두개의 인스턴스 모두 작동할 수 없지만
인스턴스 1개가 내려간다고 해서 다른 인스턴스2가 영향받지는 않는다.
✔ tnsnames.ora 파일
tnsnames.ora 파일에 SERVICE_NAME 을 작성하는 부분이 있다.
여기에 서비스네임을 작성할수도, SID 를 작성할수도 있다.
서비스네임을 적을 경우 2개의 인스턴스를 묶어서 사용하는 것이다.
SID를 작성한다는 의미는 특정 인스턴스에 직접 접속하고 싶을 떄 (테스트나 트러블 슈팅 용도)로 사용한다.
>> SID는 결국 인스턴스의 이름인 느낌이다. ( 매핑되는 개념이다.)
++ SID정보는 환경변수, LISTENER.ORA라는 파일에서 정의 된다.
클라이언트 접속 구성 예시
애플리케이션 단 에서 RAC환경의 2개의 노드에 붙도록 설정하면
ORA9 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.14.208)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.14.209)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
여기에서 HOST부분에 퍼블릭 IP를 쓰면
노드 장애시 세션이 끊기거나 failover 시간이 길어질 수 있다.
- HOST에 Public IP 대신 VIP 사용 → Failover 성능 향상
- SERVICE_NAME 사용 → 오라클이 자동으로 가용한 인스턴스에 연결해줌
- SCAN 사용 시 클라이언트는 단일 도메인만 알면 된다.
전체적인 예시
1. 노드가 2개 구성되어있다. 노드의 REALIP는 1,3 이다.
2. 인스턴스가 2개 구성되어있다. 인스턴스 vip는 각각 2, 4이다.
3. 노드 1 의 인스턴스는 2 노드3의 인스턴스는 4이다.
4. 두 노드 /인스턴스는 동일 서비스로 구성되어있다.
5. 클라이언트 TNS.ORA파일에 VIP 2, 4가 접속정보로 들어가있다.
서비스네임엔 서비스 이름을 넣어준다 (동일하다)
VIP를 접속정보로 넣으면 노드가 장애나도 다른 노드로 자동 이동이 가능하기 떄문이다.
이것은 Clusterware 가 관리한다.
클라이언트 입장에선 VIP만 알고 그쪽으로만 접속하면 되기 때문에 끊김 없이 Failover 처리가 가능하다.
서비스이름을 동일하게 넣으면 두개의 인스턴스가 같은 논리적 서비스 단위로 동작하며
오라클은 살아있는 인스턴스로 연결시켜준다.
클라이언트 쪽에서 VIP를 몰라도 되게 하는게 비러 SCAN이다.
클라리언트가 계속 직접 VIP마다 tnsnames.ora 에 작성했었는데 이걸 해결하기 위해 Oracle이 SCANIP 라는 개념을 도입했다.
클라이언트 접속 구성 예시
rac-scan.mycompany.com → 192.168.0.2 (VIP1)
→ 192.168.0.4 (VIP2)
→ 192.168.0.6 (VIP3)
ORCL_RAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan.mycompany.com)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = orcl_service)
)
)
[Oracle] Real Application Clusters(RAC) 설정과 관리: 고가용성 환경 구축하기
Oracle Real Application Clusters(RAC) 이해하기: 고가용성 설정 가이드기업의 데이터베이스 시스템은 비즈니스 연속성과 안정성에 있어 중요한 역할을 합니다. 특히, 데이터베이스가 다운되면 서비스의
ezexplog.tistory.com
https://myalpaca.tistory.com/26
Oracle RAC의 Cache Fusion 캐시퓨전(1)
Oracle RAC의 DB Buffer Cache 오늘은 오라클 RAC 특징에 있어서 가장 중요한 cache fusion에 대해서 알아보겠다. 그러면 그 전에 DB Buffer cache에 대해서 알아야 한다. Node 하나의 DB에 연결된 서버를 의미한다.
myalpaca.tistory.com
https://gaebaldiary.tistory.com/39
[ORACLE] Instance & Service 용어 개념정리
오라클을 서버를 구축하고 서버 관리를 하면서 Service는 왜 올리는 것이며, Instance는 왜 올리는 것인지에 대해서 정확한 개념을 알 수가 없었습니다. 일반적으로 로컬에서 사용하는 테스트 환경
gaebaldiary.tistory.com
https://myalpaca.tistory.com/17
Oracle RAC 개념(Cluster, 구성요소)
Oracle RAC 개념 Oracle RAC는 여러 개의 Instance가 하나의 Database를 엑세스 할 수 있다. 이는 application에서 접속할 수 있는 통로는 여러 개이며 Database는 하나인 형태이다. Oracle RAC = N개의 Instance + 1개의 D
myalpaca.tistory.com
https://m.blog.naver.com/weekamp/221610646646
오라클 SID, Service Name 차이 Oracle개념용어정리 [출처] 오라클 SID, Service Name 차이 Oracle개념용어정리
오라클 SID, Service Name 차이 Oracle개념용2...
blog.naver.com
[오라클] RAC(Real Application Cluster)이란?
일반적인 Oracle Server 구성방식* Process: A는 작업장1로 복사해와서 작업을 하고, B는 작업장2로 복사를 해와서 작업을 하며, 저장을 database에 합니다. 이렇게 instance와 database 사이를 왔다갔다 하면서
12bme.tistory.com
'Infra > Database' 카테고리의 다른 글
DB 메모리 영역 SGA (Shared Pool, DB BufferCache, Redo Log Buffer 를 알아보자. (0) | 2025.04.28 |
---|---|
SQL 파싱과 최적화, 옵티마이저, 실행계획 (0) | 2025.04.27 |
DB 클러스터링, Active-Standby, Replication (0) | 2024.12.31 |
[MongoDB] _id를 제거할 수 있을까? (0) | 2023.06.04 |
[MongoDB] Collection과 Document를 생성하고 실습해보자 (0) | 2023.05.28 |