-
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 022oracle 계정
-- 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:10VM3 (DG Standby) Full Clone → 복제된 ASM 디스크 11개 그대로 유지 (독립 파일로 자동 생성됨) Data Guard 확장 시 Primary ARCHIVELOG 필수 / Standby 동일 디스크 그룹 구성 후 RMAN DUPLICATE RAC 확장 시 노드 2 동일 구성 / +OCR Failure Group 3개 이미 준비 / Private NIC hosts 일치 확인
'DB 스터디 > 02_ASM' 카테고리의 다른 글
ASM 실습 03: 초기화 파라미터 & 디스크 그룹 관리 (0) 2026.03.25 ASM 실습 02: 인스턴스 구조 & 동적 성능 뷰 (1) 2026.03.25