본문 바로가기
Database/Oracle

[ORACLE] USER_SNAPSHOT_LOGS 뷰의 의미와 실전 활용 가이드

by Papa Martino V 2025. 8. 7.
728x90

USER_SNAPSHOT_LOGS 뷰의 의미와 실전 활용 가이드
[ORACLE] USER_SNAPSHOT_LOGS

1. USER_SNAPSHOT_LOGS란?

USER_SNAPSHOT_LOGS는 Oracle 데이터베이스에서 DBMS_STATS 패키지를 통해 수집된 통계 정보의 히스토리를 저장하는 뷰입니다. 이는 특히 DBA나 데이터 분석 담당자에게, 데이터 수집 작업이 언제 수행되었고 어떤 테이블에 영향을 주었는지에 대한 추적이 가능하도록 도와줍니다. 이 뷰는 USER_ 접두사가 붙은 뷰이므로, 현재 접속한 사용자 소유의 객체만을 보여주며, 시스템 전체의 정보를 보기 위해선 DBA_SNAPSHOT_LOGSALL_SNAPSHOT_LOGS를 사용할 수 있습니다.

2. 주요 컬럼 설명

컬럼명 설명
TABLE_NAME 통계 정보가 수집된 대상 테이블 이름
START_TIME 수집 작업 시작 시각
END_TIME 수집 작업 종료 시각
STATUS 성공 여부 (e.g., COMPLETED, FAILED)
NUM_ROWS 수집 시점의 행 수

3. USER_SNAPSHOT_LOGS의 실전 활용

  • 통계 수집 스케줄 점검: 자동 수집이 정상적으로 실행되고 있는지 확인 가능
  • 성능 저하 원인 추적: 특정 시점의 통계 정보 변경이 쿼리 계획에 영향을 주었는지 파악
  • 수집 실패 파악: STATUS 컬럼을 통해 오류 로그를 감지하여 재처리 가능

4. AWR과 USER_SNAPSHOT_LOGS 비교

항목 AWR (Automatic Workload Repository) USER_SNAPSHOT_LOGS
주요 목적 성능 진단 및 워크로드 분석 통계 수집 이력 추적
사용 주체 시스템 전반 (DBA) 개별 사용자 또는 개발자
데이터 유지 주기 보통 7일~30일 DBMS_STATS 실행 이력
자동 수집 여부 자동 (기본 설정) 반자동 또는 수동

5. 실전 예제: 최근 5일간 수집된 통계 로그 확인

SELECT TABLE_NAME, START_TIME, END_TIME, STATUS
FROM USER_SNAPSHOT_LOGS
WHERE START_TIME >= SYSDATE - 5
ORDER BY START_TIME DESC;
      

위 쿼리는 최근 5일 이내에 실행된 통계 수집 작업의 로그를 확인할 수 있는 실용적인 예시입니다.

6. USER_SNAPSHOT_LOGS 사용 시 주의점

  • USER 뷰이므로, 자신의 스키마 외의 정보는 확인 불가
  • DBMS_STATS가 아닌 수동 통계 수집의 경우 일부 로그 누락 가능
  • 데이터 양이 많을 경우 주기적 정리 필요 (성능 저하 방지)

7. 전문가 팁: 사용자 정의 스케줄링과의 연동

많은 기업들은 DBMS_SCHEDULER 또는 Crontab을 이용해 통계 수집 스케줄을 커스터마이징하고 있습니다. 이와 연계하여 USER_SNAPSHOT_LOGS를 분석하면, 각 테이블에 대한 최신 통계의 유지 상태를 실시간으로 검증할 수 있습니다.

8. 결론

USER_SNAPSHOT_LOGS는 Oracle 내부에서 종종 간과되기 쉬운 뷰이지만, 성능 분석과 통계 최적화 전략 수립에 있어 중요한 단서를 제공합니다. 특히 AWR이나 TKPROF 같은 고급 도구와 병행하여 활용할 경우, 더욱 정교한 분석이 가능합니다.

출처 및 참고 자료

728x90