
Oracle의 Advanced Replication 기능을 활용하면 여러 데이터베이스 간 데이터를 동기화할 수 있습니다. 하지만 여러 사이트에서 동시에 동일한 데이터를 수정할 경우 충돌(conflict)이 발생할 수 있으며, 이를 자동으로 해결하기 위한 다양한 정책이 제공됩니다. 그중에서도 우선순위(Priority)를 기준으로 충돌을 해결하는 정책은 실무에서 자주 사용되며, 이와 관련된 정보를 제공하는 핵심 뷰가 바로 USER_REPPRIORITY입니다. 이 글에서는 Oracle 복제 충돌 해결에 있어 USER_REPPRIORITY 뷰의 의미, 구조, 사용 예제, 다른 관련 뷰와의 비교까지 상세하게 다루며, 실무에서 어떻게 활용할 수 있는지에 대한 실질적인 가이드를 제공합니다.
1. USER_REPPRIORITY 뷰란?
USER_REPPRIORITY는 현재 사용자 스키마에서 정의된 우선순위 그룹(Priority Group) 내의 각 항목(값 또는 범주)에 대해 할당된 우선순위 값을 보여주는 Oracle 데이터 딕셔너리 뷰입니다. 이 뷰의 정보는 DBMS_REPCAT.ADD_PRIORITY를 통해 등록되며, 충돌 발생 시 어떤 값이 우선 적용되어야 할지를 결정하는 데 활용됩니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| PRIORITY_GROUP | 우선순위 그룹 이름 |
| PRIORITY | 값에 대한 우선순위 (1이 가장 높음) |
| VALUE | 우선순위가 부여된 값 |
| REFERENCE_NAME | 해당 값이 참조하는 객체 이름 (예: 컬럼명) |
3. 왜 중요한가?
예를 들어, 여러 지점에서 동일한 고객 정보를 수정했을 때 어느 지점의 정보가 최종적으로 반영되어야 할까요? 우선순위 그룹을 활용하면 특정 지점 또는 특정 조건이 우선되도록 정책을 정할 수 있습니다. 이는 데이터 신뢰도와 사용자 정책을 반영하는 데 매우 유용합니다.
4. 실전 예제: 우선순위 항목 조회
SELECT PRIORITY_GROUP, VALUE, PRIORITY
FROM USER_REPPRIORITY
WHERE PRIORITY_GROUP = 'BRANCH_PRIORITY';
이 쿼리는 'BRANCH_PRIORITY'라는 우선순위 그룹에 정의된 각 값들의 우선순위를 보여줍니다. 값이 클수록 우선순위가 낮아집니다.
5. 관련 뷰 비교표
| 뷰 이름 | 기능 | 조회 대상 | 사용자 범위 |
|---|---|---|---|
| USER_REPPRIORITY | 사용자가 정의한 우선순위 항목 조회 | 자신의 우선순위 그룹 | 일반 사용자 |
| ALL_REPPRIORITY | 접근 가능한 모든 우선순위 항목 조회 | 자신 + 권한 있는 다른 사용자 | 협업 사용자 |
| DBA_REPPRIORITY | 전체 DB의 우선순위 정책 조회 | 전체 복제 시스템 | DBA 전용 |
6. 우선순위 충돌 해결 정책 설정 방법
충돌 해결 정책 설정은 아래와 같이 수행됩니다.
BEGIN
DBMS_REPCAT.ADD_PRIORITY(
gname => 'SALES_REPGRP',
sname => 'HR',
oname => 'CUSTOMERS',
reference_name => 'BRANCH_ID',
priority_group => 'BRANCH_PRIORITY');
DBMS_REPCAT.ADD_PRIORITY_VALUE(
priority_group => 'BRANCH_PRIORITY',
value => 'SEOUL',
priority => 1);
DBMS_REPCAT.ADD_PRIORITY_VALUE(
priority_group => 'BRANCH_PRIORITY',
value => 'BUSAN',
priority => 2);
END;
위 설정은 SEOUL 지점에서 수정된 데이터가 BUSAN보다 우선 반영되도록 설정한 것입니다.
7. 실무 적용 전략
- 비즈니스 로직에 따라 우선순위를 정하고, 변경 요청 시 사전 시뮬레이션 필수
- 우선순위 그룹은 컬럼 기반으로 정의되므로 컬럼 구조 변경 시 재점검 필요
- 주기적으로
USER_REPPRIORITY를 조회하여 정책이 정상 적용되었는지 확인
8. 자주 묻는 질문 (FAQ)
Q1. 우선순위가 동일한 값이 있으면 어떻게 되나요?
A. 동일한 PRIORITY를 가진 값이 충돌할 경우 Oracle은 내부 알고리즘 또는 시간 기준으로 처리합니다. 가능하면 유일한 순위를 설정하세요.
Q2. 하나의 컬럼에 여러 우선순위 그룹을 설정할 수 있나요?
A. 아니요. 하나의 우선순위 그룹은 하나의 기준 컬럼에만 적용되어야 하며, 중복될 경우 오류가 발생합니다.
Q3. 우선순위 정책을 변경할 수 있나요?
A. 가능합니다. DBMS_REPCAT.REMOVE_PRIORITY와 ADD_PRIORITY를 통해 갱신할 수 있습니다. 단, 적용 시기와 충돌 로그 영향에 주의하세요.
9. 결론
USER_REPPRIORITY는 Oracle 복제 환경에서 충돌이 발생했을 때 어떤 데이터가 우선 반영되어야 할지를 사전에 정의하고 확인할 수 있는 중요한 뷰입니다. 기업 간, 지점 간, 사용자 간 우선순위를 정해 정책적으로 데이터 품질을 관리하고자 할 때 필수적인 도구이며, 실무에서 정기적으로 점검하는 것이 바람직합니다.
10. 참고 문헌
- Oracle Database Advanced Replication Guide – Oracle 공식 문서
- Oracle PL/SQL Packages and Types Reference – DBMS_REPCAT
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] USER_REPRESOLUTION 완전 분석 : 복제 충돌 해결 정책을 한눈에 파악하는 핵심 뷰 (0) | 2025.08.05 |
|---|---|
| [ORACLE] USER_REPPRIORITY_GROUP 완전 해설 : 복제 충돌을 제어하는 우선순위 정책 구성 방법 (0) | 2025.08.05 |
| [ORACLE] USER_REPPARAMETER_COLUMN 분석 : 복제 충돌 해결의 핵심 파라미터 열 추적 가이드 (0) | 2025.08.05 |
| [ORACLE] USER_REPOBJECT 완전 해부 : 오라클 복제 객체의 구조와 활용 (0) | 2025.08.04 |
| [ORACLE] USER_REPKEY_COLUMNS 뷰 완전 해설 : 복제 키 컬럼을 이해하는 핵심 가이드 (0) | 2025.08.04 |