ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • RAC 02: 2 Node RAC 구축 — VM 환경 준비 & Grid 설치
    DB 스터디/04_RAC 2026. 5. 20. 18:43

    실습 스크립트 전체 보기: https://github.com/nsylove97/NSY-DB-Portfolio

    실습 환경

    OS Oracle Linux 7.9 (VMware Virtual Machine)
    DB Oracle Database 19c
    Grid Oracle Grid Infrastructure 19c
    구성 2 Node RAC (VM1 · VM2)
    공유 스토리지 ASM (+DATA / +FRA / +REDO / +OCR)
    네트워크 Public (NAT) · Private (Host-only) · VIP · SCAN
    VM1/VM2
    초기 구성 참조
    ASM 실습 01

     

    목차
    1. 사전 준비 — VM1 스냅샷 복구
    2. VM1 · VM2 호스트명 / IP 설정 확인
    3. /etc/hosts 동기화 확인
    4. Private Interconnect (NIC 2) 활성화 및 통신 확인
    5. VMX 설정 확인
    6. ASM 공유 디스크 연결 확인 — VM2에서 oracleasm scandisks
    7. gridSetup.sh (Cluster 모드) — 2 Node RAC Grid Infrastructure 설치
    8. 클러스터 리소스 상태 확인 — crsctl stat res -t
    9. ASMCA 실행 — 디스크 그룹 DATA, FRA, REDO 생성
    10. DB 소프트웨어 설치 — runInstaller
    11. RAC DB 생성 — dbca

    12. 설치 결과 확인
    13. 주요 명령어 정리

    1. 사전 준비 — VM1 스냅샷 복구

    • RAC 구축은 기존에 구성된 Standalone Grid / Data Guard 환경과 별도로 진행
    • VM1을 스냅샷으로 깨끗한 초기 상태로 되돌린 후 시작
    -- [VMware — 스냅샷 복구 절차]
    -- Snapshot Manager에서 "ASM 설치 직후" 스냅샷 선택
    -- Go To → VM1 초기 상태 복구 완료

    VMwared에서 VM-Snap-Snapshot Manager 선택, ASM 설치 직후 스냅샷 선택 후 'Go To' 클릭
    스냅샷으로 복구할 거냐는 메시지, 'Yes' 클릭
    ASM 설치 후로 복구 완료

    -- VM1 기동 후 상태 확인
    $ hostname
    oelsvr1.localdomain
    
    $ ip addr show ens33
    -- Public IP 확인 (예: 192.168.111.50)

    host 이름과 Public IP 확인

    • VM2는 ASM 실습 01에서 VM1의 Clone으로 만들어 둔 VM 그대로 사용
    • VM3(Data Guard Standby용)는 이번 실습과 무관하므로 종료 상태 유지

    2. VM1 · VM2 호스트명 / IP 설정 확인

     

    VM2 기동 후 호스트명과 IP 확인, VM1과 동일하면 변경

    -- [VM2]
    $ hostname
    oelsvr1.localdomain
    
    $ ip addr show ens33 | grep inet
        inet 192.168.111.50/24

    VM2 기동 후 host 이름과 Public IP 동일한 것 확인

    -- [VM2 — root] Hostname 수정
    $ hostnamectl set-hostname oelsvr2
    
    -- IP 수정
    $ vi /etc/sysconfig/network-scripts/ifcfg-ens33
    
    -- IPADDR=192.168.111.51    <-- 이 부분을 50에서 51로 변경
    
    -- 네트워크 재시작 및 확인 
    $ systemctl restart network
    
    $ hostname
    oelsvr2
    
    $ ip addr show ens33 | grep inet
    inet 192.168.111.51/24

    VM2에서 Hostname 수정
    IP도 수정
    네트워크 재시작 후 Hostname과 IP 변경된 것 확인


    3. /etc/hosts 동기화 확인

     

    양 노드의 /etc/hosts가 Public · VIP · Private · SCAN 대역 모두 일치하는지 확인

    -- [VM1 · VM2 공통]
    $ cat /etc/hosts
    
    -- [출력 예시]
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    # Public
    192.168.111.50 oelsvr1 oelsvr1.localdomain
    192.168.111.51 oelsvr2 oelsvr2.localdomain
    
    # VIP
    192.168.111.52 oelsvr1-vip
    192.168.111.53 oelsvr2-vip
    
    # Private
    10.10.10.1 oelsvr1-priv
    10.10.10.2 oelsvr2-priv
    
    # SCAN
    192.168.111.55 oelsvr-scan
    192.168.111.56 oelsvr-scan # 추가 1
    192.168.111.57 oelsvr-scan # 추가 2

    VM1에서 /etc/hosts 파일 내용 확인
    VM1에서 /etc/hosts 파일 내용 확인

    • SCAN IP는 /etc/hosts에 동일한 호스트명으로 3개 등록 (DNS 없는 실습 환경 기준)
    • VM1 기준으로 작성 후 scp /etc/hosts root@oelsvr2:/etc/hosts 로 VM2에 동일하게 복사하면 편리

    4. Private Interconnect (NIC 2) 활성화 및 통신 확인

     

    노드 간 Cache Fusion · GCS/GES 통신에 사용할 Private NIC(ens37, Host-only) 활성화, 양 노드 간 통신 검증

    -- [VM1 — root]
    -- 리눅스에서 인식한 Pirvate NIC 네트워크 인터페이스 이름 확인
    $ ip link
    -- [결과] (이름: ens37)
    -- 1: lo
    -- 2: ens33
    -- 3: ens37
    
    -- ifcfg-ens37이 없으므로 새로 생성
    $ vi /etc/sysconfig/network-scripts/ifcfg-ens37
    TYPE=Ethernet
    BOOTPROTO=none
    NAME=ens37
    DEVICE=ens37
    IPADDR=10.10.10.1
    PREFIX=24
    ONBOOT=yes
    
    $ systemctl restart network
    
    $ ip addr show ens37 | grep inet
        inet 10.10.10.1/24

    VM1에서 Private NIC 네트워크 인터페이스 이름 확인 (ens37)
    ifcfg-ens37 생성 후 내용 입력
    네트워크 재시작 후 적용 확인

    -- [VM2 — root]
    -- 리눅스에서 인식한 Private NIC 네트워크 인터페이스 이름 확인
    $ ip link
    -- [결과] (이름: ens37)
    -- 1: lo
    -- 2: ens33
    -- 3: ens37
    
    -- ifcfg-ens37이 없으므로 새로 생성
    $ vi /etc/sysconfig/network-scripts/ifcfg-ens37
    TYPE=Ethernet
    BOOTPROTO=none
    NAME=ens37
    DEVICE=ens37
    IPADDR=10.10.10.2
    PREFIX=24
    ONBOOT=yes
    
    $ systemctl restart network
    
    $ ip addr show ens37 | grep inet
        inet 10.10.10.2/24

    VM2에서도 Pirvate NIC 네트워크 인터페이스 이름 확인 (ens37)
    ifcfg-ens37 생성 후 내용 입력
    네트워크 재시작 후 적용 확인

    -- [VM1] M2 Private IP로 ping 확인
    $ ping -c 3 10.10.10.2
    
    -- [VM2] VM1 Private IP로 ping 확인
    $ ping -c 3 10.10.10.1

    VM1에서 VM2 Pirvate IP로 ping 확인
    VM2에서 VM1 Pirvate IP로 ping 확인

    • ONBOOT=yes 누락 시 재부팅 후 NIC가 down 상태가 되므로 반드시 설정
    • ping 실패 시 VMware 어댑터가 Host-only로 설정되어 있는지 확인

    5. VMX 설정 확인

     

    공유 ASM 디스크를 양 노드에서 동시에 사용하려면 VMX 파일에 다음 설정 필요

    -- [VMware Host — VM1.vmx · VM2.vmx 파일 직접 편집 또는 확인]
    
    # 1. 디스크 잠금 해제 (양쪽 VM 동시 접근 허용)
    disk.locking = "FALSE"
    # 2. 디스크 UUID 고정 (oracleasm이 디스크를 고유하게 인식하도록 함)
    disk.EnableUUID = "TRUE"
    # 3. 디스크 캐시 비활성화 (데이터 동기화 꼬임 방지)
    diskLib.dataCacheMaxSize = "0"
    # 4. 미리 읽기(Read Ahead) 캐시 비활성화 (캐시를 완전히 끄기 위한 세트 설정)
    diskLib.dataCacheMaxReadAheadSize = "0"
    # 5. ASM 디스크가 연결된 SCSI 컨트롤러를 공유 모드로 설정
    scsi1.sharedBus = "virtual"

    VM1.vmx에서 설정 확인
    VM2.vmx에서도 설정 확인

    항목 목적
    disk.locking FALSE VMware 기본 디스크 잠금 비활성화 → 여러 VM이 동일 디스크 접근 허용
    disk.EnableUUID TRUE 디스크에 고정 UUID 부여 → oracleasm이 디스크를 안정적으로 인식
    diskLib.dataCacheMaxSize 0 디스크 캐시 비활성화 → 데이터 동기화 꼬임 방지
    diskLib.dataCacheMaxReadAheadSize 0 미리 읽기 캐시 비활성화 → 캐시 완전 비활성화 세트 설정
    scsi1.sharedBus virtual ASM 디스크가 연결된 SCSI 컨트롤러를 공유 모드로 설정
    • VM2.vmx에도 동일하게 설정되어 있어야 함
    • VMware에서 VM 전원이 꺼진 상태에서 .vmx 파일을 텍스트 에디터로 직접 열어 확인·수정
    • scsi1은 ASM 디스크가 연결된 SCSI 컨트롤러 번호에 맞게 지정 (다른 컨트롤러 번호를 사용하는 경우 scsi0, scsi2 등으로 변경)

    모든 ASM 디스크 Disk Mode 설정

    VM1 · VM2의 Settings에서 모든 ASM 디스크의 Disk Mode를 Independent - Persistent로 설정

    VM1에서 모든 ASM 디스크의 Mode를 Independent-Persistent로 설정
    VM2에서도 똑같이 설정

    • Independent - Persistent로 설정하면 스냅샷 촬영 시 ASM 디스크 제외
    • 이 설정 생략 시, 스냅샷 시점에 ASM 디스크가 포함되어 데이터 불일치 또는 -000001.vmdk 형태의 파일 분리 발생 가능

    6. ASM 공유 디스크 연결 확인 — VM2에서 oracleasm scandisks

     

    VM1에서 생성한 ASM 디스크(asm_disk1~11.vmdk)가 VM2에도 연결되어 있는지 확인 후 VM2에서 oracleasm으로 인식

    -- [VM2 — root]
    -- ASMLib 서비스 기동
    $ systemctl start oracleasm
    $ systemctl enable oracleasm
    
    -- 공유 디스크 스캔
    $ oracleasm scandisks
    Reloading disk partitions: done
    Cleaning any stale ASM disks...
    Scanning system for ASM disks...
    
    -- 인식된 디스크 목록 확인
    $ oracleasm listdisks
    DATA1
    DATA2
    DATA3
    DATA4
    FRA1
    FRA2
    OCR1
    OCR2
    OCR3
    REDO1
    REDO2

    VM1에서 ASMLib 서비스 활성화 후 디스크 스캔 및 목록 확인

    • VM1에서 oracleasm createdisk로 레이블링한 디스크는 VM2에서 scandisks만 실행하면 자동으로 인식
    • createdisk를 VM2에서 다시 실행하지 않음
    • 디스크가 인식되지 않으면 VMware 설정에서 해당 .vmdk 파일이 VM2에 실제로 연결되어 있는지 확인
    -- [VM1 — 비교 확인]
    $ oracleasm listdisks
    DATA1
    DATA2
    ...
    REDO2
    
    -- 양 노드 목록이 동일해야 함

    VM1에서 ASM 디스크 목록


    7. gridSetup.sh (Cluster 모드) — 2 Node RAC Grid Infrastructure 설치

    • Grid Infrastructure를 Cluster 모드로 설치
    • 설치는 VM1에서만 실행하며 VM2는 설치 과정 중 원격으로 구성
    -- [VM1 — grid 계정]
    $ cd $ORACLE_HOME
    $ ./gridSetup.sh

    VM1의 grid 계정에서 Grid 설치

     

    설치 화면 주요 선택 항목은 다음과 같음

    단계 선택 값
    Configuration Option Configure Oracle Grid Infrastructure for a New Cluster
    Cluster Configuration Configure an Oracle Standalone Cluster
    Cluster Name oelsvr-cluster
    SCAN Name oelsvr-scan
    SCAN Port 1521
    Cluster Nodes 추가 oelsvr1 (local) + oelsvr2 추가
    Network Interface Usage ens37 (Host-only NIC 선택) : ASM & Private 
    Storage Option Use Oracle Flex ASM for storage
    ASM Disk Group +OCR (OCR 1, OCR 2, OCR 3 선택, NORMAL Redundancy)
    ASM Password 설정
    OS Groups asmadmin / asmdba / asmoper
    Install Location $GRID_HOME
    root script execution Automatically (자동 실행)

    Configuration Option: Configure Oracle Grid Infrastructure for a New Cluster 선택
    Cluster Configuration: Configure an Oracle Standalone Cluster 선택
    Cluster Name, SCAN Name, SCAN Port 설정
    Cluster Node Information에서 Add 선택
    oelsvr2와 oelsvr2-vip 입력 후 OK
    노드 추가된 것 확인 후 SSH connectivity -> Grid 계정 OS Password 입력 -> Setup
    SSH 연결이 성공적으로 이루어진 것 확인
    Network Interface Usage: ASM & Private 선택
    Storage Option: Use Oracle Flex ASM for storage 선택
    Create Grid Infrastructure Management Repository: No 선택 (관리용 DB 생성 여부)
    디스크 그룹 이름: OCR, Redundancy는 Normal, Change Discovery Path -> /dev/oracleasm/disks/*
    OCR 1-3 체크
    ASM Password는 똑같이 부여했음
    Failure Isolation: IPMI 사용 안 함
    Management Options: EM Cloud Control 사용 안 함
    Operating System Groups: OS 그룹은 그대로
    Installation Location: Oracle Base와 Grid Home 경로 확인
    Create Inventory: 인벤토리 경로 확인
    Root script execution: 자동 실행 선택
    Prerequisite Checks: Ignore All 선택

    • resolv.conf Integrity, DNS/NIS name service는 DNS 서버가 구축되지 않아 발생한 오류. 테스트 환경에서는 지장 없음 (Host name은 /etc/hosts 파일 수정으로 해결)

    Summary에서 세팅값 확인
    설치 진행 중

     

    root 스크립트 실행할거냐는 메시지, Yes 선택

     

    설치가 끝날 때 쯤 인증 오류 발생하나 무시해도 됨, OK 선택
    이것도 Yes 선택, 설치 완료


    8. 클러스터 리소스 상태 확인 — crsctl stat res -t

    Grid 설치 완료 후 클러스터 리소스 전체가 정상 기동되었는지 확인

    -- [VM1 — grid 또는 root]
    $ crsctl stat res -t
    --------------------------------------------------------------------------------
    Name           Target  State        Server                   State details
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.LISTENER.lsnr
                   ONLINE  ONLINE       oelsvr1                  STABLE
                   ONLINE  ONLINE       oelsvr2                  STABLE
    ora.chad
                   ONLINE  ONLINE       oelsvr1                  STABLE
                   ONLINE  ONLINE       oelsvr2                  STABLE
    ora.net1.network
                   ONLINE  ONLINE       oelsvr1                  STABLE
                   ONLINE  ONLINE       oelsvr2                  STABLE
    ora.ons
                   ONLINE  ONLINE       oelsvr1                  STABLE
                   ONLINE  ONLINE       oelsvr2                  STABLE
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
          1        ONLINE  ONLINE       oelsvr1                  STABLE
          2        ONLINE  ONLINE       oelsvr2                  STABLE
          3        OFFLINE OFFLINE                               STABLE
    ora.LISTENER_SCAN1.lsnr
          1        ONLINE  ONLINE       oelsvr2                  STABLE
    ora.LISTENER_SCAN2.lsnr
          1        ONLINE  ONLINE       oelsvr1                  STABLE
    ora.LISTENER_SCAN3.lsnr
          1        ONLINE  ONLINE       oelsvr1                  STABLE
    ora.OCR.dg(ora.asmgroup)
          1        ONLINE  ONLINE       oelsvr1                  STABLE
          2        ONLINE  ONLINE       oelsvr2                  STABLE
          3        OFFLINE OFFLINE                               STABLE
    ora.asm(ora.asmgroup)
          1        ONLINE  ONLINE       oelsvr1                  Started,STABLE
          2        ONLINE  ONLINE       oelsvr2                  Started,STABLE
          3        OFFLINE OFFLINE                               STABLE
    ora.asmnet1.asmnetwork(ora.asmgroup)
          1        ONLINE  ONLINE       oelsvr1                  STABLE
          2        ONLINE  ONLINE       oelsvr2                  STABLE
          3        OFFLINE OFFLINE                               STABLE
    ora.cvu
          1        ONLINE  ONLINE       oelsvr1                  STABLE
    ora.oelsvr1.vip
          1        ONLINE  ONLINE       oelsvr1                  STABLE
    ora.oelsvr2.vip
          1        ONLINE  ONLINE       oelsvr2                  STABLE
    ora.qosmserver
          1        ONLINE  ONLINE       oelsvr1                  STABLE
    ora.scan1.vip
          1        ONLINE  ONLINE       oelsvr2                  STABLE
    ora.scan2.vip
          1        ONLINE  ONLINE       oelsvr1                  STABLE
    ora.scan3.vip
          1        ONLINE  ONLINE       oelsvr1                  STABLE
    --------------------------------------------------------------------------------

    클러스터 리소스 상태 확인, 모두 정상 작동중

    • 모든 리소스의 Target과 State가 ONLINE / ONLINE 이어야 함
    • OFFLINE 상태인 리소스는 crsctl start res <리소스명> 으로 수동 기동한 후 원인 확인
    • SCAN 리스너 3개, VIP 2개OCR 디스크 그룹이 자동 등록되어 있는지 확인
    -- OCR · Voting Disk 배치 확인
    $ crsctl query css votedisk
    ##  STATE    File Universal Id                File Name Disk group
    --  -----    -----------------                --------- ---------
     1. ONLINE   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (/dev/oracleasm/disks/OCR1) [OCR]
     2. ONLINE   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (/dev/oracleasm/disks/OCR2) [OCR]
     3. ONLINE   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (/dev/oracleasm/disks/OCR3) [OCR]
    Located 3 voting disk(s).
    
    $ ocrcheck
    [grid@oelsvr1 ~]$ ocrcheck
    Status of Oracle Cluster Registry is as follows :
             Version                  :          4
             Total space (kbytes)     :     491684
             Used space (kbytes)      :      84036
             Available space (kbytes) :     407648
             ID                       :  117449484
             Device/File Name         :       +OCR
                                        Device/File integrity check succeeded
    
                                        Device/File not configured
    
                                        Device/File not configured
    
                                        Device/File not configured
    
                                        Device/File not configured
    
             Cluster registry integrity check succeeded
    
             Logical corruption check bypassed due to non-privileged user

    OCR과 Voting Disk 배치 확인

    • Voting Disk는 +OCR 디스크 그룹 내에 NORMAL Redundancy 기준으로 3개 자동 배치됨
    • OCR도 동일하게 +OCR 디스크 그룹에 저장됨

    9. ASMCA 실행 — 디스크 그룹 DATA, FRA, REDO 생성
    -- [VM1 — grid 계정]
    $ asmca

    VM1 grid 계정에서 asmca 실행
    디스크 그룹 DATA, FRA, REDO를 Redundancy Normal로 생성


    10. DB 소프트웨어 설치 — runInstaller 

    -- [VM1 — oracle 계정]
    $ cd $ORACLE_HOME
    $ ./runInstaller

     

    VM1 Oracle 계정에서 ORACLE_HOME으로 이동, runInstaller 실행

     

    runInstaller 주요 선택 항목:

    단계 선택 값
    Configuration Option Set Up Software Only
    Node Selection oelsvr1 · oelsvr2 모두 체크
    SSH Connectivity 패스워드 없이 노드 간 통신 설정

    Configuration Option: Set Up Software Only 선택

     

    Database Installation Option: Oracle Real Application Clusters database installation 선택
    Nodes Selection: oelsvr2 선택 후 SSH connectivity -> OS Password 입력 -> Setup
    oelsvr2 연결 성공
    Database Edition: Enterprise Edition 선택
    Installation Location: Oracle Base와 Oracle Home 위치 확인
    Operating System Groups: OS 그룹 확인, 그대로 유지
    자동 Root 스크립트 실행 선택 후 root 비밀번호 입력

     

    Prerequisite Check 오류 처리

    설치 전 사전 점검 단계에서 아래 오류가 발생 가능

    Prerequisite Checks: 여러 오류가 뜸

     

    1. PRVG-11932 — oelsvr2에 디렉토리 생성 불가

    • oelsvr1의 설치 프로그램이 oelsvr2에 원격으로 디렉토리를 생성하려 할 때 권한이 없어 실패한 문제
    • 조치 후 설치 화면에서 [Check Again] 클릭
    -- [VM2 — root]
    -- 디렉토리 사전 생성
    $ mkdir -p /u01/app/oracle/product/19.3.0/dbhome
    
    -- oracle 계정으로 소유권 변경
    $ chown -R oracle:oinstall /u01/app/oracle
    
    -- 쓰기 권한 부여
    $ chmod -R 775 /u01/app/oracle

    VM2에 오라클 홈 디렉토리 생성 후 소유권 및 쓰기 권한 부여
    Check Again 클릭

     

    사라짐, 문제 해결

     

     

     

    2. PRVG-13606 — VM2 chrony 시간 동기화 실패

    -- [VM2 — root]
    -- chronyd 재시작
    $ systemctl restart chronyd
    
    -- 즉시 시간 동기화 강제 실행
    $ chronyc makestep
    200 OK
    
    -- 외부 시간 서버 연결 확인
    $ chronyc sources -v

    VM2에서 chrony 재시작 후 시간 동기화, 외부 시간 서버 연결 확인
    다시 Check Again
    해결 안 됨

     

     

    VM1에서도 chrony 다시 동기화
    Check Again 눌렀지만 해결 안 됨
    VM1과 VM2 재부팅하니까 해결됨

    • 출력 결과 왼쪽에 ^* 기호가 표시되어야 정상 동기화 완료. ^?만 나오면 수 초 후 재확인
    • oelsvr1에서도 동일 오류가 발생했다면 같은 절차 반복
    • 그래도 안 되면 VM1 & VM2 재부팅

    3. resolv.conf Integrity, DNS/NIS name service 'oelsvr-scan' — 해결 불가, 무시

    • 실제 DNS 서버 없이 /etc/hosts에 SCAN IP를 등록한 VM 환경에서는 이 오류를 해결할 수 없음
    • 설치 화면에서 [Ignore All] 체크 후 [Next]로 넘어감

    DNS 문제이기 때문에 해결할 수 없음, Ignore All 선택
    Summary: 설치 정보 확인
    설치 진행 중
    하지만 SELinux 오류로 중단됨

     

    SELinux 오류 해결법

    -- [VM1 · VM2 — root]
    -- 영구 비활성화 (재부팅 후에도 유지)
    $ vi /etc/selinux/config
    
    -- SELINUX= 항목을 아래와 같이 수정
    SELINUX=disabled

    VM1, VM2에서 /etc/selinux/config 편집, SELINUX=disabled로 변경

    -- [VM1 · VM2 — root]
    -- 방화벽 중지 및 영구 비활성화
    -- SELinux가 켜진 환경은 방화벽도 켜져 있을 가능성이 높다
    -- 방화벽이 켜져 있으면 Private IP 노드 간 통신이 차단되어 설치가 실패한다
    $ systemctl stop firewalld
    $ systemctl disable firewalld

    VM1, VM2에서 방화벽 중지 및 비활성화

     

    설치 실패 후 재설치 절차

    설치 도중 Install Product 단계에서 오류로 중단된 경우, 찌꺼기 파일과 설정을 완전히 초기화한 후 재시작

     

    1단계 — 설치 창 종료

    • 오류 창을 닫고 설치 프로그램 하단 [Cancel] → [Yes]를 클릭해 설치 완전히 종료

    2단계 — 양 노드 $ORACLE_HOME 초기화

    -- [VM1 · VM2 — oracle]
    $ cd $ORACLE_HOME
    $ pwd
    -- 경로가 정확한지 반드시 확인 후 진행
    
    -- 내부 파일 및 숨김 파일 모두 삭제
    $ rm -rf *
    $ rm -rf .[^.]*
    
    -- 빈 폴더 확인 (. 과 .. 만 보여야 함)
    $ ls -al

    VM1, VM2에서 오라클 홈 디렉토리 초기화

     

    3단계 — Inventory 기록 삭제

    -- [VM1 — oracle]
    $ vi /u01/app/oraInventory/ContentsXML/inventory.xml

    VM1의 inventory.xml에서 DB 경로 적힌 줄 삭제

    • <HOME_LIST> 아래에서 DB 경로(/u01/app/oracle/product/19.3.0/dbhome)가 적힌 줄만 dd로 삭제 후 :wq 저장
    • Grid 경로(/u01/app/19.3.0/grid)가 적힌 줄은 절대 건드리지 말 것
    • DB 경로 줄이 없으면 :q로 종료

    4단계 — VM1 · VM2 재시작

    -- [VM1 · VM2 — root]
    $ reboot

    VM1 VM2 재시작

     

    5단계 — VM1에 설치 파일 압축 해제

    -- [VM1 — oracle]
    $ cd $ORACLE_HOME
    $ unzip LINUX.X64_193000_db_home.zip

    VM1에서 오라클 홈 디렉토리로 이동, 설치 파일 압축 해제

     

    6단계 — 재설치 시작

    -- [VM1 — oracle]
    $ cd $ORACLE_HOME
    $ ./runInstaller

    재설치 시작

     

    설치 중 root 스크립트 실행 여부 메시지, Yes 선택
    설치 완료


    11. RAC DB 생성 — dbca

     

    양 노드 소프트웨어 설치가 완료된 후 dbca 실행

    -- [VM1 — oracle 계정]
    $ dbca

    VM1에서 dbca 실행

    dbca 주요 선택 항목:

    단계 선택 값
    Database Operation Create a Database
    Creation Mode Advanced Configuration
    Deployment Type Oracle Real Application Clusters (RAC) database
    Node Selection oelsvr1 · oelsvr2 모두 선택
    Database Identification Global Name: orcl, SID Prefix: orcl
    Storage Option Oracle Automatic Storage Management (ASM)
    Storage Location +DATA
    Fast Recovery Area +FRA
    Configuration Type General Purpose
    Memory 적절히 조정 (각 노드 RAM 기준)
    Character Set AL32UTF8
    Connection Mode Dedicated Server Mode

    Database Operation: Create a database 선택
    Creation Mode: Advanced configuration 선택
    Deployment Type: Database Type은 RAC, 탬플릿은 General Purpose 선택
    Nodes Selection: oelsvr2 선택
    Database Identification: Global DB name과 SID Prefix 모두 orcl 입력, CDB는 해제
    Storage Option: Type은 ASM 선택 , DB 파일 위치는 그대로 유지, Multiplex redo logs and control files 클릭
    1번에 '+REDO', 2번에 '+FRA' 입력
    Fast Recovery Option: FRA 체크 후 FRA 영역은 +FRA 디스크 그룹 지정, 아카이브 모드 활성화
    Data Vault Option: 체크 안 하고 Next
    Configuration Options: 메모리는 ASMM 설정 그대로 유지
    캐릭터 셋도 그대로 유지
    Connection Mode도 Dedicated server mode 그대로 유지
    HR 샘플 스키마는 체크
    Management Options: CVU는 체크 해제, EM은 그대로 유지
    User Credentials: 관리자 암호는 똑같이 설정
    Creation Option: Create database 체크
    Prerequisite Checks: DNS 설정 때문에 생기는 오류, Ignore All 선택
    Summary: DB 생성 설정값 확인
    DB 생성 중
    DB 생성 완료

    -- DB 생성 완료 후 인스턴스 확인
    $ srvctl status database -d orcl
    Instance orcl1 is running on node oelsvr1
    Instance orcl2 is running on node oelsvr2
    

    DB 생성 완료 후 인스턴스 확인
    crsctl stat res -t에서 ora.orcl.db 리소스 추가된 것 확인

    • SID Prefix가 orcl이면 인스턴스명은 자동으로 orcl1, orcl2로 부여됨

    12. 설치 결과 확인

    -- [VM1 — oracle 계정]
    -- ORACLE_SID를 RAC 인스턴스명으로 변경
    $ vi ~/.bash_profile
    
    -- 아래 항목을 찾아 orcl1으로 수정
    export ORACLE_SID=orcl1
    
    -- 변경 사항 적용
    $ source ~/.bash_profile
    
    $ sqlplus / as sysdba
    
    -- 각 노드별 인스턴스 정보 확인
    SQL> SELECT inst_id, instance_name, host_name, status
    FROM gv$instance;
    
    --    INST_ID INSTANCE_NAME    HOST_NAME                      STATUS
    -- ---------- ---------------- ------------------------------ ------------
    --          1 orcl1            oelsvr1.localdomain            OPEN
    --          2 orcl2            oelsvr2

    VM1 oracle 계정의 .bash_profile 편집, ORACLE_SID=orcl1로 변경
    변경 적용 후 sqlplus로 접속
    각 노드별 인스턴스 정보 확인

    • gv$instance에서 양 노드(inst_id 1, 2)가 OPEN 상태이면 2 Node RAC 구축 완료
    -- ASM 인스턴스 확인 (양 노드)
    $ srvctl status asm
    ASM is running on oelsvr2,oelsvr1
    
    -- 리스너 확인
    $ srvctl status listener
    Listener LISTENER is enabled
    Listener LISTENER is running on node(s): oelsvr2,oelsvr1
    
    -- SCAN 리스너 확인
    $ srvctl status scan_listener
    SCAN Listener LISTENER_SCAN1 is enabled
    SCAN listener LISTENER_SCAN1 is running on node oelsvr1
    SCAN Listener LISTENER_SCAN2 is enabled
    SCAN listener LISTENER_SCAN2 is running on node oelsvr2
    SCAN Listener LISTENER_SCAN3 is enabled
    SCAN listener LISTENER_SCAN3 is running on node oelsvr2

    ASM 인스턴스, 리스너 및 SCAN 리스너 확인

    -- crsctl stat res -t 최종 확인
    $ crsctl stat res -t
    -- 모든 리소스 ONLINE / ONLINE 확인

    crsctl stat res -t 최종 확인


    13. 주요 명령어 정리

    명령어 설명
    oracleasm scandisks ASM 공유 디스크 재스캔
    oracleasm listdisks 인식된 ASM 디스크 목록 조회
    crsctl stat res -t 전체 클러스터 리소스 상태 확인
    crsctl query css votedisk Voting Disk 위치 및 상태 확인
    ocrcheck OCR 무결성 확인
    srvctl status database -d <db> RAC DB 전체 인스턴스 상태 확인
    srvctl status asm ASM 인스턴스 상태 확인
    srvctl status listener 노드 리스너 상태 확인
    srvctl status scan_listener SCAN 리스너 상태 확인
    crsctl start res <리소스명> 특정 리소스 수동 기동

    핵심 요약

    주제 핵심 포인트
    VM 사전 준비 VM1 스냅샷 복구 → VM2 Clone 활용 · VM3 종료 유지
    /etc/hosts Public · VIP · Private · SCAN 양 노드 완전 일치 필수
    Private NIC ens34 (Host-only) ONBOOT=yes · 양 노드 ping 확인
    VMX 설정 disk.locking=FALSE · disk.EnableUUID=TRUE — 공유 디스크 사용 전제 조건
    ASM 디스크 VM2에서 scandisks만 실행 — createdisk는 VM1에서만
    Grid 설치 Cluster 모드 · +OCR 디스크 그룹에 Voting Disk · OCR 자동 배치
    root.sh 순서 VM1 완료 → VM2 순서 반드시 준수
    설치 결과 crsctl stat res -t 전체 ONLINE · gv$instance 양 노드 OPEN 확인

     

Designed by Tistory.