
Oracle 데이터베이스에서는 모든 객체(테이블, 인덱스, 클러스터 등)는 세그먼트(segment)라는 단위로 물리적 공간에 저장됩니다. 이 때, USER_SEGMENTS 뷰는 현재 로그인한 사용자가 소유한 객체들의 세그먼트 정보를 조회할 수 있는 중요한 뷰입니다.
이 문서는 USER_SEGMENTS의 구조와 실무 활용 사례를 통해, 스토리지 사용량 분석, 테이블 공간 할당, 성능 최적화 등에 어떻게 유용하게 쓰일 수 있는지 구체적으로 설명합니다.
1. USER_SEGMENTS 뷰란?
USER_SEGMENTS는 Oracle 사용자 스키마 내에서 사용자가 소유한 모든 세그먼트(객체)의 물리적 저장 공간에 대한 정보를 제공합니다. 특히, 세그먼트 크기, 테이블스페이스, 블록 수 등은 성능 분석 및 용량 계획에 핵심 자료가 됩니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| SEGMENT_NAME | 세그먼트 이름 (예: 테이블 이름, 인덱스 이름) |
| SEGMENT_TYPE | 세그먼트 유형 (TABLE, INDEX, CLUSTER 등) |
| TABLESPACE_NAME | 저장된 테이블스페이스 이름 |
| BYTES | 세그먼트가 사용하는 바이트 크기 |
| BLOCKS | 할당된 블록 수 |
| EXTENTS | 할당된 익스텐트 수 |
| INITIAL_EXTENT | 처음에 할당된 익스텐트 크기 |
| NEXT_EXTENT | 다음에 할당될 익스텐트 크기 |
3. 실전 활용 예제
가장 큰 세그먼트를 확인하는 예제:
SELECT SEGMENT_NAME, SEGMENT_TYPE, BYTES/1024/1024 AS SIZE_MB
FROM USER_SEGMENTS
ORDER BY BYTES DESC FETCH FIRST 5 ROWS ONLY;
특정 테이블이 어느 테이블스페이스에 저장되어 있는지 확인:
SELECT TABLESPACE_NAME
FROM USER_SEGMENTS
WHERE SEGMENT_NAME = 'EMPLOYEES';
4. 관련 뷰 비교표
| 뷰 이름 | 내용 | 조회 범위 | 주요 목적 |
|---|---|---|---|
| USER_SEGMENTS | 사용자 소유 객체의 세그먼트 정보 | 현재 사용자 | 세그먼트 크기 및 위치 확인 |
| DBA_SEGMENTS | 전체 데이터베이스 세그먼트 정보 | DBA | 전체 용량 관리 및 모니터링 |
| USER_EXTENTS | 세그먼트의 익스텐트 상세 정보 | 현재 사용자 | 세그먼트 내부 구조 분석 |
| USER_TABLES | 테이블의 논리적 속성 정보 | 현재 사용자 | 논리 스키마 설계 참조 |
5. 자주 묻는 질문 (FAQ)
Q1. BYTES와 BLOCKS의 차이는 무엇인가요?
A. BYTES는 세그먼트가 차지하는 실제 크기를 바이트 단위로 나타낸 값이며, BLOCKS는 테이블스페이스의 블록 단위 크기 기준으로 환산한 개수입니다.
Q2. 세그먼트 크기를 줄이려면 어떻게 해야 하나요?
A. 불필요한 데이터 삭제 후 SHRINK SPACE, MOVE 등의 명령을 통해 공간을 재구성할 수 있습니다. 또한, 인덱스 리빌드도 고려 대상입니다.
Q3. USER_SEGMENTS는 언제 업데이트되나요?
A. 데이터가 변경될 때마다 실시간 업데이트되지는 않으며, 특히 블록/바이트 통계는 통계 수집(DBMS_STATS)이나 DDL 작업 이후 정확히 반영되는 경우가 많습니다.
6. 결론
USER_SEGMENTS 뷰는 Oracle 데이터베이스에서 물리적 저장 공간 분석과 자원 최적화를 위한 핵심 도구입니다. 사용자 수준에서 객체가 차지하는 공간을 모니터링하고, 용량 설계나 성능 병목 구간을 조기에 발견하는 데 필수적인 정보를 제공합니다.
7. 참고 문헌
- Oracle Database Administrator’s Guide – Segment Management Oracle 공식 문서
- Oracle SQL Language Reference – USER_SEGMENTS View
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] USER_SNAPSHOTS 완전 해설 : 사용자 스냅샷(MView) 정보와 동기화 분석 (0) | 2025.08.06 |
|---|---|
| [ORACLE] USER_SEQUENCES 완전 해설 : 시퀀스 속성과 자동 증가 키 관리의 핵심 (0) | 2025.08.06 |
| [ORACLE] USER_RULESETS 완전 해설 : 사용자 정의 룰셋(Ruleset)의 구조와 실무 활용 (0) | 2025.08.06 |
| [ORACLE] USER_RSRC_MANAGER_SYSTEM_PRIVS 완전 해설 : 사용자별 리소스 관리자 시스템 권한 확인하기 (0) | 2025.08.06 |
| [ORACLE] USER_RSRC_CONSUMER_GROUP_PRIVS 완전 해설 : 사용자별 리소스 소비자 그룹 권한 파악하기 (0) | 2025.08.06 |