본문 바로가기
Database/Oracle

[ORACLE] USER_REPRESOLUTION 완전 분석 : 복제 충돌 해결 정책을 한눈에 파악하는 핵심 뷰

by Papa Martino V 2025. 8. 5.
728x90

USER_REPRESOLUTION 완전 분석 : 복제 충돌 해결 정책을 한눈에 파악하는 핵심 뷰
[ORACLE] USER_REPRESOLUTION

 

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
728x90