본문 바로가기
Database/Oracle

[ORACLE] DBA_FREE_SPACE_COALESCED 완벽 가이드 : 테이블스페이스 단편화 최소화와 공간 최적화의 핵심

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

DBA_FREE_SPACE_COALESCED
[ORACLE] DBA_FREE_SPACE_COALESCED

 

Oracle Database에서 DBA_FREE_SPACE_COALESCED 뷰는 테이블스페이스 내의 여유 공간(Free Space)이 얼마나 효율적으로 통합(Coalesce)되어 있는지를 보여주는 핵심 시스템 뷰입니다. 이 뷰는 각 테이블스페이스의 연속된 Free Extent 비율을 계산하여, 데이터베이스의 공간 단편화 상태를 빠르게 진단할 수 있도록 돕습니다. 즉, DBA_FREE_SPACE_COALESCED는 “현재 테이블스페이스의 공간이 얼마나 조각나지 않고 효율적으로 연결되어 있는가”를 수치로 표현하는 진단 도구입니다.

공간 단편화(Fragmentation)는 Oracle 시스템의 성능 저하와 스토리지 낭비를 초래하는 주요 원인 중 하나입니다. 따라서 DBA_FREE_SPACE_COALESCED는 DBA가 주기적으로 모니터링해야 할 필수 뷰 중 하나로, 테이블스페이스 최적화와 자동 확장 관리(AUTOEXTEND 관리)에 있어 실질적인 의사결정 지표로 활용됩니다.


1. DBA_FREE_SPACE_COALESCED 개요

Oracle의 테이블스페이스는 여러 개의 Extent로 구성되며, 데이터가 삭제되거나 이동할 때 Free Extent가 분리되어 단편화가 발생합니다. 이때 인접한 Free Extent들이 병합(Coalescing)되어 하나의 큰 연속 공간으로 통합되면, 새로운 세그먼트가 할당될 때 더 효율적인 공간 사용이 가능합니다. DBA_FREE_SPACE_COALESCED는 이러한 병합 상태를 정량적으로 보여주는 뷰로, 각 테이블스페이스별로 공간 통합률(PERCENT_EXTENTS_COALESCED)을 제공합니다. 이 값이 100%에 가까울수록 단편화가 거의 없으며, 70% 이하일 경우는 COALESCE 작업을 수행할 필요가 있습니다.


2. DBA_FREE_SPACE_COALESCED의 주요 역할

  • 테이블스페이스 단편화(Fragmentation) 정도 확인
  • COALESCE 명령 수행 전후의 공간 통합 효과 측정
  • 공간 관리 효율성 평가 및 용량 계획 지원
  • DBA_FREE_SPACE와의 연계 분석을 통한 Free Extent 최적화
  • 대용량 DML(INSERT/DELETE) 이후의 공간 회복 모니터링

3. 주요 컬럼 설명

DBA_FREE_SPACE_COALESCED는 각 테이블스페이스별 공간 병합률 정보를 제공합니다. 아래 표는 주요 컬럼과 그 의미를 정리한 것입니다.

컬럼명 데이터 타입 설명
TABLESPACE_NAME VARCHAR2 공간 병합 상태를 조회할 테이블스페이스 이름
PERCENT_EXTENTS_COALESCED NUMBER Free Extent가 얼마나 병합되어 있는지를 퍼센트(%)로 표시한 값

이 컬럼은 단 두 개지만, 테이블스페이스의 건강 상태를 단 한눈에 진단할 수 있게 해주는 매우 중요한 역할을 합니다.


4. DBA_FREE_SPACE_COALESCED 조회 예제

① 테이블스페이스별 공간 병합률 조회


SELECT 
    TABLESPACE_NAME,
    PERCENT_EXTENTS_COALESCED
FROM 
    DBA_FREE_SPACE_COALESCED
ORDER BY 
    PERCENT_EXTENTS_COALESCED DESC;

이 쿼리는 각 테이블스페이스의 공간 병합률을 내림차순으로 표시합니다. 100%에 가까운 테이블스페이스는 공간이 잘 정리된 상태이며, 낮은 값일수록 단편화가 심한 상태임을 의미합니다.

② 단편화가 심한 테이블스페이스만 필터링


SELECT 
    TABLESPACE_NAME,
    PERCENT_EXTENTS_COALESCED
FROM 
    DBA_FREE_SPACE_COALESCED
WHERE 
    PERCENT_EXTENTS_COALESCED < 80;

이 쿼리는 단편화율이 80% 미만인 테이블스페이스만 조회합니다. DBA는 결과를 확인한 후 ALTER TABLESPACE ... COALESCE 명령을 실행하여 공간을 정리할 수 있습니다.


5. COALESCE 명령과의 연계

ALTER TABLESPACE ... COALESCE 명령은 Free Extent를 병합하여 공간을 최적화하는 명령입니다. 이 명령을 실행하면 DBA_FREE_SPACE와 DBA_FREE_SPACE_COALESCED의 결과가 달라지며, 병합 이후 PERCENT_EXTENTS_COALESCED 값이 상승하게 됩니다.

예시: USERS 테이블스페이스 병합


ALTER TABLESPACE USERS COALESCE;

