
Oracle Database의 Advanced Replication은 여러 데이터베이스 간 데이터 동기화를 보장하기 위해 다양한 충돌 해결 메커니즘(Conflict Resolution Mechanism)을 제공합니다. 복제 중 두 개 이상의 사이트에서 동일한 데이터를 변경한 경우, 시스템은 충돌을 감지하고 사전에 정의된 정책에 따라 처리해야 합니다. USER_REPRESOLUTION 뷰는 이러한 충돌 해결 정책이 어떤 방식으로 정의되었는지 사용자 단위에서 확인할 수 있는 데이터 딕셔너리 뷰입니다. 이 문서에서는 해당 뷰의 구조, 사용 시나리오, 실무 활용법 및 관리 전략을 종합적으로 안내합니다.
1. USER_REPRESOLUTION 뷰란?
USER_REPRESOLUTION은 현재 사용자 스키마에서 복제 충돌이 발생했을 때, 어떤 해결 정책이 정의되어 있는지를 보여주는 Oracle 시스템 뷰입니다. 충돌 유형에는 INSERT, UPDATE, DELETE 등이 있으며, 각각에 대해 별도의 해결 정책을 지정할 수 있습니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| GNAME | 복제 그룹 이름 |
| SNAME | 스키마 이름 |
| ONAME | 객체 이름(테이블 등) |
| CONFLICT_TYPE | 충돌 유형 (INSERT, UPDATE, DELETE) |
| RESOLUTION_TYPE | 적용된 충돌 해결 방식 (LATEST_TIMESTAMP, MAXIMUM, PRIORITY 등) |
| COLUMN_GROUP | 해당 정책이 적용되는 컬럼 그룹 |
| PRIORITY_GROUP | 우선순위 기반 해결일 경우 관련 그룹 이름 |
| FUNCTION_NAME | 사용자 정의 함수 이름 (사용된 경우) |
3. 실무 활용 예제
SELECT ONAME, CONFLICT_TYPE, RESOLUTION_TYPE, PRIORITY_GROUP
FROM USER_REPRESOLUTION
WHERE GNAME = 'SALES_REPGRP';
위 쿼리는 SALES_REPGRP 복제 그룹에서 정의된 충돌 해결 정책을 유형별로 확인하는 데 사용됩니다.
4. 지원되는 충돌 해결 유형
- DISCARD: 충돌 시 변경 내용을 무시
- OVERWRITE: 변경 내용을 강제로 덮어씀
- LATEST TIMESTAMP: 가장 최근에 변경된 내용을 채택
- PRIORITY: 우선순위 그룹을 기준으로 결정
- MAXIMUM / MINIMUM: 값 크기를 기준으로 결정
- USER FUNCTION: 사용자 정의 PL/SQL 함수 사용
5. 관련 뷰 비교표
| 뷰 이름 | 내용 | 용도 | 조회 권한 |
|---|---|---|---|
| USER_REPRESOLUTION | 사용자 정의 충돌 해결 정책 조회 | 복제 정책 진단 | 자신의 객체만 |
| ALL_REPRESOLUTION | 접근 가능한 모든 정책 조회 | 공동 프로젝트 관리 | 권한 있는 사용자 |
| DBA_REPRESOLUTION | 전체 DB 충돌 정책 조회 | 전사적 감사 및 관리 | DBA 전용 |
6. 충돌 해결 정책 정의 방법
다음은 우선순위 기반 UPDATE 충돌 해결 정책 예시입니다.
BEGIN
DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
sname => 'HR',
oname => 'CUSTOMERS',
column_group => 'CUST_GROUP',
sequence_no => 1,
method => 'PRIORITY',
function_name => NULL,
priority_group => 'BRANCH_PRIORITY');
END;
7. 관리 팁 및 주의사항
- 정의된 충돌 정책이 실제 복제 객체 구조와 일치하는지 주기적 검토
- 사용자 정의 함수 사용 시 예외 처리와 테스트 필수
- 충돌 정책 적용 후
USER_REPRESOLUTION을 통해 등록 결과 확인 - 업무 로직 변경 시 관련 충돌 정책도 반드시 갱신
8. 자주 묻는 질문 (FAQ)
Q1. USER_REPRESOLUTION 뷰에 항목이 보이지 않는다면?
A. 해당 사용자 소유의 객체에 대해 충돌 해결 정책이 정의되지 않았거나 복제 그룹에 등록되지 않은 경우입니다.
Q2. 사용자 정의 함수는 어떻게 적용하나요?
A. 함수는 FUNCTION_NAME 컬럼에 이름을 지정하고, 해당 함수는 사전에 생성되어 있어야 하며 BOOLEAN을 반환해야 합니다.
Q3. 하나의 객체에 여러 정책을 정의할 수 있나요?
A. 가능합니다. INSERT, UPDATE, DELETE 각각에 대해 별도의 정책을 정의할 수 있으며, 컬럼 그룹 단위로도 세분화할 수 있습니다.
9. 결론
USER_REPRESOLUTION 뷰는 Oracle 복제 시스템 내 충돌 해결 전략의 전체 맥락을 파악할 수 있는 강력한 도구입니다. 이를 통해 실시간 충돌 감지 및 대응은 물론, 데이터 정합성 확보와 비즈니스 정책 반영까지 실현할 수 있습니다. 복제 정책 수립 후에는 이 뷰를 통해 반드시 결과를 점검하고 유지보수 시에도 참고 지표로 활용하세요.
10. 참고 문헌
- Oracle Database Advanced Replication Guide – Oracle 공식 문서
- Oracle PL/SQL Packages and Types Reference – DBMS_REPCAT
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] USER_REPRESOLUTION_METHOD 완전 해설 : 복제 충돌 해결 방법 정의와 활용 가이드 (0) | 2025.08.05 |
|---|---|
| [ORACLE] USER_REPPROP 완전 해설 : 오라클 복제 전파 속성 관리의 핵심 뷰 분석 (0) | 2025.08.05 |
| [ORACLE] USER_REPPRIORITY_GROUP 완전 해설 : 복제 충돌을 제어하는 우선순위 정책 구성 방법 (0) | 2025.08.05 |
| [ORACLE] USER_REPPRIORITY 완벽 해설 : 충돌 해결 우선순위 정책의 핵심 구조 (0) | 2025.08.05 |
| [ORACLE] USER_REPPARAMETER_COLUMN 분석 : 복제 충돌 해결의 핵심 파라미터 열 추적 가이드 (0) | 2025.08.05 |