본문 바로가기
Database/Oracle

[ORACLE] DBA_DMT_FREE_SPACE 완벽 해설 : Dictionary Managed Tablespace의 공간 관리 핵심

by Papa Martino V 2025. 10. 14.
728x90

DBA_DMT_FREE_SPACE
[ORACLE] DBA_DMT_FREE_SPACE

 

Oracle 데이터베이스의 공간 관리 방식은 시대에 따라 발전해왔으며, 그중 DBA_DMT_FREE_SPACE 뷰는 과거 Dictionary Managed Tablespace(DMT) 환경에서 남은 여유 공간(Free Space)을 추적하고 관리하기 위한 핵심 데이터 사전 뷰입니다. 현대의 Locally Managed Tablespace(LMT)와 비교하면 DMT는 다소 구식이지만, 여전히 레거시 시스템 유지보수나 마이그레이션 작업에서 중요한 역할을 하고 있습니다.


1. DBA_DMT_FREE_SPACE 개요

DBA_DMT_FREE_SPACE는 DMT 방식의 테이블스페이스에 존재하는 “할당되지 않은 공간(Free Extent)” 정보를 보여주는 시스템 뷰입니다. 이 뷰는 데이터 딕셔너리 기반 공간 관리에서 각 세그먼트와 블록 간의 남은 공간을 확인하는 데 사용됩니다.

즉, DMT 환경에서는 데이터베이스가 데이터 딕셔너리(예: UET$, FET$ 테이블)를 참조하여 공간의 할당 및 해제를 관리했으며, DBA_DMT_FREE_SPACE는 이러한 내부 테이블의 정보를 종합적으로 보여주는 역할을 수행합니다.


2. DMT vs LMT: 공간 관리 방식 비교

다음 표는 DMT와 LMT의 주요 차이점을 요약한 비교표입니다.

구분 DMT (Dictionary Managed Tablespace) LMT (Locally Managed Tablespace)
공간 관리 방식 데이터 딕셔너리 기반 (UET$, FET$ 테이블) 비트맵 기반의 로컬 관리
성능 Data Dictionary 업데이트로 인한 오버헤드 발생 비트맵 관리로 빠르고 효율적
Fragmentation(단편화) 높음 낮음
조회 뷰 DBA_DMT_FREE_SPACE DBA_FREE_SPACE
지원 버전 Oracle 8i ~ 9i (이후 비권장) Oracle 9i 이후 기본 관리 방식

3. 주요 컬럼 설명

DBA_DMT_FREE_SPACE는 각 테이블스페이스의 여유 공간 블록 단위를 보여주는 컬럼들로 구성되어 있습니다.

컬럼명 데이터 타입 설명
TABLESPACE_NAME VARCHAR2 해당 여유 공간이 속한 테이블스페이스 이름
FILE_ID NUMBER 데이터 파일의 식별자 번호
BLOCK_ID NUMBER 여유 공간이 시작되는 블록 번호
BLOCKS NUMBER 해당 여유 공간이 차지하는 블록 수
BYTES NUMBER 남은 공간의 크기(바이트 단위)

이 정보는 DBA가 테이블스페이스의 단편화 상태를 확인하거나, 수동으로 Extent를 재조정할 때 유용하게 활용됩니다.


4. DBA_DMT_FREE_SPACE 조회 예제

현재 DMT 환경의 남은 공간을 확인하려면 다음 SQL을 사용할 수 있습니다.


SELECT 
    TABLESPACE_NAME,
    FILE_ID,
    BLOCK_ID,
    BLOCKS,
    BYTES
FROM 
    DBA_DMT_FREE_SPACE
ORDER BY 
    TABLESPACE_NAME, FILE_ID, BLOCK_ID;

이 쿼리는 각 테이블스페이스의 남은 블록을 순차적으로 나열하며, 공간의 분포 상태를 파악하는 데 활용됩니다.


5. 활용 사례

① 공간 단편화 분석

DMT 환경에서는 할당 및 해제 작업이 반복될수록 Free Extent가 여러 조각으로 분리되어 단편화(Fragmentation)가 발생합니다. 이때 DBA_DMT_FREE_SPACE를 이용하면 특정 테이블스페이스의 Free Block 분포를 확인하여 단편화 정도를 진단할 수 있습니다.


SELECT TABLESPACE_NAME, COUNT(*) AS FREE_EXTENT_COUNT
FROM DBA_DMT_FREE_SPACE
GROUP BY TABLESPACE_NAME;

