Oracle

Oracle RAC

coococoo 2023. 9. 5. 17:56
반응형

Oracle RAC(Real Application Cluster)란 ?

-  Oracle DB를 위한 고가용성 솔루션이며 2개 이상의 노드(인스턴스)가 공유 디스크를 이용하여 하나의 DB로 클러스터링된다. 

- 여러개의 instance가 하나의 Database를 액세스 할 수 있음, 이는 application에서 접속할 수 있는 통로는 여러개 이며 Database는 하나인 형태

- RAC로 연결된 n개의 인스턴스에서 동일한 datafile을 공유하여 액세스 한다. 하지만 Database 작업에 사용할 수 있는 CPU나 메모리 등의 Resource는 서로 공유하지 않으며 해당 Node의 Resource만을 사용한다.

 

Cluster : 두개 이상의 독립된 서버들과 Disk를 하나로 연결하는 기법이다. 사용자가 Cluster로 구성된 서버들 중 어느 서버에 접속해도 동일한 Disk를 액세스하게 되므로 하나의 서버 또는 하나의 Disk에 연결하는 것처럼 인식한다.

 

단일 Instance VS Oracle RAC

단일 instance 환경에서 마찬가지로 Oracle RAC 환경의 각 instance에는 각자의 SGA와 백그라운드 프로세스가 존재한다. 그러나 모든 DatafileControl 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에 쓰는 것은 개별적으로 쓴다)

  단일 Instance Oracle RAC
Instance 1 N
Database 1 1
Control File 하나의 instance에 존재 공유 Storage에 존재
SGA + 백그라운드 프로세스 하나의 instance에 존재 각각의 instance 별로 존재
Redo Log File 하나의 instance에 존재 각각의 instance 별로 존재
UNDO Tablespace 하나의 instance에 존재 각각의 instance 별로 존재
TEMP Tablespace 하나의 instance에 존재 Database에 하나만 존재
System Tablespace 하나의 instance애 존재 Database에 하나만 존재
기타 Tablespace 하나의 instance에 존재 Database에 하나만 존재

공유 Storage

instance는 공유 Storage를 통해 물리적인 data를 공유하며 database에서 사용하는 ASM CFS(Cluster File System)를 구성한다. 공유 Storage에서 Database File은 모든 Node에 동등하게 동시에 액세스할 수 있어야 한다. 물론 Storage에서 생성된 Disk는 공유 모드가 활성화되어야 한다.

 

RAC 구조

 

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에서 다른 Instancedata를 전송(cache fusion)하는 용도로 사용

 

Cache Fusion

서로 다른 instance에서 변경된 데이터를 디스크에 거치지 않고 바로 instance로 가져올 수 있는 기능

Cache Fusion 수행 방식

1. Instance 2에 접속한 A 프로세스는 Instance 1에 존재하는 1Block을 액세스하기 위해 호출한다.

2. Instance 1에 존재하는 1BlockInstance 2의 호출에 응답하기 위해서 Instance 2SGADB Buffer Cache로 이동해야 한다. 이동을 위해 공유 Storage에 존재하는 DB를 이용하지 않고 Instance 사이의 Interconnect를 이용

3. Interconnect를 이용하여 Instance 2로 캐싱 된 1BlockA 프로세스가 액세스할 수 있게 된다.

 

Cache Fusion의 목적 : Block이 특정 NodeDB Buffer Cache에 로드되어 있다면 Disk I/O가 발생하지 않기 때문에 Block 이동을 빠르게 처리할 수 있어서 Oracle RAC 성능 향상에 가장 중요한 아키텍쳐이다.

 

Cache Fusion의 구성 요소

-  GRD(Global Resource Directory) : RAC에서 Global Resource를 관리한다. Cluster의 동기화를 위해서 Cluster내의 Resource 정보들(Resource Master ,Resource Holder)을 저장한다.

Resource Master : 특정 ResourceMaster를 지칭한다. 특정 Global Resource는 반드시 하나의 GRD에서 최 신 정보를 관리한다.

Resource Holder : 특정 Resource의 최종 버전을 가지고 있는 Node를 의미한다.

 

- GCS(Global Cache Service) : Data의 일관성 및 무결성을 유지하는 서비스로, DB Buffer Cache 동기화에 대한 Global 정보를 저장한다. , Block에 대한 Lock 정보를 관리한다.

- GES(Global Enqueue Service) : DB Lock에 대한 정보를 관리하는 서비스로 Block 이외의 Lock 정보를 저장한다. , Enqueue Lock, Library Cache Lock, Row Cache Lock등의 정보를 관리한다.

 

반응형

'Oracle' 카테고리의 다른 글

NL Join / Sort Merge Join / Hash Join  (0) 2023.09.19
SQL 트레이스  (0) 2023.09.13
Voting Disk , OCR  (0) 2023.09.06
AutoTrace  (0) 2023.09.04
Oracle DB 인스턴스 실행 단계  (0) 2023.08.31