본문 바로가기
Database

[ORACLE] ALL_MVIEW_DETAIL_RELATIONS 완전 분석 : MV와 테이블 간 관계 추적 법

by Dev. Orion 2025. 6. 25.

오라클 ALL_MVIEW_DETAIL_RELATIONS 완전 분석 : MV와 테이블 간 관계 추적법
[Oracle] ALL_MVIEW_DETAIL_RELATIONS

 

Oracle의 물리적 뷰(Materialized View)는 사전 계산된 결과를 저장함으로써 성능을 높이는 대표적인 데이터베이스 최적화 기법입니다. 그러나 이 물리적 뷰가 어떤 기본 테이블(Base Table)에 기반하여 구성되어 있는지를 명확하게 파악하는 일은 유지보수 및 성능 분석에서 매우 중요합니다. ALL_MVIEW_DETAIL_RELATIONS 뷰는 이러한 정보를 제공하는 중요한 시스템 뷰로, 물리적 뷰가 참조하는 모든 테이블의 관계 정보를 제공합니다. 이 글에서는 해당 뷰의 구조, 활용 방법, 실무에서의 유용한 분석 전략까지 종합적으로 다룹니다.

ALL_MVIEW_DETAIL_RELATIONS란?

ALL_MVIEW_DETAIL_RELATIONS는 현재 사용자가 접근할 수 있는 모든 MV에 대해 참조하는 상세 테이블 목록을 보여주는 Oracle 딕셔너리 뷰입니다. MV가 생성된 쿼리 내에서 사용된 각 테이블이 이 뷰를 통해 추적 가능하며, MV 리프레시 시 영향을 받는 테이블도 함께 확인할 수 있습니다.

주요 컬럼 설명

  • OWNER: MV를 소유한 사용자
  • MVIEW_NAME: 물리적 뷰 이름
  • DETAILOBJ_OWNER: 상세 테이블의 소유자
  • DETAILOBJ_NAME: MV에서 참조하는 테이블 또는 뷰 이름
  • JOIN_INDICATOR: 조인 여부 (Y/N)
  • FILTER_INDICATOR: WHERE 절 필터 여부 (Y/N)
  • AGGREGATE_INDICATOR: 집계 함수 포함 여부 (Y/N)

활용 예제

예제 1: 특정 MV가 참조하는 테이블 목록 확인

SELECT detailobj_owner, detailobj_name, join_indicator, aggregate_indicator
FROM all_mview_detail_relations
WHERE mview_name = 'SALES_MV'
AND owner = 'SALES';

예제 2: 조인이 포함된 MV 목록 조회

SELECT DISTINCT mview_name
FROM all_mview_detail_relations
WHERE join_indicator = 'Y';

예제 3: 필터가 적용된 상세 테이블 조회

SELECT mview_name, detailobj_name
FROM all_mview_detail_relations
WHERE filter_indicator = 'Y';

관련 뷰 비교

뷰 이름 설명 활용 목적
ALL_MVIEW_DETAIL_RELATIONS MV가 참조하는 테이블 관계 정보 리프레시 영향 범위 파악
ALL_MVIEWS MV 정의 및 리프레시 메타정보 MV 속성 분석
ALL_DEPENDENCIES 객체 간 의존성 추적 전체 종속성 분석

실무 적용 전략

  • 리프레시 타겟 테이블 분석: MV 리프레시 시 어떤 테이블이 영향을 받는지 사전 파악
  • 조인 복잡도 진단: JOIN_INDICATOR = 'Y'인 테이블이 많을 경우 MV 재설계 고려
  • MV 분할 전략 설계: 하나의 MV에 다수 테이블이 결합되어 있다면 업무 목적별 MV 분할 권장
  • 테이블 변경 영향 분석: MV 참조 테이블의 구조 변경 시, 해당 MV에 미치는 영향 사전 추적 가능
  • 필터 조건 기준 리라이트 최적화: WHERE 조건이 있는 DETAIL 테이블은 MV 재작성 시 걸림돌이 될 수 있으므로 구조 단순화 필요

실제 적용 사례

한 글로벌 유통회사는 지역별 재고 및 판매 집계를 위해 7개 테이블을 조인한 MV를 운영하고 있었습니다. 해당 MV의 리프레시 시간이 과도하게 증가하면서 시스템 부하가 발생하였고, 재설계를 검토하게 되었습니다. ALL_MVIEW_DETAIL_RELATIONS를 활용해 분석한 결과, 다음과 같은 인사이트를 확보했습니다:

  • 전체 테이블 중 4개가 집계와 필터에 동시에 사용되고 있었음
  • JOIN_INDICATOR = 'Y'인 테이블이 MV 성능 저하의 핵심 원인으로 파악됨
  • 고빈도 변경이 발생하는 테이블이 MV와 강하게 연결되어 있었음

이후 MV를 3개로 분리하고, 쿼리의 복잡도를 낮춘 결과 리프레시 시간이 50% 이상 단축되었으며, 리소스 사용률도 크게 감소하였습니다.

결론

ALL_MVIEW_DETAIL_RELATIONS는 Oracle에서 물리적 뷰의 내부 구조와 참조 테이블의 연관성을 분석하는 데 있어 필수적인 도구입니다. 특히 MV 성능 최적화, 리프레시 전략 수립, 유지보수 및 장애 분석 시 핵심적인 역할을 하며, 정확한 종속성 파악을 통해 안정적인 데이터 웨어하우스 운영 기반을 마련할 수 있습니다.

출처