728x90

Oracle 데이터베이스에서 Materialized View (MV)는 데이터를 주기적으로 복제하여 조회 성능을 극대화할 수 있는 중요한 객체입니다. 여러 개의 MV를 하나의 Refresh Group으로 묶어 관리하는 기능은 Oracle의 DBMS_REFRESH 패키지를 통해 제공되며, 이 그룹에 포함된 세부 항목(MV)을 확인하는 데 사용되는 딕셔너리 뷰가 바로 USER_REFRESH_CHILDREN입니다.
1. USER_REFRESH_CHILDREN 이란?
USER_REFRESH_CHILDREN 뷰는 현재 사용자가 소유한 Materialized View Refresh Group에 포함된 각 개별 Materialized View 정보를 제공합니다. 이 뷰를 통해 어떤 MV가 어떤 그룹에 속해 있는지, 테이블 또는 SNAPSHOT 이름은 무엇인지 등을 쉽게 파악할 수 있습니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| NAME | Refresh Group 이름 |
| LIST_ORDER | 리프레시 실행 순서를 나타내는 정렬 순서 |
| SNAME | 스키마 이름 (보통 현재 사용자) |
| ONAME | Materialized View 또는 SNAPSHOT 이름 |
3. USER_REFRESH_CHILDREN 조회 예시
-- 등록된 Refresh Group 구성 확인
SELECT name, list_order, sname, oname
FROM user_refresh_children
ORDER BY name, list_order;
-- 특정 그룹에 포함된 MV만 조회
SELECT oname
FROM user_refresh_children
WHERE name = 'SALES_REFRESH_GRP';
4. USER_REFRESH vs USER_REFRESH_CHILDREN 비교
| 항목 | USER_REFRESH | USER_REFRESH_CHILDREN |
|---|---|---|
| 목적 | Refresh Group의 스케줄 및 상태 확인 | Group 내 개별 MV 구성 확인 |
| 주요 컬럼 | NAME, INTERVAL, NEXT_DATE | NAME, ONAME, LIST_ORDER |
| 활용 포인트 | 주기 설정, 실패 모니터링 | MV 포함 여부 확인, 실행 순서 조정 |
5. 실무 활용 전략
- MV 포함 여부 자동 점검: 대규모 시스템에서는 누락된 MV를 수시로 체크하여 그룹 내 포함 유무 점검
- 정렬 순서 튜닝:
LIST_ORDER를 통해 종속성이 있는 MV의 실행 순서 지정 - 변경 이력 추적: 정기적으로 이 뷰를 백업하여 MV 추가/삭제 추적 가능
- 스키마별 MV 분리: 사용자별 그룹 구성 확인을 통해 권한 기반 분리 정책 적용 가능
6. 흔한 문제 사례 및 해결책
| 문제 | 원인 | 해결 방안 |
|---|---|---|
| 리프레시 시 오류 발생 | MV 간 종속성 미고려한 순서 설정 | LIST_ORDER 재정렬로 순서 재조정 |
| MV가 그룹에서 누락됨 | DBMS_REFRESH.ADD 호출 누락 | GROUP 구성 재확인 및 재등록 |
| 변경 내역 추적 어려움 | 로그 기록 미비 | 정기 조회 및 별도 기록 시스템 구축 |
7. 결론
USER_REFRESH_CHILDREN 뷰는 Oracle MV 환경에서 리프레시 그룹의 구성 요소를 체계적으로 관리하는 데 필수적인 도구입니다. 특히 여러 개의 MV를 효율적으로 리프레시해야 하는 대규모 환경에서 이 뷰를 통해 구성 정보를 정기적으로 점검하고 최적화하는 것은 시스템 안정성과 성능에 직접적인 영향을 미칩니다. DBMS_REFRESH API와 연동하면 더 강력한 자동화 시스템을 구축할 수 있습니다.
출처:
- Oracle Database PL/SQL Packages and Types Reference - DBMS_REFRESH
- Oracle Materialized View Concepts and Usage
- 현업 DBA의 MV 그룹 운영 경험 사례
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ORA-00900 : SQL command not properly ended 오류의 원인과 해결 전략 (0) | 2025.07.27 |
|---|---|
| [ORACLE] ORA-00600 : 원인 분석과 실무 중심의 해결 전략 (0) | 2025.07.27 |
| [ORACLE] USER_REFRESH : Materialized View 자동 리프레시 관리 전략 (0) | 2025.07.19 |
| [ORACLE] USER_QUEUE_TABLES : AQ 큐 테이블 구조와 고가용성 메시징 전략 (0) | 2025.07.19 |
| [ORACLE] USER_QUEUE_SCHEDULES : AQ 메시지 소비 스케줄링 관리와 최적화 전략 (0) | 2025.07.19 |