출처: https://myalpaca.tistory.com/17
Oracle RAC 개념
Oracle RAC는 여러 개의 Instance가 하나의 Database를 엑세스 할 수 있다. 이는 application에서 접속할 수 있는 통로는 여러 개이며 Database는 하나인 형태이다.
Oracle RAC = N개의 Instance + 1개의 Database
그리고 RAC로 연결된 N개의 Instance에서 동일한 Datafile을 공유하여 엑세스한다. 하지만 Database 작업에 사용할 수 있는 CPU나 메모리 등의 Resource는 서로 공유하지 않으며 해당 Node의 Resource만을 사용한다.
Cluster
두 개 이상의 독립된 서버들과 Disk를 하나로 연결하는 기법이다. 사용자가 Cluster로 구성된 서버들 중 어느 서버에 접속해도 동일한 Disk를 엑세스하게 되므로 하나의 서버 또는 하나의 Disk에 연결하는 것처럼 인식한다.
Oracle RAC는 Oracle Clusterware를 사용하여 어느 Instance에 접속하여도 사용자에게 동일한 data를 실시간으로 조회, 변경할 수 있는 기능을 제공한다. 또한 Oracle Clusterware를 사용하면 높은 처리량과 고가용성을 보장할 수 있다.
Clusterware의 자세한 특징은 다음에 설명하도록 하겠다.
단일 Instance vs Oracle RAC
단일 Instance 환경에서와 마찬가지로 Oracle RAC 환경의 각 Instance에는 각자의 SGA와 백그라운드 프로세스가 존재한다. 그러나 모든 Datafile과 Control File은 모든 인스턴스에서 동일하게 엑세스할 수 있어야 하므로 공유 Storage에 위치해야 한다.
그리고 각 Instance에는 고유한 Online Redo Log File이 존재한다. Online Redo Log File은 자신이 속한 Instance에 의해서만 기록될 수 있다. 그러나 online redo log file도 인스턴스 복구 시에는 다른 인스턴스에서 엑세스할 수 있어야 한다. 따라서 Online Redo log file도 공유 storage에 저장되어야 한다(redo log group을 공유하고, redo log file에 쓰는 것은 개별적으로 쓴다).
*Data 정합성
Oracle RAC 환경의 Instance는 여러 Instance에서 동시에 동일한 data를 엑세스하는 구조로 data를 공유한다. 동일한 data를 여러 인스턴스가 읽어도 문제는 없지만, 동일한 data에 대해 여러 인스턴스가 동시에 수정, 삽입 등을 하는 경우 data 무결성 문제가 발생할 수 있다. 그래서 Oracle RAC은 Cache lock과 Cache Fusion 등을 사용하여 이를 보장한다. 자세한 것은 다음에 설명하겠다.
Oracle RAC 구성요소
Oracle Grid Infrastructure
Oracle RAC는 Grid Infrastructure에서 제공하는 Oracle Clusterware의 기반하에 여러 Database 서버를 묶어서 하나의 시스템처럼 동작하도록 지원한다.
*GI는 Oracle Custerware 및 ASM으로 구성되며 운영체제와 긴밀하게 통합된 소프트웨어 계층이다.
- Clusterware 설치 : RAC 구성을 위해 필요한 소프웨어이며 오라클 설치 계정 이외 별도의 계정을 생성하여 설치하는 것을 권장한다.
- Clusterware의 OS 계정 : 일반적으로 GI와 ASM을 소유하는 전용 OS 계정인 grid 계정을 사용한다.
공유 Storage
각 Instance는 공유 Storage를 통해 물리적인 data를 공유하며 database에서 사용하는 ASM 및 CFS(Cluster File System)를 구성한다.
공유 Storage에서 Database File은 모든 Node에 동등하게 동시에 엑세스할 수 있어야 한다. 물론 Storage에서 생성된 Disk는 공유 모드가 활성화 되어야 한다.
Oracle RAC Network 구성 요소
- Public IP
각 Node에 대한 고유한 IP로 서버 주소와 동일하다. 일반적으로 Node 관리 목적으로 사용된다.
- Service IP
클라이언트에서 Database 서버의 Public IP를 사용하여 접속할 경우 장애가 발생한 Node에서 세션을 다른 Node로 옮기는데 많은 시간이 걸릴 수 있다. 이때 VIP(Virtual IP)를 사용하여 클라이언트가 node에 장애가 발생했다는 것을 신속하게 인식할 수 있도록 함으로써 다른 Node로 재연결 시간을 향상시킬 수 있다.
- SCAN(Single Client Access Name)
GNS 및 DNS를 사용하여 정의할 수 있다. SCAN을 이용할 경우 Cluster 내 서버 수에 관계없이 Load balancing 및 고가용성을 고려하여 3개의 IP 주소를 권장한다.
- Private IP(Cluster Interconnect)
Cluster Node 별 통신을 위한 IP로 다음과 같은 목적으로 사용한다.
-Resource 동기화를 위해 Cluster에서 Heartbeat 프로세스를 위해서 사용하는 통신 경로
-Instance에서 다른 Instance로 data를 전송(cache fusion)하는 용도로 사용
Oracle Kernal 구성 요소
오라클 커널의 구성요소는 RAC database의 각 인스턴스에 대한 추가 백그라운드 프로세스의 집합(GRD, GCS, GES)이다. 자세한 설명은 cache fusion에서 설명하겠다.
'정보관리(데이터베이스, DB) > 오라클' 카테고리의 다른 글
[Oracle] Tablespace 테이블스페이스 총 정리(종류, 생성, 삭제, 조회, 변경) (1) | 2023.10.25 |
---|---|
오라클 정책_Oracle Database Support for Non-Oracle Public Cloud Environments (Doc ID 2688277.1) (0) | 2023.08.02 |
Docker Custom Image는 Dockerfile을 통해 생성 (0) | 2023.07.26 |
[데이터베이스] tomcat과 Oracle 연동 (0) | 2023.07.26 |
리눅스 linux Oracle DB 18C 설치 (0) | 2023.07.26 |