Blog

RAC란 본문

DB/Oracle

RAC란

JunginKim 2022. 12. 5. 20:13
728x90
반응형

개념

  • Oracle Real Application Cluster
  • Oracle RAC는 여러 개의 Instance가 하나의 DB를 Access 할 수 있음
  • Application에서 접속할 수 있는 통로는 여러개이며 DB는 하나인 형태
  • Oracle RAC = N개의 Instance + 1개의 DB
  • RAC로 연결된 N개의 Instance에서 동일한 Datafile을 공유해 Access
  • DB 작업에 사용할 수 있는 Resource(CPU, Memory)는 공유하지 않으며 해당 Node의 것만 이용

Cluster

  • 두 개 이상의 독립된 서버들과 Disk를 하나로 연결하는 기법
  • 사용자가 Cluster로 구성된 서버들 중 어느 서버에 접속해도 동일한 Disk를 Access
  • Oracle RAC는 Oracle Clusterware를 사용해 어느 Instance에 접속해도 사용자에게 동일한 Data를 실시간으로 조회, 변경할 수 있는 기능 제공
  • Oracle Clusterware를 사용하면 높은 처리량과 고가용성 보장 가능

Oracle RAC Instance

  • Oracle RAC 환경의 각 Instance에는 각자의 SGA와 Background Process들이 존재
  • 모든 Datafile과 Control File은 모든 Instance에 동일하게 Access할 수 있어야 하므로 공유 Storage에 위치
  • 각 Instance에는 고유한 Online Redo Log File 존재
  • Online Redo Log File은 자신이 속한 Instance에 의해서만 기록 가능
  • Online Redo Log File도 Instance 복구 시 다른 Instance에 Access할 수 있어야 하므로 공유 Storage에 저장됨
    • Redo Log Group을 공유하나 Redo Log File에 쓰는 것은 개별적
단일 InstanceOracle RAC
Instance1N
Database11
Control File하나의 Instance에 존재공유 Storage에 존재
SGA + Background Process하나의 Instance에 존재각각의 Instance별로 존재
Redo Log File하나의 Instance에 존재각각의 Instance별로 존재
UNDO Tablespace하나의 Instance에 존재각각의 Instance별로 존재
TEMP Tablespace하나의 Instance에 존재Database에 하나만 존재
SYSTEM Tablespace하나의 Instance에 존재Database에 하나만 존재
ETC Tablespace하나의 Instance에 존재Database에 하나만 존재
  • Data 정합성
    • Oracle RAC 환경의 Instance는 여러 Instance에서 동시에 동일한 data를 Access하는 구조로 Data 공유
    • 동일한 Data를 여러 Instance가 읽어도 문제 없으나 여러 Instance가 동시에 수정, 삽입 등을 하는 경우 Data 무결성에 문제 발생
    • Cache Lock과 Cache Fusion등을 사용해 이를 보장

Oracle RAC 구성요소

Oracle Grid Infrastructure

  • Oracle RAC는 Grid Infrastructure에서 제공하는 Oracle Clusterware의 기반 하 여러 DB Server를 묶어 하나의 System처럼 동작하도록 지원
    • Grid Infrastructure(GI): Oracle Clusterware 및 ASM으로 구성되며 OS와 긴밀히 통합된 Software Layer
    • Clusterware 설치: RAC 구성을 위해 필요한 Software이며 Oracle 설치 계정 이외 별도의 계정을 생성하여 설치하는 것을 권장
    • Clusterware의 OS 계정: 일반적으로 GI와 ASM을 소유하는 전용 OS 계정인 grid 계정 사용

공유 Storage

  • 각 Instance는 공유 Storage를 통해 물리적인 Data를 공유하며 DB에서 사용하는 ASM및 CFS(Cluster File System)을 구성
  • 공유 Storage에서 Database File은 모든 Node에 동등하게 동시에 엑세스 할 수 있어야 함
  • Storage에서 생성된 Disk는 공유 모드가 활성되어야 함

Oracle RAC Network 구성 요소

Public IP

  • 각 Node에 대한 고유한 IP
  • 서버 주소와 동일
  • Node 관리 목적으로 사용

Service IP

  • Client에서 DB Server의 Public IP를 사용하여 접속할 경우 장애가 발생한 Node에서 세션을 다른 Node로 옮기는 데 많은 시간이 걸림
  • VIP(Virtual IP)를 사용해 Client가 Node에 장애가 발생했다는 것을 신속하게 인식하게 함
  • 다른 Node로 재연결 시간 향상

SCAN(Single Client Access Name)

  • GNS 및 DNS를 사용하여 정의 가능
  • SCAN을 이용할 경우 Cluster 내 서버 수에 관계 없이 Load Balancing 및 HA를 고려해 3개의 IP Address 권장

Private IP(Cluster Interconnect)

  • Cluster Node 별 통신을 위한 IP
  • Resource 동기화를 위해 Cluster에서 Heartbeat Process를 위해 사용하는 통신 경로
  • Instance에서 다른 Instance로 Data를 전송(Cache Fusion)하는 용도로 사용

