
Oracle 스냅샷(Snapshot)은 현재는 Materialized View (MView)라는 명칭으로 통합되었으며, 원격 또는 로컬 데이터의 복제본을 저장하고 정기적으로 갱신하는 방식으로 사용됩니다. USER_SNAPSHOTS 뷰는 사용자가 생성한 MView 객체에 대한 상태 및 동기화 정보를 제공합니다. 본 문서에서는 USER_SNAPSHOTS 뷰의 구조, 사용 목적, 실무 적용 사례를 중심으로 Oracle 복제 환경에서의 역할을 명확히 이해할 수 있도록 설명합니다.
1. USER_SNAPSHOTS 뷰란?
USER_SNAPSHOTS는 사용자가 소유한 Materialized View에 대한 메타데이터 정보를 제공하는 Oracle 데이터 딕셔너리 뷰입니다. 스냅샷의 쿼리 정의, 갱신 방식, 최신 동기화 시간 등의 정보가 포함됩니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| NAME | 스냅샷(물리적 뷰)의 이름 |
| QUERY | 스냅샷 정의 시 사용된 SELECT 쿼리 |
| UPDATABLE | 해당 MView가 업데이트 가능한지 여부 (Y/N) |
| LAST_REFRESH_TYPE | 마지막 리프레시 방식 (COMPLETE, FAST, FORCE) |
| LAST_REFRESH_DATE | 가장 최근에 스냅샷이 리프레시된 시각 |
| BUILD_MODE | 초기 스냅샷 구축 시 사용된 방식 (IMMEDIATE, DEFERRED) |
3. 스냅샷 유형 비교
| 유형 | 설명 | 갱신 방식 | 적합 용도 |
|---|---|---|---|
| COMPLETE | 전체 데이터를 다시 불러옴 | 전체 테이블 재구축 | 대규모 변경 시 |
| FAST | 변경된 부분만 반영 | Materialized View Log 필요 | 자주 변경되는 소규모 데이터 |
| FORCE | FAST 실패 시 COMPLETE 자동 수행 | 혼합 전략 | 유연한 동기화 |
4. 실전 활용 예제
-- 사용자 스냅샷의 최근 리프레시 확인
SELECT NAME, LAST_REFRESH_DATE, LAST_REFRESH_TYPE
FROM USER_SNAPSHOTS
ORDER BY LAST_REFRESH_DATE DESC;
-- 스냅샷 정의 쿼리 확인
SELECT NAME, QUERY
FROM USER_SNAPSHOTS
WHERE NAME = 'SALES_MV';
5. 관련 뷰 비교표
| 뷰 이름 | 내용 | 접근 범위 | 활용 목적 |
|---|---|---|---|
| USER_SNAPSHOTS | 자신이 생성한 스냅샷(MView) 정보 | 현재 사용자 | MView 정의 및 상태 확인 |
| DBA_MVIEWS | DB 전체 MView 정보 | DBA | 전체 복제 전략 관리 |
| USER_MVIEW_LOGS | MView 로그 테이블 목록 | 현재 사용자 | FAST 갱신 상태 확인 |
6. 자주 묻는 질문 (FAQ)
Q1. 스냅샷은 자동으로 갱신되나요?
A. 갱신 주기를 정의한 REFRESH ON SCHEDULE 옵션이 있을 경우 자동으로 동기화됩니다. 그렇지 않다면 수동으로 DBMS_MVIEW.REFRESH를 실행해야 합니다.
Q2. FAST 갱신이 실패하는 이유는?
A. 대상 테이블에 MATERIALIZED VIEW LOG가 없거나, 로그에 필요한 컬럼이 누락되었을 경우 실패합니다.
Q3. 스냅샷은 뷰와 무엇이 다른가요?
A. 뷰(View)는 실시간 쿼리 결과만을 보여주는 논리 객체인 반면, 스냅샷(MView)은 실제 데이터를 물리적으로 저장하고 주기적으로 갱신되는 객체입니다.
7. 결론
USER_SNAPSHOTS 뷰는 오라클 사용자에게 스냅샷(MView)의 구조와 동기화 상태를 모니터링할 수 있는 중요한 정보를 제공합니다. 데이터 웨어하우스, 복제 환경, 리포트 최적화 등 다양한 시나리오에서 효과적인 MView 전략 수립을 위해 이 뷰의 활용이 필수적입니다.
8. 참고 문헌
- Oracle Database Data Warehousing Guide – Materialized Views
- Oracle SQL Language Reference – CREATE MATERIALIZED VIEW
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] USER_SNAPSHOT_REFRESH_TIMES 뷰 완전 해부 및 활용법 (0) | 2025.08.07 |
|---|---|
| [ORACLE] USER_SNAPSHOT_LOGS 뷰의 의미와 실전 활용 가이드 (0) | 2025.08.07 |
| [ORACLE] USER_SEQUENCES 완전 해설 : 시퀀스 속성과 자동 증가 키 관리의 핵심 (0) | 2025.08.06 |
| [ORACLE] USER_SEGMENTS 완전 해설 : 사용자 객체의 스토리지 공간 정보 조회와 활용법 (0) | 2025.08.06 |
| [ORACLE] USER_RULESETS 완전 해설 : 사용자 정의 룰셋(Ruleset)의 구조와 실무 활용 (0) | 2025.08.06 |