이 명령을 수행한 후 다시 DBA_FREE_SPACE_COALESCED를 조회하면, 공간 병합률이 향상되어 100%에 가까운 값을 보이게 됩니다.


6. DBA_FREE_SPACE_COALESCED와 관련된 주요 뷰 비교

다음 표는 DBA_FREE_SPACE_COALESCED와 함께 사용되는 주요 공간 관리 뷰를 비교한 것입니다.

뷰 이름 역할 DBA_FREE_SPACE_COALESCED와의 관계
DBA_FREE_SPACE 사용되지 않은 Free Extent의 상세 정보 DBA_FREE_SPACE_COALESCED는 이 데이터를 요약하여 병합률로 계산
DBA_EXTENTS 이미 사용 중인 Extent 정보 DBA_FREE_SPACE_COALESCED의 기준 공간과 상호 비교 가능
DBA_TABLESPACES 테이블스페이스 구성 및 속성 정보 병합률 결과를 테이블스페이스 속성과 함께 분석 시 유용

7. DBA_FREE_SPACE_COALESCED 결과 해석

DBA_FREE_SPACE_COALESCED의 결과는 아래와 같이 해석할 수 있습니다.

병합률(PERCENT_EXTENTS_COALESCED) 의미 DBA 조치 권장사항
95% 이상 거의 단편화가 없는 최적 상태 추가 조치 불필요
80% ~ 95% 약간의 단편화 존재 주기적 모니터링 권장
60% ~ 80% 부분 단편화 상태 COALESCE 작업 수행 권장
60% 이하 심각한 단편화 상태 COALESCE 및 테이블스페이스 리빌드 필요

이처럼 DBA_FREE_SPACE_COALESCED를 통해 테이블스페이스별 단편화 상태를 한눈에 파악하고, 필요 시 공간 병합 작업을 수행하여 효율적인 스토리지 관리를 유지할 수 있습니다.


8. 공간 병합(Coalescing)과 단편화(Fragmentation)의 관계

단편화는 데이터의 삽입(INSERT), 삭제(DELETE), 업데이트(UPDATE)가 반복되면서 Free Extent가 여러 조각으로 분리되어 발생합니다. 이 경우 대용량 객체 생성 시 연속된 공간이 부족하여 “Unable to allocate extent” 오류가 발생할 수 있습니다.

Coalescing은 이러한 Free Extent를 병합하여 단일한 큰 Extent로 재구성하는 과정입니다. 이 과정을 통해 공간 낭비를 줄이고, 향후 데이터 삽입 시 효율적인 I/O 처리를 보장할 수 있습니다.

DBA_FREE_SPACE_COALESCED의 실무적 활용

  • 대량의 DML 작업 이후 테이블스페이스 단편화 진단
  • 테이블스페이스 확장 전 Free Space 상태 검증
  • 테이블 및 인덱스 리빌드 전 병합률 확인
  • 자동 확장(AUTOEXTEND) 정책의 적정성 평가

9. DBA_FREE_SPACE_COALESCED를 이용한 모니터링 자동화 예시

운영 환경에서는 주기적으로 아래 스크립트를 실행하여 테이블스페이스의 공간 병합률을 점검하고, 일정 임계값 이하일 경우 경고를 발생시키는 것이 좋습니다.


SELECT 
    TABLESPACE_NAME,
    PERCENT_EXTENTS_COALESCED,
    CASE 
        WHEN PERCENT_EXTENTS_COALESCED < 80 THEN '⚠ COALESCE 권장'
        WHEN PERCENT_EXTENTS_COALESCED < 60 THEN '❗ 심각한 단편화'
        ELSE '정상'
    END AS STATUS
FROM 
    DBA_FREE_SPACE_COALESCED
ORDER BY 
    PERCENT_EXTENTS_COALESCED;

이 쿼리를 스케줄러나 모니터링 툴과 연동하면, 테이블스페이스 단편화 문제를 실시간으로 관리할 수 있습니다.


10. DBA_FREE_SPACE_COALESCED와 DBA_FREE_SPACE 비교 요약

항목 DBA_FREE_SPACE DBA_FREE_SPACE_COALESCED
역할 Free Extent의 상세 정보 제공 Free Extent 병합률 요약 정보 제공
데이터 단위 Extent 단위 테이블스페이스 단위
주요 컬럼 TABLESPACE_NAME, FILE_ID, BLOCK_ID, BYTES TABLESPACE_NAME, PERCENT_EXTENTS_COALESCED
활용 목적 세부 Free Space 구조 분석 전체 병합 상태 점검 및 단편화 판단
권장 활용 공간 부족 분석, 파일별 분포 파악 테이블스페이스 수준의 병합 필요성 판단

11. 결론

DBA_FREE_SPACE_COALESCED는 Oracle 공간 관리에서 단편화 상태를 한눈에 진단할 수 있는 가장 간결하면서도 강력한 모니터링 도구입니다. DBA는 이 뷰를 활용하여 불필요한 공간 낭비를 예방하고, 테이블스페이스의 건강한 구조를 유지함으로써 전체 데이터베이스의 I/O 효율을 극대화할 수 있습니다. 정기적인 COALESCE 작업과 함께 DBA_FREE_SPACE_COALESCED를 점검하는 것은 Oracle 환경의 성능 안정성을 유지하는 핵심 DBA 관리 습관입니다.


출처

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