728x90

1. USER_USTATS란?
USER_USTATS는 Oracle 데이터베이스에서 현재 사용자 스키마의 오브젝트(테이블, 인덱스 등)에 대한 **사용자 수집 통계(Statistics)** 정보를 보여주는 뷰입니다. Oracle 옵티마이저는 통계 정보를 바탕으로 최적의 실행 계획을 생성하기 때문에, 통계 정보의 수집 여부와 정확성은 쿼리 성능에 직접적인 영향을 미칩니다. 이 뷰는 DBMS_STATS 패키지를 통해 수집된 통계가 **사용자 정의로 존재하는지, 시스템에서 수집된 것인지**를 판단하는 데 유용하며, 실무에서는 통계 오류, 통계 누락, 통계 수동 고정 등에 대한 진단을 위해 활용됩니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| OBJECT_NAME | 통계 정보가 수집된 객체 이름 |
| OBJECT_TYPE | 객체 유형 (TABLE, INDEX 등) |
| STATTYPE | 수집된 통계 종류 (DATA, COLUMN, INDEX 등) |
| STATS_UPDATED | 통계가 마지막으로 갱신된 일시 |
| SOURCE | 통계 수집 방식 (USER / SYSTEM) |
| STATUS | 통계 사용 가능 여부 (VALID / STALE) |
3. 실전 활용 예제
3.1. 최근 사용자 정의 통계만 확인
SELECT
OBJECT_NAME,
OBJECT_TYPE,
STATS_UPDATED
FROM
USER_USTATS
WHERE
SOURCE = 'USER'
ORDER BY
STATS_UPDATED DESC;
3.2. 통계가 오래된(갱신 필요) 오브젝트 조회
SELECT
OBJECT_NAME,
STATUS
FROM
USER_USTATS
WHERE
STATUS = 'STALE';
3.3. 테이블에 수집된 통계 유형 파악
SELECT
OBJECT_NAME,
STATTYPE
FROM
USER_USTATS
WHERE
OBJECT_TYPE = 'TABLE';
4. USER_USTATS와 관련 뷰 비교
| 뷰 이름 | 역할 | 정보 범위 | 주요 사용 목적 |
|---|---|---|---|
| USER_USTATS | 사용자 통계 상태 확인 | 현재 사용자 소유 오브젝트 | 통계 수집 여부 진단 |
| USER_TAB_STATISTICS | 테이블별 통계 정보 | 기초 통계치 확인 | 행 수, 블록 수 등 분석 |
| DBA_OPTSTAT_OPERATIONS | 통계 수집 이력 추적 | DBA 권한 필요 | 자동/수동 수집 내역 파악 |
| USER_TAB_MODIFICATIONS | DML 변경 이력 추적 | 통계 STALE 여부 판단 근거 | DML 이후 통계 갱신 필요성 분석 |
5. USER_USTATS 활용 전략
- 쿼리 튜닝 시작점: 통계가 최신인지 확인 후 옵티마이저 실행 계획 분석
- 자동 수집과 수동 수집 구분: 통계 소스(SOURCE)를 기반으로 관리 정책 설계
- STATS_LOCK 및 FIX 전략: 중요한 객체는 수동 수집 후 고정 (DBMS_STATS.LOCK)
- 통계 갱신 자동화: STALE 상태 객체에 대해 주기적 재수집 스크립트 구성
6. 주의사항
- STATS_UPDATED는 수집 시점 기준: DML 변경 여부와 무관하므로, USER_TAB_MODIFICATIONS와 병행 사용 권장
- STATS_LOCK 여부는 따로 확인: USER_USTATS는 LOCKED 여부를 보여주지 않음
- 옵티마이저 정확성 의존: 잘못된 통계는 오히려 성능 저하를 초래할 수 있으므로 신중한 수집 필요
7. 결론
USER_USTATS는 Oracle 옵티마이저가 참조하는 통계 정보의 상태를 사용자 입장에서 정밀하게 진단할 수 있는 뷰입니다. 최신의 정확한 통계는 쿼리 성능에 핵심적인 영향을 미치므로, 이 뷰를 정기적으로 점검하고 통계 수집 전략을 자동화하면 데이터 기반의 고성능 운영 환경을 유지할 수 있습니다.
8. 출처
- Oracle Corporation. Oracle Database Reference
- Guy Harrison, 『Oracle Performance Survival Guide』
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] GLOBAL_NAME 설정과 활용 (0) | 2025.08.20 |
|---|---|
| [ORACLE] USER_VARRAYS : VARRAY 타입 구조 분석 및 활용 전략 (0) | 2025.08.12 |
| [ORACLE] USER_UPDATABLE_COLUMNS : 컬럼 수정 가능 여부 진단과 활용 전략 (0) | 2025.08.11 |
| [ORACLE] USER_UNUSED_COL_TABS : 삭제된 컬럼 정보 조회와 정리 전략 (0) | 2025.08.11 |
| [ORACLE] USER_TYPE_METHODS : 객체 타입 메서드 설계 및 분석 전략 (0) | 2025.08.10 |