이 결과에서 특정 테이블스페이스의 Free Extent 개수가 많다면, 단편화가 심하다는 신호이며 ALTER TABLESPACE COALESCE 명령을 수행하여 통합이 필요합니다.

② 공간 회수 및 재활용

불필요한 세그먼트를 삭제하거나 데이터 이동 후 여유 공간이 남는다면, DBA_DMT_FREE_SPACE를 통해 어떤 파일에 Free Space가 있는지 확인하고 재활용이 가능합니다.

③ 마이그레이션 진단

DMT에서 LMT로 마이그레이션하기 전에 DBA_DMT_FREE_SPACE를 조회하면 현재의 공간 분포를 분석하고 향후 LMT 구조에서 예상되는 효율성을 예측할 수 있습니다.


6. DBA_DMT_FREE_SPACE와 연관 뷰

다음 표는 DBA_DMT_FREE_SPACE와 밀접하게 연관된 다른 Oracle 데이터 사전 뷰를 정리한 것입니다.

뷰 이름 역할 DBA_DMT_FREE_SPACE와의 관계
DBA_DMT_USED_EXTENTS 사용 중인 Extent 목록 제공 DBA_DMT_FREE_SPACE의 반대 개념
DBA_SEGMENTS 세그먼트 단위 공간 사용 정보 DBA_DMT_FREE_SPACE와 비교해 사용량을 계산 가능
DBA_TABLESPACES 테이블스페이스의 속성 및 상태 관리 테이블스페이스 이름 기준으로 조인 가능

7. 공간 단편화 최소화를 위한 관리 팁

  • COALESCE 명령 사용: 단편화된 Free Extent를 통합하여 공간 효율을 향상시킬 수 있습니다.
    ALTER TABLESPACE USERS COALESCE;
  • 정기 점검: DBA_DMT_FREE_SPACE를 주기적으로 조회하여 Free Block 분포를 모니터링합니다.
  • 마이그레이션 고려: 가능하다면 DMT → LMT로 이전하여 관리 오버헤드를 줄이는 것이 좋습니다.
  • 데이터 파일 관리: Free Space가 한쪽에 집중되지 않도록 여러 파일에 균등하게 분산 배치합니다.

8. DMT 환경에서 발생하는 대표 문제점

문제 유형 원인 해결 방법
공간 단편화 자주 발생하는 할당/해제 작업으로 Free Extent가 분리됨 COALESCE 또는 TABLESPACE 재구성
Data Dictionary 경합 다수의 프로세스가 UET$, FET$ 테이블을 동시에 갱신 LMT로 전환하여 경합 제거
성능 저하 딕셔너리 기반 공간 관리의 높은 오버헤드 비트맵 기반 LMT로 마이그레이션

9. DBA_DMT_FREE_SPACE를 활용한 성능 점검 예시

아래 SQL은 각 테이블스페이스의 전체 Free Space와 평균 Free Block 크기를 계산하여 공간 분포의 균형을 확인하는 예시입니다.


SELECT 
    TABLESPACE_NAME,
    COUNT(*) AS EXTENT_COUNT,
    SUM(BYTES) / 1024 / 1024 AS TOTAL_FREE_MB,
    AVG(BYTES / 1024) AS AVG_FREE_KB
FROM 
    DBA_DMT_FREE_SPACE
GROUP BY 
    TABLESPACE_NAME
ORDER BY 
    TOTAL_FREE_MB DESC;

이 결과를 통해 Free Space가 과도하게 작은 단위로 분산되어 있는지 확인할 수 있으며, 이는 성능 저하의 주요 원인이 될 수 있습니다.


10. 결론

DBA_DMT_FREE_SPACE는 Dictionary Managed Tablespace 환경에서 공간 관리의 현황을 모니터링하고 최적화하기 위한 필수 뷰입니다. 비록 최신 Oracle 버전에서는 LMT가 기본이지만, 레거시 시스템의 유지보수나 마이그레이션 과정에서는 여전히 중요한 진단 도구로 활용됩니다. DBA는 이 뷰를 통해 단편화를 사전에 방지하고, 데이터 파일의 효율적인 활용을 통해 시스템 자원의 낭비를 최소화할 수 있습니다.


출처

  • Oracle Database Reference 19c – DBA_DMT_FREE_SPACE View
  • Oracle Concepts – Tablespace Management
  • Oracle Administrator’s Guide – Managing Space in Tablespaces
728x90