ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 특정 디스크 그룹만 필터링

Designed by Tistory.