728x90

1. USER_TAB_PARTITIONS란?
USER_TAB_PARTITIONS는 오라클 데이터베이스에서 사용자 스키마 내에 존재하는 파티션 테이블의 각 파티션 정보를 조회할 수 있는 데이터 딕셔너리 뷰입니다. 이 뷰는 테이블 파티션 전략을 설계하거나, 성능 이슈를 진단할 때 핵심적인 정보를 제공합니다.
예를 들어, 로그 데이터를 월별로 분리해 저장한 테이블이 있다면, 각각의 파티션 이름, 생성 시점, 파티션 범위 등을 USER_TAB_PARTITIONS를 통해 파악할 수 있습니다.
2. 주요 컬럼 설명
USER_TAB_PARTITIONS의 대표적인 컬럼은 다음과 같습니다.
| 컬럼명 | 설명 |
|---|---|
| TABLE_NAME | 파티션이 속한 테이블 이름 |
| PARTITION_NAME | 파티션 이름 |
| HIGH_VALUE | 파티션의 범위 조건 |
| PARTITION_POSITION | 파티션 순서 |
| TABLESPACE_NAME | 해당 파티션이 속한 테이블스페이스 |
| NUM_ROWS | 파티션 내 행의 수 (ANALYZE 후에만 정확) |
3. 실전 예제: USER_TAB_PARTITIONS 활용
다음은 실무에서 자주 활용되는 예제입니다.
3.1. 특정 테이블의 파티션 목록 확인
SELECT
PARTITION_NAME,
HIGH_VALUE,
TABLESPACE_NAME
FROM
USER_TAB_PARTITIONS
WHERE
TABLE_NAME = 'LOG_HISTORY';
3.2. 행 수가 가장 많은 파티션 찾기
SELECT
PARTITION_NAME,
NUM_ROWS
FROM
USER_TAB_PARTITIONS
WHERE
TABLE_NAME = 'LOG_HISTORY'
ORDER BY
NUM_ROWS DESC;
3.3. 테이블과 테이블스페이스 간 분포 확인
SELECT
TABLESPACE_NAME,
COUNT(*) AS PARTITION_COUNT
FROM
USER_TAB_PARTITIONS
GROUP BY
TABLESPACE_NAME;
4. USER_TAB_PARTITIONS를 활용한 성능 진단 전략
오라클 성능 문제는 테이블 크기만큼이나 파티션 단위에서도 발생할 수 있습니다. USER_TAB_PARTITIONS를 이용하면 다음과 같은 진단이 가능합니다.
- 불균형 파티션 감지: NUM_ROWS 값이 특정 파티션에 치우쳐 있는 경우 리밸런싱 고려
- 파티션 범위 이상 확인: HIGH_VALUE가 누락되었거나 의도치 않은 값으로 설정된 경우
- 스토리지 사용 확인: 각 파티션별 테이블스페이스가 제대로 분산되었는지 점검
5. 파티션 전략 비교
다음은 파티셔닝 전략에 따른 특징 비교입니다.
| 전략 | 장점 | 단점 | 사용 예시 |
|---|---|---|---|
| Range Partition | 날짜 기반 데이터에 적합, 쿼리 최적화 유리 | 범위 설정이 잘못되면 누락 발생 가능 | 월별 로그 테이블 |
| List Partition | 불균형 데이터 분할에 유리 | 값 누락 시 기본 파티션 필요 | 지역별 사용자 데이터 |
| Hash Partition | 균등한 데이터 분산 가능 | 범위 기반 쿼리에 비효율 | ID 기반 대규모 트랜잭션 데이터 |
6. USER_TAB_PARTITIONS 활용 시 주의사항
- 통계 갱신 필수: NUM_ROWS 컬럼은
DBMS_STATS로 갱신해야 정확합니다. - 대소문자 일치:
TABLE_NAME검색 시 대소문자 구분이 있으므로 주의가 필요합니다. - 접근 권한: 다른 스키마 테이블은
ALL_TAB_PARTITIONS또는DBA_TAB_PARTITIONS뷰 사용 필요
7. 결론
USER_TAB_PARTITIONS는 단순한 메타 정보 뷰를 넘어서, 테이블 파티셔닝의 구조를 이해하고 최적화할 수 있는 매우 중요한 도구입니다. 파티션 구조를 분석하고, 쿼리 성능을 진단하며, 저장소 분산 여부를 점검하는 데 있어 이 뷰를 정기적으로 활용하는 것은 고급 DBA 및 개발자에게 반드시 필요한 습관입니다.
8. 출처
- Oracle Corporation. Oracle Database Documentation
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] USER_TAB_PRIVS_MADE : 사용자가 부여한 오브젝트 권한 추적 가이드 (0) | 2025.08.09 |
|---|---|
| [ORACLE] USER_TAB_PRIVS : 오브젝트 권한 관리의 핵심 뷰 완전 정복 (0) | 2025.08.09 |
| [ORACLE] USER_VIEWS 뷰로 사용자 정의 뷰 SQL 추적 및 최적화하기 (0) | 2025.08.08 |
| [ORACLE] USER_USERS 뷰로 사용자 계정 정보 및 보안 정책 완벽 파악하기 (0) | 2025.08.08 |
| [ORACLE] USER_TAB_MODIFICATIONS 뷰로 통계 갱신 타이밍 완벽 제어하기 (0) | 2025.08.08 |