Oracle RAC Cache Fusion

  • OPS(Oracle Parallel Server)의 Block Transformation의 문제를 극복하기 위해 나타난 Architecture
    • Block Transformation
      • 특정 Instance에 존재하는 Block을 다른 Instance에서 Access하기 위해 해당 Block을 공유 Storage에 write한 후 그 Block을 호출한 Instance의 DB Buffer Cache로 Caching하여 Data Block을 다른 Node로 이동시키는 방식
      • 각각의 Instance에서 많은 작업이수행되어 이동하는 Block이 많으면 성능 저하가 발생
  1. Instance 2에 접속한 A Process는 Instance 1에 존재하는 1번 Block을 Access하기 위해 호출
  1. Instance 1에 존재하는 1번 Block은 Instance 2의 호출에 응답하기 위해 Instance 2의 SGA의 DB Buffer Cache로 이동, 이동을 위해서 공유 Storage의 DB를 이용하지 않고 Instance 사이의 Interconnect를 이용
  1. Interconnect를 이용해 Instance 2로 Caching된 1번 Block을 A Process가 Access할 수 있게 됨

목적

  • Block이 특정 Node의 DB Buffer Cache에 Load되어 있다면 Disk I/O가 발생하지 않아 Block 이동이 빠르게 처리되어 Oracle RAC 성능 향상에 가장 중요한 Architecture

구성요소(Oracle Kernel) → 깊이있게 하는 것 보다 담백하게

  • GRD(Global Resource Directory)
    • RAC에서 Global Resource 관리
    • Cluster의 동기화를 위해 Cluster 내의 Recource 정보(Resource Master, Resource Holder)들을 저장
      • Resource Master: 특정 Global Resource는 반드시 하나의 GRD에서 최신정보 관리
      • Resource Holder: 특정 Resource의 최정 버전을 가지고 있는 Node
  • GCS(Global Cache Service)
    • Data의 일관성 및 무결성을 유지하는 Service
    • DB Buffer Cache 동기화에 대한 Global 정보를 저장
    • Block에 대한 Lock 정보 관리
  • GES(Global Enqueue Service)
    • DB Lock에 대한 정보를 관리하는 Service
    • Block 이외의 Lock 정보 저장 및 관리
      • Enqueue Lock, Library Cache Lock, Row Cache Lock

Cache Fussion Access

  • Session이 요청한 것을 응답받는 방법
  • 크게 Local Access, Remote Access, Disk Access가 있음

Local Access

  • 요청한 Block의 최신 Block이 Local Instance에 존재할 경우 Instance간 동기화 없이 Access
  • Block을 Access하는 Session 위치 = 필요한 Block 위치 = Master Node의 위치 → Local Access

Remote Access

  • 요청한 Block이 다른 Instance에 의해 수정되어 Remote instance에 존재할 경우 Interconnect를 통해 Block을 복제하여 가져온 후 Data에 Access

2-way Access

  1. Instance 2에 접속한 Session에서 1번 Block을 Access하는데 Instance 2에 1번 Block이 없음
  1. Instance 2는 1번 Block을 Master Node인 Instance 3에게 요청
  1. Master Node는 GRD를 확인해 1번 Block의 Holder Node가 Instance 3인 것을 확인 후 Block 요청 전달
  1. Instance 3은 Master Node의 요청을 받고 1번 Block의 Image를 Instance 2에 전송
  1. Block을 전송받은 Instance 2는 Session의 요청에 대한 응답 수행
  • Blcok을 요청하는 Session의 위치 ≠ Block의 위치 = Master Node의 위치 → 2-way Access

3-way Access

  1. Instance 2에 접속한 Session에서 1번 Block을 Access하는데 Instance 2에 1번 Block이 없음
  1. Instance 2는 1번 Block을 Master Node인 Instance 3에게 요청
  1. Master Node는 GRD를 확인해 1번 Block의 Holder Node가 Instance 1인 것을 확인 후 Block 요청 전달
  1. Instance 1은 Master Node의 요청을 받고 1번 Block의 Image를 Instance 2에 전송
  1. Block을 전송받은 Instance 2는 Session의 요청에 대한 응답 수행
  • Block을 요청하는 Session의 위치 ≠ Block의 위치 ≠ Master Node의 위치 → 3-way Access

Disk Access

  1. Instance 2에 접속한 Session에서 1번 Block을 Access하는데 Instance 2에 1번 Block이 없음
  1. Instance 2는 1번 Block을 Master Node인 Instance 3에게 요청
  1. Master Node는 GRD를 확인해 어느 Instance에도 존재하지 않음 확인하고 Instance 2에게 전달
  1. Instance 2은 Master Node에게 전달 받고 Disk의 해당 Block을 Instance 2의 DB Buffer Cache에 Caching
  1. 1번 Block이 Caching되어 Instance 2는 Session의 요청에 대한 응답 수행
  • 어느 Instance에도 요청한 Block이 존재하지 않음 → Disk Access

Uploaded by N2T

728x90
반응형

'DB > Oracle' 카테고리의 다른 글

Oracle Admin  (0) 2022.12.15
Oracle Architecture  (0) 2022.12.14
ASM이란  (0) 2022.12.05
Comments