ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ASM 실습 01: ASM 설치 (RAC·DG 대비 포함)
    DB 스터디/02_ASM 2026. 3. 25. 17:00

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

    실습 환경
    OS Oracle Linux 7.9 (VMware Virtual Machine)
    DB Oracle Database 19c (Grid Infrastucture + DB)
    접속 툴 SQL*Plus, MobaXterm(SSH)

    전체 설치 순서 개요

    단계 작업
    1 VMware VM 사양 확인 및 공유 디스크 설정
    2 디스크 그룹 설계 (11개 디스크)
    3 디스크 파티션
    4 Oracle ASM Library 설치
    5 방화벽 비활성화
    6 Preinstallation RPM 설치
    7 OS 계정(grid / oracle) 생성 및 그룹 설정 (Role Separation)
    8 hosts 파일 등록 (RAC 대역 사전 정의)
    9 시간 동기화 (chrony) 설정
    10 OS Kernel Parameter & Resource Limit 설정
    11 계정별 환경변수(.bash_profile) 설정
    12 디렉토리 생성 및 권한 설정
    13 ASM 디스크 설정 (oracleasm)
    14 VM 전원 종료 → 스냅샷 촬영 → VM 복제 (RAC·DG 대비)
    15 Grid Infrastructure 설치 (gridSetup.sh)
    16 DB 소프트웨어 설치 (runInstaller)
    17 DB 생성 (dbca)

    1. VMware VM 권장 사양 및 Virtual Machine Settings 설정

    • RAC 구성 시 호스트 PC 1대 위에 최소 2대의 VM을 올려야 하므로 호스트 사양도 고려 필요
    • 아래는 노드 1 기준 권장 사양
    항목 권장 사양
    CPU 4 코어 CPU 이상 (Grid + DB 동시 기동)
    RAM 최소 12GB ~ 권장 16GB (Grid 최소 8GB + DB 최소 4GB)
    OS 디스크 80GB 이상
    NIC 최소 2개 필수 (NIC 1: Public / NIC 2: Private Interconnect)
    공유 디스크 총 11개 × 10GB (ASM 디스크 그룹용)

     

    1-1. NIC 2 추가 (RAC Interconnect 전용)

    • RAC는 노드 간 내부 통신(Interconnect / 캐시 퓨전)을 위한 전용 랜카드가 하나 더 필요
    • 기본 NAT 어댑터(NIC 1) 하나만 있으므로 Host-only 어댑터를 추가해야 함
    NIC 네트워크 타입 용도
    NIC 1 NAT 또는 Bridged (기존) Public Network — 외부 접속, VIP, SCAN 통신
    NIC 2 Host-only (추가) Private Network — RAC 노드 간 Interconnect
    [Virtual Machine Settings 순서]
    
    1) 하단 [Add...] 클릭
    2) Hardware Type: Network Adapter 선택 → [Next]
    3) Network connection:
       ● Host-only: A private network shared with the host  ← 선택
    4) [Finish]
    
    → NIC 1(NAT): 외부 통신용 / NIC 2(Host-only): 내부 Interconnect 전용으로 구성됨

    Virtual Machine Settings에서 Add -> Network Adapter 선택 후 Host-only로 추가

     

    1-2. ASM용 공유 디스크 11개 추가

    • 반드시 Thick Provision(디스크 미리 할당) 방식으로 생성해야 RAC 구성 시 I/O 에러 방지
    • 아래 과정을 총 11번 반복
    [Virtual Machine Settings 순서 — 11번 반복]
    
    1) 하단 [Add...] 클릭
    2) Hardware Type: Hard Disk 선택 → [Next]
    3) Virtual Disk Type: SCSI (Recommended) 선택 → [Next]
    4) Disk: Create a new virtual disk 선택 → [Next]
    5) Disk Capacity 설정:
       - Maximum disk size (GB): 10
       - Allocate all disk space now             ← 반드시 체크 (미체크 시 RAC I/O 에러 발생)
       - ● Store virtual disk as a single file   ← 선택
       → [Next]
    6) Disk File 이름 지정 (알아보기 쉽게):
       asm_disk1.vmdk, asm_disk2.vmdk ... asm_disk11.vmdk
       → [Finish]

    ASM용 디스크 11개도 추가

     

    1-3. 디스크 SCSI 컨트롤러 번호 분리

    • OS 디스크는 SCSI 0:0 사용 → 공유 디스크는 완전히 분리된 SCSI 1번 컨트롤러에 배치
    • 추가된 11개 디스크 각각에 대해 아래 순서로 노드 번호 변경
    [Virtual Machine Settings 순서]
    
    1) 추가된 10GB 디스크 중 첫 번째 디스크 클릭
    2) 우측 하단 [Advanced...] 클릭
    3) Virtual device node 드롭다운에서 SCSI 1:0 선택 → [OK]
    
    → 이후 나머지 디스크도 순서대로: (SCSI 1:7은 예약돼서 skip)
       두 번째  → SCSI 1:1
       세 번째  → SCSI 1:2
       ...
       열한 번째 → SCSI 1:11
    
    4) 모두 변경 후 Virtual Machine Settings 창 하단 [OK] 클릭하여 저장

     

    디스크 선택 후 Advanced -> Virtual device node 에서 node 변경

     

    1-4. VMX 파일 수정 (동시 접근 및 고유 식별자 부여)

    • VM 전원을 끈 상태에서 진행
    • ASMLib이 디스크를 고유하게 인식하고 멀티 노드에서 동시 쓰기가 가능하도록 설정
    [Windows 파일 탐색기에서 진행]
    
    1) VM 저장 경로로 이동
    2) oelsvr1.vmx 파일 → 마우스 우클릭 → 연결 프로그램 → 메모장
    3) 텍스트 문서 맨 아래에 아래 두 줄 추가
    
    disk.locking = "FALSE"
    disk.EnableUUID = "TRUE"
    
    4) Ctrl + S 저장 → 메모장 닫기
    5) VMware에서 VM 다시 기동

    vmx 맨 아래 줄에 두 줄 추가 후 저장


    2. 디스크 그룹 설계

    • 11개의 디스크를 용도별로 4개 그룹으로 분리
    • 현재는 단일 노드로 설치하지만, 추후 RAC / Data Guard 확장을 고려한 구성
    • RAC의 Voting Disk는 쿼럼(Quorum) 알고리즘 사용 → 반드시 홀수(1, 3, 5...)개 필요
      • NORMAL Redundancy 환경에서는 최소 3개의 Failure Group 필요 → +OCR에 디스크 3개 할당
    디스크 그룹 디스크 수 할당 디스크 미러링 용도
    +DATA 4개 DATA1 ~ DATA4 NORMAL 데이터파일, 컨트롤파일, 파라미터파일
    +FRA 2개 FRA1 ~ FRA2 NORMAL 아카이브 로그, 백업, Flashback 로그
    +REDO 2개 REDO1 ~ REDO2 NORMAL 온라인 Redo Log (I/O 분리로 성능 향상)
    +OCR 3개 OCR1 ~ OCR3 NORMAL OCR / Voting Disk (RAC 전용, 현재는 예비)
    • Data Guard 확장 시: Standby DB도 동일한 +DATA, +FRA, +REDO 디스크 그룹 구성 필요
    • RAC 확장 시: 모든 노드에서 동일한 공유 디스크에 접근 가능해야 함

    3. 디스크 파티션

    • 10G 공유 디스크 11개에 각각 파티션 생성
    • /dev/sdb ~ /dev/sdl 11개에 동일하게 적용
    -- 현재 디스크 구성 확인
    lsblk

    lsblk 명령어로 현재 디스크 구성 확인

    -- /dev/sdb 파티션 생성 (root계정에서, /dev/sdc ~ /dev/sdl도 동일하게 반복)
    fdisk /dev/sdb
    
    Command (m for help): n          ← 새 파티션 생성
    Select (default p): p            ← primary 파티션
    Partition number (1-4): [Enter]  ← 기본값 1
    First sector: [Enter]            ← 기본값 사용
    Last sector:  [Enter]            ← 기본값 사용 (전체 10G 사용)
    Command (m for help): w          ← 저장 후 종료
    
    -- 파티션 생성 후 확인
    lsblk

    11개 디스크에 각각 파티션 생성 후 lsblk로 확인


    4. Oracle ASM Library 설치

    • ASMLib: 오라클이 디스크를 직접 관리할 수 있도록 해주는 커널 드라이버 라이브러리
    -- 설치 가능한 oracleasm 패키지 목록 확인
    yum list *oracleasm*
    
    -- ASM 라이브러리 지원 패키지 설치
    yum -y install oracleasm-support    
    
    -- ASM 커널 모듈 설치
    yum -y install kmod-oracleasm

    oracleasm 패키지 목록 확인 후 둘 다 설치


    5. 방화벽 비활성화

    -- 방화벽 즉시 중지
    systemctl stop firewalld.service
    
    -- 부팅 시 자동 시작 비활성화
    systemctl disable firewalld.service

    방화벽 중지 및 비활성화


    6. Preinstallation RPM 설치

    • Oracle DB 설치에 필요한 OS 패키지, 커널 파라미터, 계정 설정을 자동으로 처리해주는 RPM
    yum -y install oracle-database-preinstall-19c

    Preinstallation RPM 설치

    • 설치 후 sysctl.conf 및 limits.conf 기본값이 자동 세팅
    • 10번 항목(Kernel Parameter) 수동 입력 전 반드시 기존 설정 먼저 확인
    -- Preinstall RPM이 자동 세팅한 커널 파라미터 확인
    cat /etc/sysctl.conf
    
    -- Resource Limit 자동 세팅 확인
    cat /etc/security/limits.d/oracle-database-preinstall-19c.conf
    -- → 이미 세팅된 값은 중복 입력 불필요, 부족한 값만 추가

    자동 세팅된 /etc/sysctl.conf 커널 파라미터 확인

     

    자동 세팅된 resource limit 확인


    7. OS 계정(grid / oracle) 생성 및 그룹 설정

    • 오라클 공식 권장 방식: Role Separation — ASM 스토리지 관리 권한과 DB 관리 권한을 분리
    • Preinstallation RPM(6번)이 주요 그룹을 이미 자동 생성하므로 먼저 현재 그룹 목록을 확인

    그룹 현황 확인

    -- 그룹 현황 확인
    cat /etc/group
    
    -- [결과 — Preinstall RPM이 자동 생성한 그룹]
    oinstall:x:54321:  -- grid, oracle 공통 기본 그룹 (설치 디렉토리 소유 그룹)
    dba:x:54322:       -- DB SYSDBA 권한 그룹
    oper:x:54323:      -- DB SYSOPER 권한 그룹
    backupdba:x:54324: -- SYSBACKUP 권한 그룹 (RMAN 백업/복구 전용)
    dgdba:x:54325:     -- SYSDG 권한 그룹 (Data Guard 관리 전용)
    kmdba:x:54326:     -- SYSKM 권한 그룹 (투명한 데이터 암호화 키 관리 전용)
    racdba:x:54330:    -- SYSRAC 권한 그룹 (RAC 관리 전용)
    • asmadmin / asmdba / asmoper 그룹은 자동 생성되지 않음 → 직접 추가 필요

    그룹 현황 확인 결과

    ASM 관련 그룹 추가 생성

    -- ASM 전체 관리 권한 그룹 (SYSASM)
    groupadd -g 54327 asmadmin
    
    -- ASM 데이터 접근 권한 그룹 (oracle 계정이 ASM 파일에 접근하기 위해 필요)
    groupadd -g 54328 asmdba
    
    -- ASM 인스턴스 시작/정지 권한 그룹 (SYSOPER for ASM)
    groupadd -g 54329 asmoper
    
    -- 추가 후 확인
    grep 'asm' /etc/group
    
    [결과]
    asmadmin:x:54327:
    asmdba:x:54328:
    asmoper:x:54329:

    ASM 관련 그룹 추가 생성 뒤 확인

    계정 생성 및 그룹 매핑

    -- grid 계정 생성 — ASM/GI 관리 전용
    -- 기본 그룹: oinstall
    -- 보조 그룹: asmadmin(SYSASM), asmdba(ASM 접근), asmoper(ASM SYSOPER), racdba(SYSRAC)
    
    useradd -u 1001 -g oinstall -G asmadmin,asmdba,asmoper,racdba grid
    passwd grid
    
    -- oracle 계정은 설치 단계에서 이미 생성 → usermod로 그룹 추가
    -- 기본 그룹: oinstall로 변경
    -- 보조 그룹: dba(SYSDBA), oper(SYSOPER), backupdba(SYSBACKUP),
    --           dgdba(SYSDG), kmdba(SYSKM), racdba(SYSRAC), asmdba(ASM 파일 접근)
    
    usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmdba oracle
    passwd oracle

    grid 계정 생성 및 oracle 계정 그룹 추가

    -- 계정 및 그룹 확인
    id grid
    id oracle

    grid와 oracle 그룹 확인


    8. hosts 파일 등록 (RAC 대역 사전 정의)

    • 현재는 단일 노드이지만 RAC 확장 시 필요한 IP 대역을 미리 정의해두는 것이 권장됨
    • DNS가 없으므로 SCAN IP는 hosts 파일에 1개만 매핑 (실무에서는 DNS로 3개 매핑)
    -- hosts 파일 수정
    vi /etc/hosts
    
    -- 추가할 내용
    
    # -----------------------------------------------
    # Public IP (NIC 1 — NAT/Bridged 대역)
    # -----------------------------------------------
    192.168.111.50  oelsvr1 oelsvr1.localdomain         # 현재 설치 노드 (노드 1)
    192.168.111.51  oelsvr2 oelsvr2.localdomain         # RAC 노드 2용 (미리 작성)
    
    # -----------------------------------------------
    # Virtual IP (Public과 같은 대역, 미사용 IP 할당)
    # RAC 구성 시 Clusterware가 VIP를 자동 관리
    # -----------------------------------------------
    192.168.111.52  oelsvr1-vip
    192.168.111.53  oelsvr2-vip
    
    # -----------------------------------------------
    # Private IP (NIC 2 — Host-Only, 다른 서브넷)
    # RAC 노드 간 Interconnect (캐시 퓨전) 전용
    # -----------------------------------------------
    10.10.10.1      oelsvr1-priv
    10.10.10.2      oelsvr2-priv
    
    # -----------------------------------------------
    # SCAN IP (DNS 없으므로 hosts에 1개만 매핑)
    # -----------------------------------------------
    192.168.111.55  oelsvr-scan

    hosts 파일 수정

    -- 호스트명 확인
    hostnamectl status

    호스트명 확인


    9. 시간 동기화 (chrony) 설정

    • RAC의 Clusterware는 노드 간 시간이 조금만 틀어져도 노드를 강제 재부팅(Eviction) 시킴
    • OEL 7.9 기본 시간 동기화 도구는 chrony (ntpd 대신 사용)
    • 단일 노드라도 미리 설정해두어야 RAC 확장 시 문제 없음
    -- chrony 설치
    yum -y install chrony
    
    -- chrony 시작 및 부팅 시 자동 시작 등록
    systemctl start chronyd
    systemctl enable chronyd
    
    -- 동기화 상태 확인
    chronyc tracking
    
    -- [결과 예시]
    Reference ID    : ...
    Stratum         : 3
    System time     : 0.000xxxxxx seconds fast of NTP time
    Last offset     : +0.000xxxxxx seconds

    chrony 설치
    chrony 시작 및 부팅 시 자동 등록 후 동기화 상태 확인


    10. OS 커널 파라미터 & Resource Limit 설정

     

    메모리 및 디스크 공간 사전 확인

    -- 메모리 확인 (Grid는 8GB 이상, DB는 1GB 이상 필요)
    grep MemTotal /proc/meminfo
    
    -- Swap 공간 확인 (메모리의 1~1.5배, 16GB 미만)
    grep SwapTotal /proc/meminfo
    
    -- /tmp 공간 확인 (1GB 이상 필요)
    df -h /tmp

    메모리, Swap, /tmp 공간 확인

     

    커널 파라미터 설정

    • 6번 Preinstall RPM이 기본값을 자동 세팅하므로 먼저 현재 값 확인 후 부족한 값만 추가
    -- 현재 자동 세팅된 값 먼저 확인
    cat /etc/sysctl.conf
    
    -- 부족한 값 추가
    vi /etc/sysctl.conf
    
    --웬만해선 다 세팅되어 있음 (없다면 sysctl.conf에 추가)
    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    kernel.shmall = 2097152
    kernel.shmmax = 10142509056
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048576
    
    -- 변경값 즉시 적용
    /sbin/sysctl --system
    
    -- 적용 확인
    /sbin/sysctl -a

    커널 파라미터는 이미 자동 세팅됨

     

     

    Resource Limit 설정 (oracle / grid 계정)

    -- 현재 자동 세팅된 값 먼저 확인
    cat /etc/security/limits.d/oracle-database-preinstall-19c.conf
    
    -- 부족한 값 추가
    vi /etc/security/limits.conf
    
    -- 세팅값
    oracle       soft     nofile     4096
    oracle       hard     nofile     65536
    oracle       soft     nproc      16384
    oracle       hard     nproc      16384
    oracle       soft     stack      10240
    oracle       hard     stack      32768
    oracle       soft     memlock    3145728
    oracle       hard     memlock    3145728
    
    grid         soft     nofile     4096
    grid         hard     nofile     65536
    grid         soft     nproc      16384
    grid         hard     nproc      16384
    grid         soft     stack      10240
    grid         hard     stack      32768
    grid         soft     memlock    3145728
    grid         hard     memlock    3145728

    자동 세팅된 Resource limit에 grid 관련 세팅값 없음
    limits.conf에 grid 관련 세팅값 추가

    -- 변경 후 서버 재부팅
    reboot
    
    -- 재부팅 후 oracle/grid 계정에서 적용 확인
    ulimit -Sn   # → 4096    (soft nofile)
    ulimit -Hn   # → 65536   (hard nofile)
    ulimit -Su   # → 16384   (soft nproc)
    ulimit -Hu   # → 16384   (hard nproc)
    ulimit -Ss   # → 10240   (soft stack)
    ulimit -Hs   # → 32768   (hard stack)

    oracle은 자동 세팅된 값, grid는 추가한 값으로 확인 가능


    11. 계정별 환경변수 설정 (.bash_profile)

     

    grid 계정

    -- vi로 .bash_profile에 아래 내용 추가
    vi ~/.bash_profile
    
    export LANG=C
    export ORACLE_BASE=/u01/app/grid
    export ORACLE_HOME=/u01/app/19.3.0/gridhome
    export ORACLE_SID=+ASM                            # ← ASM 인스턴스 SID
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
    umask 022

    oracle 계정

    -- vi로 .bash_profile에 아래 내용 추가
    vi ~/.bash_profile
    
    export LANG=C
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome
    export ORACLE_SID=orcl                            # ← DB 인스턴스 SID
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
    umask 022
    -- 환경변수 적용 확인
    env | grep ORA
    
    -- [결과]
    ORACLE_SID=orcl
    ORACLE_BASE=/u01/app/oracle
    ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome

    oracle 및 grid 계정에서 각각 환경변수 적용된 것 확인 가능


    12. 디렉토리 생성 및 권한 설정

    • Role Separation 적용으로 소유 그룹이 dba → oinstall로 변경됨
    -- Grid / Oracle / oraInventory 디렉토리 생성
    mkdir -p /u01/app/oracle
    mkdir -p /u01/app/oraInventory
    mkdir -p /u01/app/grid
    
    -- 소유자 및 권한 설정 (oinstall 그룹 기준)
    chown -R grid:oinstall   /u01/app/grid/
    chown -R oracle:oinstall /u01/app/oracle/
    chown -R grid:oinstall   /u01/app/oraInventory/
    chmod -R 775             /u01/app

    grid, oracle, orainventory 디렉토리 생성 후 소유자 및 권한 설정

    -- 데이터파일 저장 디렉토리
    mkdir -p /u02/oradata
    chown -R oracle:oinstall /u02/oradata/
    chmod -R 775             /u02/oradata/
    
    -- Grid / DB ORACLE_HOME 디렉토리 생성
    mkdir -p /u01/app/oracle/product/19.3.0/dbhome
    mkdir -p /u01/app/19.3.0/gridhome
    
    -- ORACLE_HOME 소유자 및 권한 설정
    chown -R grid:oinstall   /u01/app/19.3.0/gridhome
    chown -R oracle:oinstall /u01/app/oracle/product/19.3.0/dbhome
    chmod -R 775             /u01/app/19.3.0/gridhome
    chmod -R 775             /u01/app/oracle/product/19.3.0/dbhome

    데이터파일 저장 및 grid db의 oracle home 디렉토리 생성 후 소유자/권한 설정


    13. ASM 디스크 설정 (oracleasm)

     

    ASMLib 드라이버 초기 설정

    /usr/sbin/oracleasm configure -i
    
    -- [대화식 입력]
    Default user to own the driver interface  []: grid
    Default group to own the driver interface []: oinstall   ← Role Separation 적용
    Start Oracle ASM library driver on boot (y/n) [n]: y
    Scan for Oracle ASM disks on boot (y/n) [y]: y
    
    -- [결과]
    Writing Oracle ASM library driver configuration: done

    ASM 드라이버 초기 설정

    -- ASMLib 드라이버 초기화 (마운트 포인트 생성 + 모듈 로드)
    /usr/sbin/oracleasm init
    
    -- [결과]
    Creating /dev/oracleasm mount point: /dev/oracleasm
    Loading module "oracleasm": oracleasm
    Configuring "oracleasm" to use device physical block size
    Mounting ASMlib driver filesystem: /dev/oracleasm

    ASMLib 드라이버 초기화

     

    Physical Volume 초기화

    -- LVM Physical Volume으로 초기화 (ASM 디스크 헤더 쓰기 전 준비)
    pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 \
             /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 \
             /dev/sdj1 /dev/sdk1 /dev/sdl1
    -- [결과]
    Physical volume "/dev/sdb1" ~ "/dev/sdl1" successfully created. (11개)

     

    Physical volume 초기화

     

    ASM 디스크 생성 — 용도별 그룹 기준으로 이름 부여

    -- +DATA 그룹용 (데이터파일 / 컨트롤파일 / 파라미터파일)
    oracleasm createdisk DATA1 /dev/sdb1
    oracleasm createdisk DATA2 /dev/sdc1
    oracleasm createdisk DATA3 /dev/sdd1
    oracleasm createdisk DATA4 /dev/sde1
    
    -- +FRA 그룹용 (아카이브 로그 / 백업 / Flashback 로그)
    -- Data Guard 구성 시 Standby DB의 아카이브 로그도 FRA에 저장됨
    oracleasm createdisk FRA1 /dev/sdf1
    oracleasm createdisk FRA2 /dev/sdg1
    
    -- +REDO 그룹용 (온라인 Redo Log 전용 — DATA와 I/O 분리로 성능 향상)
    oracleasm createdisk REDO1 /dev/sdh1
    oracleasm createdisk REDO2 /dev/sdi1
    
    -- +OCR 그룹용 (OCR / Voting Disk — RAC 구성 시 사용)
    -- Voting Disk는 쿼럼 알고리즘 → 반드시 홀수(3개) 필요
    -- 단일 노드에서는 미사용, RAC 확장 시 바로 활용 가능하도록 예약
    oracleasm createdisk OCR1 /dev/sdj1
    oracleasm createdisk OCR2 /dev/sdk1
    oracleasm createdisk OCR3 /dev/sdl1

    ASM 디스크 11개 생성

    -- 등록된 ASM 디스크 목록 확인
    oracleasm listdisks
    
    -- ASM 디스크 스캔 (부팅 후 재인식이 필요할 때도 사용)
    oracleasm scandisks

    ASM 디스크 목록 확인 후 디스크 스캔


    14. VM 전원 종료 → 스냅샷 촬영 → VM 복제 (RAC·DG 대비)

    • 13번까지 완료한 상태가 골든 이미지
    • 이 시점에서 스냅샷을 찍어두면 RAC / Data Guard 실습마다 깨끗한 상태로 되돌아올 수 있음
    • Grid 설치(15번) 시작 전에 반드시 진행
    [VMware에서 진행]
    
    1) VM1 전원 종료
    2) VM1 우클릭 → Snapshot → Take Snapshot
       Name: "Grid_설치전_골든이미지" (또는 원하는 이름)
       → [Take Snapshot]

    전원 종료 후 스냅샷 (골든 이미지) 촬영

     

    14-1. RAC 2번 노드용 복제 (VM2 만들기)

    • OS와 설치 파일은 복제하되 ASM 디스크 11개는 공유(연결) — VM1의 것을 그대로 사용
    • 복제 과정에서 딸려온 10GB 디스크 복사본은 모두 제거하고 VM1의 원본 파일을 연결해야 함
    [VMware에서 진행]
    
    1. VM1 우클릭 → Manage → Clone
    2. Clone Source: An existing snapshot → 위에서 찍은 스냅샷 선택 → [Next]
    3. Clone Type: Create a full clone → [Next]
    4. Name: oelsvr2 → [Finish]
    5. VM2 → Edit virtual machine settings
       - 복제 시 함께 생성된 10GB 디스크 11개를 모두 클릭 → [Remove]
         (OS가 설치된 80~100GB 디스크 1개만 남김)
    
    6. [Add...] → Hard Disk → SCSI → Use an existing virtual disk
       → [Browse]로 VM1 폴더의 asm_disk1.vmdk 선택
       → 이 과정을 11번 반복 (asm_disk1.vmdk ~ asm_disk11.vmdk)
    
    7. 추가한 11개 디스크 각각 [Advanced...] 클릭
       → Virtual device node: SCSI 1:0 ~ SCSI 1:10 순서대로 변경
    
    8. VM2 폴더(예: C:\...\oelsvr2)의 oelsvr2.vmx 파일을 메모장으로 열고
       아래 두 줄이 있는지 확인 (없으면 추가)
    
       disk.locking = "FALSE"
       disk.EnableUUID = "TRUE"
    
       → 저장 후 닫기

    1~4번 진행하여 VM 생성 후 10G 디스크 11개 모두 삭제
    5, 6번 과정 후 7번 과정 진행
    disk.locking 옵션과 disk.EnableUUID 옵션 없으면 추가

     

    14-2. Data Guard Standby 노드용 복제 (VM3 만들기)

    • OS, 설치 파일, ASM 디스크 11개까지 완전 독립 복제 — Primary와 동일한 디스크 그룹 환경 구성 가능
    • 복제된 디스크는 VM3 폴더 안에 독립 파일로 새로 생성되므로 제거하지 않고 그대로 사용
    [VMware에서 진행]
    
    1. VM1 우클릭 → Manage → Clone
    2. Clone Source: An existing snapshot → 위에서 찍은 스냅샷 선택 → [Next]
    3. Clone Type: Create a full clone → [Next]
    4. Name: oel-standby → [Finish]
    
    5. VM3 → Edit virtual machine settings
       - 복제된 11개의 10GB 디스크가 보임 → 이번에는 제거하지 않고 그대로 둠
         (VMware가 VM3 폴더 안에 완전히 독립된 파일로 새로 복사한 것)
       - 각 디스크가 SCSI 1:0 ~ SCSI 1:10으로 배치되어 있는지 확인만 진행
    
    6. VM3 폴더의 oel-standby.vmx 파일을 메모장으로 열고
       아래 두 줄 확인 (없으면 추가)
    
       disk.locking = "FALSE"
       disk.EnableUUID = "TRUE"
    
       → 저장 후 닫기

    VM3 생성 후 디스크 node 확인
    disk.locking 옵션과 disk.EnableUUID 옵션 없으면 추가

     

    14-3. 향후 실습 순서  

    단계 VM 구성 작업 내용
    1단계 VM1 단독 gridSetup.sh (Standalone) → runInstaller → dbca → 단일 노드 ASM DB 완성
    2단계 VM1 (Primary) + VM3 (Standby) VM3 IP/호스트명 변경 → Grid·DB SW 설치 → RMAN DUPLICATE로 Data Guard 구성
    3단계 VM1 + VM2 (RAC) 스냅샷으로 VM1 초기화 → VM2 공유 디스크 연결 → gridSetup.sh (Cluster)
    → 2 Node RAC 구성

    15. Grid Infrastructure 설치 (gridSetup.sh)

    • Grid Infrastructure = ASM 인스턴스 + Clusterware 기반 소프트웨어
    • grid 계정에서 설치
    -- root 계정에서 설치 파일 복사
    cp LINUX.X64_193000_grid_home.zip /u01/app/19.3.0/gridhome/
    
    -- grid 계정으로 전환 후 압축 해제
    su - grid
    cd /u01/app/19.3.0/gridhome
    unzip LINUX.X64_193000_grid_home.zip
    
    -- Grid 설치 마법사 실행
    sh gridSetup.sh

    grid계정에서 gridSetup.sh 실행 후 Set Up Software Only 선택
    SSH connectivity 눌러서 OS Password 입력 후 Test
    7단계에서 설정한 OS 그룹 설정은 그대로 둠
    oracle base 확인
    oraInventory도 확인
    스크립트 실행할 root 계정 비밀번호 입력
    이후 설치 진행해서 설치 완료

    -- root 계정에서 roothas.sh 스크립트 실행
    su - root
    . /u01/app/19.3.0/gridhome/crs/install/roothas.sh
    
    -- grid 계정에서 ASMCA 그래픽 툴 실행
    su - grid
    asmca

    root계정에서 roothas.sh 스크립트 실행
    grid 계정에서 asmca 실행 후 Specify Disk Group 클릭
    디스크 목록이 안 뜨면 Change Disk Discovery Path 선택 후 '/dev/oracleasm/disks/*' 입력
    디스크 그룹 이름은 'DATA', Redundancy는 Noraml, DATA로 된 asm 디스크 4개 선택 후 OK
    sys와 asmsnmp 암호 입력 및 디스크 그룹 'DATA'인 것 확인, Create ASM 선택
    ASM 생성이 완료되면 Disk Groups 탭에서 디스크 그룹 'DATA' 확인 가능
    나머지 FRA, OCR, REDO 디스크 그룹도 생성

    -- grid 계정 (ORACLE_SID=+ASM) 으로 접속
    sqlplus / AS SYSASM
    
    -- 디스크 그룹 생성 확인
    SELECT name, state, type, total_mb, free_mb
    FROM   v$asm_diskgroup;

    v$asm_diskgroup 뷰로도 확인 가능
    crsctl로도 확인 가능
    grid 계정에서 netca로 리스너 설정도 진행


    16. DB 소프트웨어 설치 (runInstaller) & DB 생성 (dbca)

    • oracle 계정에서 설치
    -- 1. root 계정에서 설치 파일 복사
    cp LINUX.X64_193000_db_home.zip /u01/app/oracle/product/19.3.0/dbhome/
    
    -- 2. oracle 계정으로 전환 후 압축 해제
    su - oracle
    cd /u01/app/oracle/product/19.3.0/dbhome
    unzip LINUX.X64_193000_db_home.zip
    
    -- 3. DB 소프트웨어 설치 마법사 실행
    ./runInstaller
    
    -- DB 소프트웨어 설치 완료 후 DB 생성 (DBCA)
    dbca &
    -- GUI 마법사 주요 선택 항목:
    	- Database name       : orcl
    	- Storage type        : Automatic Storage Management (ASM)
    	- Database files      : +DATA   ← 데이터파일 저장 위치
    	- Fast Recovery Area  : +FRA    ← 백업/아카이브 저장 위치
    	- Redo log 위치       : +REDO   ← Redo Log 전용 그룹 지정
    
    -- Data Guard 구성 시 추가 작업:
    	- Primary DB: ARCHIVELOG 모드 활성화 필수
    	- Standby DB: 동일한 +DATA, +FRA, +REDO 디스크 그룹 구성 후 RMAN DUPLICATE 수행
    
    --RAC 구성 시 추가 작업:
    	- 노드 2에도 동일한 Grid Infrastructure 설치 (동일한 공유 디스크 접근)
    	- +OCR 그룹에 OCR / Voting Disk 배치 (Failure Group 3개 — 이미 구성 완료)
    	- dbca에서 'Oracle Real Application Clusters database' 선택
    	- 노드 2의 NIC 2(Private) IP가 hosts 파일의 oelsvr2-priv(10.10.10.2)와 일치해야 함

    Storage Option에서 storage type은 ASM 선택, db파일 위치 'DATA' 디스크 그룹 확인
    Multiplex redo logs and control files 클릭 후 1번에 '+REDO', 2번에 '+DATA' 입력
    FRA를 ASM 위에 디스크 그룹 'FRA'로 설정하고 아카이브 모드도 활성화
    여러 설정 뒤 Summary에서 세팅값 확인

     

    orcl DB 생성 완료
    sys계정으로 접속한 뒤 DB 오픈 상태임을 확인


    실습 핵심 요약

    주제 핵심 포인트
    VM 사양 CPU 코어 4 이상 / RAM 16GB / NIC 2개 (Public + Private Interconnect)
    공유 디스크 설정 NIC 2(Host-only) 추가 → 디스크 11개 Thick Provision Eager Zeroed 생성 → SCSI 1:0~1:10 배치
    → .vmx에 disk.locking=FALSE + disk.EnableUUID=TRUE
    디스크 파티션 fdisk로 sdb~sdl 각각 파티션 생성 → sdb1~sdl1 (11개)
    ASMLib 설치 oracleasm-support + kmod-oracleasm 설치
    Role Separation Preinstall RPM이 oinstall/dba/oper/backupdba/dgdba/kmdba/racdba 자동 생성
    → asmadmin/asmdba/asmoper(54327~54329) 직접 추가
    grid 보조 그룹 asmadmin(SYSASM) + asmdba(ASM 접근) + asmoper(ASM SYSOPER) + racdba(SYSRAC)
    oracle 보조 그룹 dba + oper + backupdba + dgdba + kmdba + racdba + asmdba
    디렉토리 소유 그룹 dba → oinstall로 변경 (Role Separation 적용)
    hosts 파일 Public / VIP / Private / SCAN 대역 사전 정의 (기준 IP: 192.168.111.50)
    시간 동기화 chrony (ntpd 대신) — RAC 노드 간 시간 불일치 시 Eviction 발생
    Preinstall RPM 설치 후 sysctl/limits 자동 세팅 → 기존 값 확인 후 부족분만 추가
    디스크 그룹 설계 +DATA(4개) / +FRA(2개) / +REDO(2개) / +OCR(3개) — 총 11개
    +OCR 3개 이유 Voting Disk 쿼럼 알고리즘 → 홀수 필수 / NORMAL = Failure Group 3개 필수
    oracleasm 소유자 grid / oinstall (Role Separation 적용)
    Grid 설치 순서 gridSetup.sh → fix&again → ASM 인스턴스 자동 생성 → 디스크 그룹 4개 생성
    DB 설치 순서 runInstaller → dbca (+DATA / +FRA / +REDO 지정)
    시작·종료 순서 시작: ASM(Grid) 먼저 → DB / 종료: DB 먼저 → ASM(Grid)
    스냅샷 타이밍 13번(ASM 디스크 설정) 완료 후, 15번(Grid 설치) 시작 전 → VM 전원 OFF 후 스냅샷
    VM2 (RAC 노드) Full Clone → 복제된 ASM 디스크 11개 Remove → VM1의 asm_disk1~11.vmdk 연결
    → SCSI 1:0~1:10
    VM3 (DG Standby) Full Clone → 복제된 ASM 디스크 11개 그대로 유지 (독립 파일로 자동 생성됨)
    Data Guard 확장 시 Primary ARCHIVELOG 필수 / Standby 동일 디스크 그룹 구성 후 RMAN DUPLICATE
    RAC 확장 시 노드 2 동일 구성 / +OCR Failure Group 3개 이미 준비 / Private NIC hosts 일치 확인

     

Designed by Tistory.