-
ASM 실습 03: 초기화 파라미터 & 디스크 그룹 관리DB 스터디/02_ASM 2026. 3. 25. 23:11
실습 스크립트 전체 보기: https://github.com/nsylove97/Seongryeol-OracleDB-Portfolio
실습 환경
OS Oracle Linux 7.9 (VMware Virtual Machine) DB Oracle Database 19c (Grid Infrastructure + DB) 접속 툴 SQL*Plus, MobaXterm(SSH) Grid ORACLE_HOME /u01/app/19.3.0/gridhome DB ORACLE_HOME /u01/app/oracle/product/19.3.0/dbhome
목차
1. ASM 초기화 파라미터
2. DB 인스턴스 vs ASM 인스턴스 SPFILE 비교
3. 디스크 그룹 생성 & 디스크 추가 — 명령어 레퍼런스
4. 디스크 그룹 간 데이터파일 이동 3가지 방법
5. 디스크 DROP & UNDROP — 명령어 레퍼런스
6. OMF와 ASM 연동 — 개념 & 현재 환경 확인
7. 디스크 그룹 속성
8. ASMCMD lsdsk 상세 옵션
1. ASM 초기화 파라미터
- ASM 인스턴스는 일반 DB 인스턴스와 달리 스토리지 전용 파라미터를 가짐
파라미터 설명 기본값 ASM_DISKGROUPS ASM 인스턴스 기동 시 자동으로 MOUNT할 디스크 그룹 목록 (없음) ASM_DISKSTRING ASM이 디스크를 스캔할 경로 패턴 — 후보 목록을 제한 '' (전체 스캔) ASM_POWER_LIMIT 리밸런스 작업의 기본 속도·강도 (0~1024) 1 -- [grid 계정] SYSASM으로 접속 CONN / AS SYSASM -- ASM 핵심 파라미터 한 번에 확인 SHOW PARAMETER ASM_
ASM 핵심 파라미터 한 번에 확인 ASM_DISKSTRING 상세
- 값이 비어 있으면 OS 전체 디스크를 스캔 → 불필요한 디바이스까지 인식할 수 있어 권장하지 않음
- 경로 패턴으로 후보를 좁히면 기동 속도 향상 + 오인식 방지 효과
-- 값이 비어 있다면, ASM_DISKSTRING 동적 변경 (재시작 없이 적용) ALTER SYSTEM SET ASM_DISKSTRING = '/dev/oracleasm/disks/*' SCOPE=BOTH;ASM_POWER_LIMIT 상세
값 의미 0 리밸런스 일시 중단 (구성 변경만 등록, 데이터 이동 없음) 1 기본값 — 리밸런스 수행하되 서비스 영향 최소화 11 최대 속도로 리밸런스 (I/O 집중, 서비스 영향 큼) 1~1024 19c 이상 — 최대값 1024로 확장됨
2. DB 인스턴스 vs ASM 인스턴스 SPFILE 비교
- ASM 환경에서는 ASM 인스턴스와 DB 인스턴스가 각자 자신의 SPFILE을 ASM 디스크 그룹 안에서 독립적으로 관리
구분 ASM 인스턴스 DB 인스턴스 SPFILE 저장 위치 +DATA/+ASM/PARAMETERFILE/spfile.xxx +DATA/ORCL/PARAMETERFILE/spfile.xxx 접속 권한 SYSASM SYSDBA INSTANCE_TYPE ASM RDBMS -- [grid 계정] ASM 인스턴스 SPFILE 위치 확인 CONN / AS SYSASM SHOW PARAMETER SPFILE [결과] NAME TYPE VALUE ------ ------ ---------------------------------------- spfile string +DATA/+ASM/PARAMETERFILE/spfile.xxx.xxx → ASM 인스턴스 전용 SPFILE이 +DATA 그룹 안에 저장됨
ASM 인스턴스 SPFILE 위치 확인 -- [oracle 계정] DB 인스턴스 SPFILE 위치 확인 CONN / AS SYSDBA SHOW PARAMETER SPFILE [결과] NAME TYPE VALUE ------ ------ -------------------------------------------- spfile string +DATA/ORCL/PARAMETERFILE/spfile.orcl.xxx → DB 인스턴스 SPFILE도 +DATA 그룹 안에 별도로 저장됨
-- INSTANCE_TYPE으로 현재 접속한 인스턴스 종류 구분 SHOW PARAMETER INSTANCE_TYPE [결과 — ASM 인스턴스] NAME TYPE VALUE ------------- ------ ----- instance_type string ASM [결과 — DB 인스턴스] NAME TYPE VALUE ------------- ------ ------ instance_type string RDBMS -- ASM 인스턴스 파라미터를 변경할 때는 반드시 grid 계정(SYSASM) 으로 접속해야 함 -- oracle 계정(SYSDBA)으로 접속하면 DB 인스턴스의 파라미터가 변경됨
sysasm과 sysdba에서 인스턴스 종류 구분
3. 디스크 그룹 생성 & 디스크 추가 — 명령어 레퍼런스
- 현재 실습 환경은 11개 디스크가 4개 그룹(+DATA / +FRA / +REDO / +OCR)에 모두 할당됨. 여유 디스크 없음.
- 실제 실행 결과 대신 명령어 구조와 동작 원리 정리
디스크 그룹 생성 — CREATE DISKGROUP
-- 기본 구조 -- NORMAL Redundancy: Failure Group 2개 이상 필요 -- HIGH Redundancy: Failure Group 3개 이상 필요 -- EXTERNAL Redundancy: 미러링 없음 (하드웨어 RAID 환경) CREATE DISKGROUP <그룹명> NORMAL REDUNDANCY FAILGROUP <FG명1> DISK '<디스크 경로1>' FAILGROUP <FG명2> DISK '<디스크 경로2>';옵션 설명 NORMAL REDUNDANCY 2중 미러링 — Failure Group 2개 이상 필요 HIGH REDUNDANCY 3중 미러링 — Failure Group 3개 이상 필요 EXTERNAL REDUNDANCY 미러링 없음 — 외부 스토리지(RAID)에 보호 위임 FAILGROUP 미러 복사본이 같은 장애 도메인에 놓이지 않도록 지정하는 논리 그룹 -- 예시 (새 디스크 투입 시) CREATE DISKGROUP DG_NEW NORMAL REDUNDANCY FAILGROUP FG1 DISK '/dev/oracleasm/disks/DISK01' FAILGROUP FG2 DISK '/dev/oracleasm/disks/DISK02';기존 디스크 그룹에 디스크 추가 — ALTER DISKGROUP ADD DISK
-- 기본 구조 ALTER DISKGROUP <그룹명> ADD DISK '<디스크 경로>' REBALANCE POWER <0~1024>; -- 예시 — +FRA 그룹에 디스크 1개 추가, POWER 4로 리밸런스 ALTER DISKGROUP FRA ADD DISK '/dev/oracleasm/disks/FRA3' REBALANCE POWER 4; -- REBALANCE POWER 값 선택 기준 -- 업무 시간 중에는 낮은 값(1~2)으로 서비스 영향을 줄임 -- 야간 유지보수 시간에 높은 값(8~11)으로 빠르게 완료하는 것이 일반적 -- POWER 0으로 지정하면 구성 변경만 등록하고 데이터 이동은 하지 않음미사용 디스크 확인 방법 (참고)
-- GROUP_NUMBER = 0 이면 어떤 그룹에도 속하지 않은 디스크 SELECT name, path, state, total_mb, group_number FROM v$asm_disk ORDER BY group_number, name; -- STATE 종류 -- CANDIDATE : ASM이 인식했으나 그룹 미할당 -- NORMAL : 그룹 MEMBER로 정상 사용 중 -- FORMER : 이전에 그룹 멤버였으나 현재 제거된 상태
v$asm_disk 조회 결과, 미사용 디스크 없음
4. 디스크 그룹 간 데이터파일 이동 3가지 방법
방법 대상 테이블스페이스 DB 상태 특징 RMAN COPY + RENAME TBS_MOVE1 OPEN (OFFLINE 필요) 복사 후 컨트롤파일 경로 수정, 범용적 ALTER DATABASE MOVE DATAFILE TBS_MOVE2 OPEN (온라인) 12c 이상, 서비스 중단 없이 이동 가능 ASMCMD cp + RENAME TBS_MOVE3 OPEN (OFFLINE 필요) OS 레벨에서 직접 복사하는 전통적 방법 사전 준비 — 실습용 테이블스페이스 3개 생성 (+DATA)
CONN / AS SYSDBA -- 방법별로 하나씩 사용할 실습용 테이블스페이스 생성 CREATE TABLESPACE tbs_move1 DATAFILE '+DATA' SIZE 10M AUTOEXTEND OFF; CREATE TABLESPACE tbs_move2 DATAFILE '+DATA' SIZE 10M AUTOEXTEND OFF; CREATE TABLESPACE tbs_move3 DATAFILE '+DATA' SIZE 10M AUTOEXTEND OFF; -- 생성된 데이터파일 경로 확인 (이후 실습에서 경로 그대로 사용) SELECT file_id, file_name, tablespace_name FROM dba_data_files WHERE tablespace_name LIKE '%TBS_MOVE%' ORDER BY file_id;
실습용 테이블스페이스 3개 생성 
생성된 데이터파일 경로 확인 [방법 1] RMAN COPY + ALTER DATABASE RENAME — TBS_MOVE1
- RMAN으로 파일을 물리적으로 복사한 뒤, 컨트롤파일에 새 경로를 등록하는 방식
- 복사 중 I/O 충돌을 막기 위해 테이블스페이스를 먼저 OFFLINE 처리
-- STEP 1: TBS_MOVE1 OFFLINE ALTER TABLESPACE tbs_move1 OFFLINE; -- STEP 2: RMAN으로 +DATA → +FRA 복사 (OS 터미널에서 실행) rman target / RMAN> COPY DATAFILE '+DATA/ORCL/DATAFILE/tbs_move1.xxx.xxx' TO '+FRA';
tbs_move1을 offline으로 전환 
RMAN으로 +DATA에서 +FRA로 복사 -- STEP 3: 컨트롤파일에 새 경로 등록 ALTER DATABASE RENAME FILE '+DATA/ORCL/DATAFILE/tbs_move1.xxx.xxx' TO '+FRA/ORCL/DATAFILE/tbs_move1.xxx.xxx'; -- STEP 4: TBS_MOVE1 ONLINE ALTER TABLESPACE tbs_move1 ONLINE; -- STEP 5: 이동 결과 확인 SELECT file_id, file_name, tablespace_name FROM dba_data_files WHERE tablespace_name = 'TBS_MOVE1';
컨트롤 파일에 새 경로 등록 후 tbs_move1 테이블스페이스 online으로 전환 
이동 결과 확인 [방법 2] ALTER DATABASE MOVE DATAFILE (온라인 이동, 12c 이상) — TBS_MOVE2
- DB OPEN 상태에서 OFFLINE 없이 바로 이동
- 이동 중에도 해당 데이터파일에 읽기·쓰기 허용
- 이동 완료 후 원본 파일 자동 삭제까지 처리
-- 명령어 한 줄로 이동 완료 (OFFLINE 불필요) ALTER DATABASE MOVE DATAFILE '+DATA/ORCL/DATAFILE/tbs_move2.xxx.xxx' TO '+FRA'; -- 이동 결과 확인 SELECT file_id, file_name, tablespace_name FROM dba_data_files WHERE tablespace_name = 'TBS_MOVE2'; -- 방법 1 vs 방법 2 비교 -- RMAN COPY는 원본 파일이 +DATA에 그대로 남아 수동 삭제 필요 -- MOVE DATAFILE은 원본까지 자동으로 정리 -- 서비스 중단 없이 이동까지 되므로 12c 이상 환경에서는 방법 2가 권장됨
move datafile로 tbs_move2를 +DATA에서 +FRA로 이동 완료 [방법 3] ALTER TABLESPACE OFFLINE + ASMCMD cp + RENAME — TBS_MOVE3
- OS 레벨에서 ASMCMD cp로 직접 파일을 복사하는 전통적 방법
- 테이블스페이스를 OFFLINE 상태로 전환 후 복사·경로 갱신 순서로 진행
-- STEP 1: TBS_MOVE3 OFFLINE ALTER TABLESPACE tbs_move3 OFFLINE; -- STEP 2: ASMCMD로 파일 복사 (OS 터미널 — grid 계정) ASMCMD> cp +DATA/ORCL/DATAFILE/tbs_move3.xxx.xxx +FRA/tbs_move3.dbf
tbs_move3를 offline으로 전환 
asmcmd로 파일 복사 -- STEP 3: 컨트롤파일 경로 갱신 ALTER DATABASE RENAME FILE '+DATA/ORCL/DATAFILE/tbs_move3.xxx.xxx' TO '+FRA/tbs_move3.dbf'; -- STEP 4: TBS_MOVE3 ONLINE ALTER TABLESPACE tbs_move3 ONLINE; -- STEP 5: 이동 결과 확인 SELECT file_id, file_name, tablespace_name FROM dba_data_files WHERE tablespace_name = 'TBS_MOVE3';
컨트롤 파일 경로 갱신 후 tbs_move3 online으로 전환, 이동 결과 확인 실습 후 정리
-- 실습용 테이블스페이스 3개 삭제 (데이터파일 포함) DROP TABLESPACE tbs_move1 INCLUDING CONTENTS AND DATAFILES; DROP TABLESPACE tbs_move2 INCLUDING CONTENTS AND DATAFILES; DROP TABLESPACE tbs_move3 INCLUDING CONTENTS AND DATAFILES;
실습용 테이블스페이스 3개 삭제 후 확인
5. 디스크 DROP & UNDROP — 명령어 레퍼런스
- DROP은 디스크에서 익스텐트를 다른 디스크로 이동(리밸런스)한 뒤 그룹에서 제거하는 작업
- 현재 실습 환경에는 여유 디스크가 없어 운영 디스크를 건드리기 어려워서 명령어 구조와 동작 원리만 정리
5-1. 디스크 상태 종류
STATE 설명 NORMAL 정상 사용 중 (그룹 MEMBER) CANDIDATE 어떤 그룹에도 속하지 않은 미사용 디스크 PROVISIONED ASM이 인식했으나 아직 그룹에 미할당 DROPPING DROP 명령 후 리밸런스 진행 중 FORMER 이전에 그룹 멤버였으나 현재는 제거된 상태 OFFLINE 장애 등으로 접근 불가 상태 5-2. 디스크 DROP
[디스크 Drop 예시 - 실제로는 FRA3 디스크 존재하지 않음) CONN / AS SYSASM -- 특정 디스크를 그룹에서 제거 -- DROP 직후 리밸런스가 시작되며 익스텐트 이동이 완료되면 그룹에서 제거됨 ALTER DISKGROUP <디스크그룹_이름> DROP DISK <디스크_이름>; -- DROP 진행 상태 확인 — DROPPING 상태가 사라지면 완료 SELECT name, state FROM v$asm_disk WHERE group_number = (SELECT group_number FROM v$asm_diskgroup WHERE name = '디스크_이름'); -- 주의: 남은 디스크에 공간이 부족하면 ORA-15042 오류 발생 -- DROP 전에 반드시 v$asm_diskgroup의 USABLE_FILE_MB로 여유 공간 확인해야 함5-3. UNDROP — DROP 취소
-- 리밸런스 완료 전(DROPPING 상태)에서만 취소 가능 -- FORMER 상태가 된 이후에는 UNDROP 불가 ALTER DISKGROUP <디스크그룹_이름> UNDROP DISKS; -- DROP과 UNDROP 흐름 -- DROP → 리밸런스 시작 → DROPPING 상태 → (UNDROP 가능 구간) -- → 리밸런스 완료 → FORMER 상태 → 그룹에서 완전 제거
6. OMF와 ASM 연동 — 개념 & 현재 환경 확인
- OMF(Oracle-Managed Files): 데이터파일·로그파일 이름을 DB가 자동으로 생성·관리하는 기능
- db_create_file_dest 파라미터에 저장 위치를 지정하면 활성화됨
- 현재 실습 환경은 OMF가 이미 적용된 상태
현재 설정 확인
CONN / AS SYSDBA SHOW PARAMETER db_create_file_dest -- [결과] NAME TYPE VALUE ------------------- ------ ------ db_create_file_dest string +DATA -- dbca 생성 시 자동으로 +DATA로 세팅된 상태 확인
db_create_file_dest에 자동으로 +DATA로 세팅된 것 확인 OMF 적용 전후 비교 (참고)
-- OMF 미적용: 데이터파일 경로를 직접 지정해야 함 CREATE TABLESPACE tbs_manual DATAFILE '+DATA/ORCL/DATAFILE/tbs_manual01.dbf' SIZE 10M; -- OMF 적용 상태 (현재 환경): 경로 생략 가능 → 시스템이 이름 자동 부여 CREATE TABLESPACE tbs_omf;
OMF 미적용 상태로 테이블스페이스 tbs_manual 생성 
OMF 적용 상태로 테이블스페이스 tbs_omf 생성 -- 기존 데이터파일들이 모두 OMF 방식(자동 이름)으로 생성되어 있는지 확인 SELECT file#, name FROM v$datafile ORDER BY file#;
OMF 적용 차이에 따른 파일 이름 차이 확인 가능 항목 OMF 미적용 OMF 적용 파일 이름 직접 지정 필요 시스템이 자동 부여 경로 지정 필수 생략 가능 파일 삭제 DROP 후 OS에서 수동 삭제 DROP 시 자동 삭제 설정 파라미터 — db_create_file_dest=+DATA
7. 디스크 그룹 속성
7-1. 주요 속성 목록
속성 설명 기본값 AU_SIZE Allocation Unit 크기 (MB) — 그룹 생성 시에만 지정 가능 1M DISK_REPAIR_TIME 디스크 OFFLINE 후 복구를 기다리는 최대 시간 3.6H COMPATIBLE.RDBMS 이 그룹을 사용할 수 있는 DB 최소 버전 10.1 COMPATIBLE.ASM 이 그룹을 MOUNT할 수 있는 ASM 최소 버전 10.1 7-2. 속성 조회
SQLPLUS / AS SYSASM -- v$asm_attribute로 현재 디스크 그룹 속성 확인 SELECT dg.name AS diskgroup, attr.name, attr.value FROM v$asm_diskgroup dg JOIN v$asm_attribute attr ON dg.group_number = attr.group_number WHERE dg.name = 'DATA' ORDER BY attr.name;
디스크 그룹 속성 조회 7-3. COMPATIBLE.RDBMS 속성 변경
-- rdbms 호환성 최소 버전 조회 SELECT dg.name AS diskgroup, attr.name, attr.value FROM v$asm_diskgroup dg JOIN v$asm_attribute attr ON dg.group_number = attr.group_number WHERE dg.name = 'DATA' AND attr.name = 'compatible.rdbms'; -- rdbms 호환성 최소 버전을 11.1로 변경 ALTER DISKGROUP data SET ATTRIBUTE 'compatible.rdbms' = '11.1.0.0.0';
8. ASMCMD lsdsk 상세 옵션
- lsdsk: ASMCMD에서 ASM에 등록된 개별 디스크 정보를 조회하는 명령어
기본 조회
ASMCMD> lsdsk
lsdsk 조회 결과 -k 옵션 — Failure Group 및 상세 정보 포함
ASMCMD> lsdsk -k
lsdsk -k 조회 결과, 상세 정보 및 Failure Group 정보 확인 가능 -t 옵션 — 시간 정보 포함 (생성 시점, 마지막 마운트 시점)
ASMCMD> lsdsk -t
lsdsk -t 조회 결과, 생성 시점과 마지막 마운트 시점 확인 가능 -G 옵션 — 특정 디스크 그룹만 필터링
ASMCMD> lsdsk -k -G DATA
-G 옵션을 더하면 특정 디스크 그룹만 필터링하여 조회 가능 옵션 정리
옵션 설명 (기본) 경로만 출력 -k Failure Group, Redundancy, 크기 포함 상세 출력 -t 생성 시점, 마지막 마운트 시점 포함 -p 헤더 상태, 온라인 여부, 그룹 번호 포함 -G <그룹명> 특정 디스크 그룹만 필터링
실습 핵심 요약
주제 핵심 포인트 ASM_DISKGROUPS 기동 시 자동 MOUNT할 디스크 그룹 목록 ASM_DISKSTRING ASM이 스캔할 디스크 경로 패턴 — 좁힐수록 기동 빠르고 오인식 방지 ASM_POWER_LIMIT 리밸런스 기본 강도 (0=중단 / 1=기본 / 최대 1024) SPFILE 위치 ASM·DB 인스턴스 각각 +DATA 그룹 내 별도 SPFILE 보유 INSTANCE_TYPE ASM 인스턴스=ASM / DB 인스턴스=RDBMS 디스크 그룹 생성 CREATE DISKGROUP … NORMAL REDUNDANCY FAILGROUP … DISK 디스크 추가 ALTER DISKGROUP … ADD DISK … REBALANCE POWER n 데이터파일 이동 3가지 RMAN COPY + RENAME / ALTER DATABASE MOVE DATAFILE(온라인) / ASMCMD cp + RENAME MOVE DATAFILE 12c 이상, 온라인 이동 — 원본 자동 삭제까지 처리 DROP DISK 리밸런스로 익스텐트 이동 후 제거 — 공간 부족 시 ORA-15042 발생 UNDROP DISKS 리밸런스 완료 전(DROPPING 상태)에서만 취소 가능 OMF + ASM db_create_file_dest=+DATA 설정 후 파일명 자동 부여 DISK_REPAIR_TIME 디스크 OFFLINE 후 복구 대기 시간 (기본 3.6H) AU_SIZE 그룹 생성 시에만 지정 가능 — OLTP=1M, DW=4M~64M lsdsk -k Failure Group·Redundancy 포함 상세 조회 lsdsk -t 디스크 생성 시점·마지막 마운트 시점 조회 lsdsk -G 특정 디스크 그룹만 필터링 'DB 스터디 > 02_ASM' 카테고리의 다른 글
ASM 실습 02: 인스턴스 구조 & 동적 성능 뷰 (1) 2026.03.25 ASM 실습 01: ASM 설치 (RAC·DG 대비 포함) (0) 2026.03.25