
Oracle 데이터베이스에서 DBA_DMT_USED_EXTENTS 뷰는 Dictionary Managed Tablespace(DMT) 환경에서 사용 중인 Extent(공간 단위)에 대한 상세 정보를 제공하는 핵심 시스템 뷰입니다. 이 뷰는 과거의 공간 관리 방식에서 데이터 저장 영역이 어떻게 분배되고 있는지를 모니터링하는 데 사용되며, 특히 테이블스페이스 최적화, 단편화 분석, 공간 회수 전략 수립에 매우 중요한 역할을 합니다.
1. DBA_DMT_USED_EXTENTS 개요
Oracle의 DMT 환경에서는 공간 관리가 데이터 딕셔너리(UET$, FET$ 등)에 의해 수행되었습니다. DBA_DMT_USED_EXTENTS는 바로 이 UET$ (Used Extents Table) 테이블을 기반으로 하여, 현재 사용 중인 Extent의 상세 정보를 보여줍니다. 즉, 각 세그먼트(Segment)가 어느 파일의 어느 블록을 사용 중인지, 얼마만큼의 공간을 차지하는지를 명확히 파악할 수 있는 뷰입니다. 이 뷰는 과거 DMT 구조에서 공간 관리의 투명성을 확보하기 위한 핵심 도구였으며, 현대의 Locally Managed Tablespace(LMT)가 등장하기 전까지 DBA들이 공간 분석 및 성능 진단을 위해 가장 자주 사용하던 뷰 중 하나입니다.
2. DBA_DMT_USED_EXTENTS의 역할
이 뷰는 세그먼트 단위로 사용된 Extent 목록을 관리하여 데이터 저장 공간의 효율을 모니터링할 수 있게 합니다. 특히 다음과 같은 상황에서 유용하게 사용됩니다.
- 테이블스페이스 내 특정 세그먼트의 실제 저장 위치 추적
- 데이터 파일의 공간 분포 및 활용률 분석
- 단편화(Fragmentation) 문제 진단
- 공간 확장 또는 테이블스페이스 재구성 계획 수립
3. 주요 컬럼 설명
다음 표는 DBA_DMT_USED_EXTENTS 뷰의 주요 컬럼과 그 의미를 정리한 것입니다.
| 컬럼명 | 데이터 타입 | 설명 |
|---|---|---|
| TABLESPACE_NAME | VARCHAR2 | 세그먼트가 속한 테이블스페이스 이름 |
| FILE_ID | NUMBER | 데이터 파일의 식별자 번호 |
| BLOCK_ID | NUMBER | 해당 Extent가 시작되는 블록 번호 |
| BLOCKS | NUMBER | Extent가 차지하는 블록 수 |
| BYTES | NUMBER | Extent의 크기 (바이트 단위) |
| OWNER | VARCHAR2 | 세그먼트를 소유한 사용자 |
| SEGMENT_NAME | VARCHAR2 | 세그먼트 이름 (예: 테이블, 인덱스 등) |
| SEGMENT_TYPE | VARCHAR2 | 세그먼트의 유형 (TABLE, INDEX 등) |
위 컬럼들을 통해 DBA는 사용 중인 공간의 물리적 위치와 논리적 구조를 동시에 파악할 수 있습니다.
4. DBA_DMT_USED_EXTENTS 조회 예제
다음 예제는 현재 데이터베이스에서 사용 중인 모든 Extent 정보를 조회하는 기본 SQL입니다.
SELECT
TABLESPACE_NAME,
SEGMENT_NAME,
SEGMENT_TYPE,
FILE_ID,
BLOCK_ID,
BLOCKS,
BYTES
FROM
DBA_DMT_USED_EXTENTS
ORDER BY
TABLESPACE_NAME, SEGMENT_NAME;
이 쿼리는 각 세그먼트별로 사용 중인 Extent의 블록 범위와 크기를 확인할 수 있으며, 공간 분포 분석의 기초 데이터로 활용됩니다.
5. DBA_DMT_USED_EXTENTS 활용 사례
① 세그먼트별 공간 사용량 분석
세그먼트가 차지하는 총 공간을 파악하려면 다음 SQL을 사용합니다.
SELECT
OWNER,
SEGMENT_NAME,
SEGMENT_TYPE,
SUM(BYTES)/1024/1024 AS TOTAL_MB
FROM
DBA_DMT_USED_EXTENTS
GROUP BY
OWNER, SEGMENT_NAME, SEGMENT_TYPE
ORDER BY
TOTAL_MB DESC;
이 결과는 세그먼트별 공간 사용량을 MB 단위로 표시하여, 대용량 세그먼트를 신속히 식별할 수 있게 합니다.
② 파일 단위 공간 분포 파악
특정 파일이 얼마나 많은 세그먼트를 포함하는지 분석할 때는 다음 쿼리를 활용합니다.
SELECT
FILE_ID,
COUNT(DISTINCT SEGMENT_NAME) AS SEGMENT_COUNT,
SUM(BYTES)/1024/1024 AS USED_SPACE_MB
FROM
DBA_DMT_USED_EXTENTS
GROUP BY
FILE_ID
ORDER BY
FILE_ID;
이 분석을 통해 데이터 파일 단위의 공간 균형을 확인하고, 필요 시 리밸런싱 전략을 수립할 수 있습니다.
6. DBA_DMT_USED_EXTENTS와 관련된 주요 뷰 비교
다음 표는 DMT 환경에서 공간 관리와 관련된 주요 뷰를 비교한 것입니다.
| 뷰 이름 | 역할 | DBA_DMT_USED_EXTENTS와의 관계 |
|---|---|---|
| DBA_DMT_FREE_SPACE | 할당되지 않은 Free Extent 정보 제공 | DBA_DMT_USED_EXTENTS의 반대 개념 |
| DBA_SEGMENTS | 세그먼트 전체 공간 요약 | DBA_DMT_USED_EXTENTS 데이터를 집계한 결과 |
| DBA_EXTENTS | 현대 Oracle 버전에서 LMT 환경의 Extent 정보 제공 | DBA_DMT_USED_EXTENTS의 LMT 버전 |
7. DMT와 LMT의 구조적 차이점 요약
DBA_DMT_USED_EXTENTS는 오직 DMT 환경에서만 존재하는 데이터 사전 뷰입니다. 현대 Oracle 버전에서는 LMT 방식이 기본으로 전환되어 DBA_EXTENTS 뷰가 그 역할을 대체하고 있습니다.
| 항목 | DMT | LMT |
|---|---|---|
| 공간 관리 방식 | 딕셔너리 기반 (UET$, FET$) | 비트맵 기반 로컬 관리 |
| 관리 뷰 | DBA_DMT_USED_EXTENTS, DBA_DMT_FREE_SPACE | DBA_EXTENTS, DBA_FREE_SPACE |
| 성능 | 딕셔너리 업데이트 시 경합 발생 | 로컬 비트맵 처리로 고성능 |
| 단편화 발생 | 빈번함 | 거의 없음 |
| 현재 권장 방식 | 비권장 (Legacy 시스템 유지용) | 기본 표준 방식 |
8. DBA_DMT_USED_EXTENTS를 활용한 단편화 분석
DMT 환경의 단편화 정도를 파악하려면 다음과 같은 SQL을 사용할 수 있습니다.
SELECT
TABLESPACE_NAME,
COUNT(*) AS EXTENT_COUNT,
SUM(BLOCKS) AS TOTAL_BLOCKS,
ROUND(AVG(BLOCKS),2) AS AVG_BLOCKS
FROM
DBA_DMT_USED_EXTENTS
GROUP BY
TABLESPACE_NAME
ORDER BY
EXTENT_COUNT DESC;
여기서 평균 블록 수(AVG_BLOCKS)가 작고 Extent 수가 많을수록 단편화가 심하다는 의미입니다. 이 경우 COALESCE 명령이나 Reorg 작업을 수행하여 공간 효율성을 개선해야 합니다.
9. 공간 관리 및 성능 최적화 팁
- 정기 점검: DBA_DMT_USED_EXTENTS와 DBA_DMT_FREE_SPACE를 주기적으로 비교하여 사용률을 모니터링합니다.
- COALESCE 사용: 단편화된 Free Extent를 통합해 공간 효율을 높입니다.
- Segment Rebuild: 대용량 테이블의 Extent 분산이 심할 경우 재구성 작업을 통해 최적화합니다.
- LMT 전환: 가능하다면 Locally Managed Tablespace로 전환하여 성능과 관리 효율을 개선합니다.
10. 결론
DBA_DMT_USED_EXTENTS는 Dictionary Managed Tablespace 구조에서 사용 중인 Extent 정보를 실시간으로 제공하는 매우 중요한 시스템 뷰입니다. 이 뷰를 통해 DBA는 데이터 저장 구조의 세밀한 상태를 파악하고, 공간 단편화나 저장 비효율 문제를 정확히 진단할 수 있습니다. 비록 현대의 Oracle 환경에서는 LMT가 기본으로 대체되었지만, DMT 기반 시스템 유지보수나 마이그레이션 시에는 여전히 필수적인 진단 도구로 활용됩니다.
출처
- Oracle Database Reference 19c – DBA_DMT_USED_EXTENTS View
- Oracle Concepts – Space Management in Tablespaces
- Oracle Administrator’s Guide – Managing Dictionary-Managed Tablespaces
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] DBA_EXP_FILES 완벽 해설 : Data Pump 및 Export 파일 관리의 핵심 뷰 (0) | 2025.10.14 |
|---|---|
| [ORACLE] DBA_ERRORS 완벽 가이드 : PL/SQL 컴파일 오류 진단과 디버깅의 핵심 뷰 (0) | 2025.10.14 |
| [ORACLE] DBA_DMT_FREE_SPACE 완벽 해설 : Dictionary Managed Tablespace의 공간 관리 핵심 (0) | 2025.10.14 |
| [ORACLE] DBA_DIRECTORIES 완벽 해설 : Oracle 디렉터리 오브젝트의 핵심 이해 (0) | 2025.10.14 |
| [ORACLE] DBA_DIM_LEVEL_KEY 완벽 해설 : 차원 레벨의 핵심 키 구조 이해하기 (0) | 2025.10.14 |