
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