다음을 통해 공유


Oracle 게시자용 트랜잭션 복제 워크플로

Oracle 게시자에 대한 트랜잭션 복제는 MicrosoftSQL Server 트랜잭션 복제 게시 아키텍처로 작성되었지만 게시자에서 변경 내용을 추적하고 배포자로 이러한 변경 내용을 배달하는 프로세스는 표준 트랜잭션 복제와 전혀 다릅니다. 이러한 차이에도 불구하고 Oracle 데이터베이스에서 발생하는 트랜잭션은 일관된 트랜잭션 그룹으로 구독자에 적용됩니다. 테이블 간 외래 키 참조가 있는 테이블은 변경 내용이 배달될 때도 데이터 관계를 유지합니다. 외래 키는 구독자에 복사되지 않습니다.

[!참고]

LOB(Large Object)는 다른 데이터 형식과 다른 방식으로 추적됩니다. 자세한 내용은 Oracle 게시자에 대한 디자인 고려 사항 및 제한 사항 항목의 "큰 개체에 대한 고려 사항" 섹션을 참조하십시오.

다음 워크플로에서는 Oracle 게시자에서의 변경 내용 추적 및 배달과 관련된 주요 단계를 중점적으로 설명합니다.

변경 내용 추적

  1. 복제를 위해 게시된 하나 이상의 Oracle 테이블에 삽입, 업데이트 또는 삭제를 수행합니다.

  2. 복제에 의해 게시된 각 Oracle 테이블에 설치된 행 수준 트리거가 수정된 각 행에 대해 발생되며 테이블과 연결된 아티클 로그 테이블에 대한 변경 내용 정보를 저장합니다.

  3. 행 수준 트리거가 발생되면 HREPL_seq 시퀀스에서 숫자가 검색되어 DML 작업을 설명하는 로그 테이블 행에 할당됩니다. 이렇게 하면 복제가 구독자에서 변경 명령을 올바른 순서대로 적용합니다.

  4. 기본 키 업데이트가 발생하면 테이블에 설치된 문 수준 트리거도 시작되어 같은 문에서 발생하는 여러 기본 키 업데이트가 서로 연결되도록 허용합니다. 문 식별자는 HREPL_Stmt 시퀀스에서 가져옵니다. 이 식별자는 구독자에서 기본 키 업데이트를 적절하게 처리하는 데 사용됩니다.

  5. 게시된 Oracle 테이블에서 삽입되거나 삭제된 각 행의 경우 관련 아티클 로그 테이블에 행 하나가 삽입됩니다. Oracle 테이블에서 업데이트된 각 행의 경우 복제에 행의 이전 상태에 대한 정보가 필요한지 여부에 따라 한 행(이후 이미지) 또는 두 행(이전 이미지 및 이후 이미지)이 로그 테이블에 삽입됩니다.

배포자에 변경 내용 배달

  1. 로그 판독기 에이전트는 폴링 간격과 아직 연결되지 않은 아티클 로그에서 트랜잭션이 일관된 변경 내용 집합을 식별하고 로그 테이블 항목의 행 ID를 HREPL_Poll 테이블에 임시 저장합니다. HREPL_Pollid 시퀀스에서 가져온 식별자는 다른 집합에 상대적인 집합의 처리 순서를 제공하는 것 뿐 아니라 각 변경 항목을 트랜잭션이 일관된 집합의 멤버로 표시하는 데 사용됩니다.

  2. 게시된 테이블에 대한 변경 내용을 처리할 때는 행이 로그 테이블에서 검색되고 HREPL_Pollid의 현재 폴링 ID를 사용하여 처리할 행이 식별됩니다.

  3. 로그 테이블의 변경 내용 일괄 처리는 배포 데이터베이스에서 단일 트랜잭션으로 커밋되고 MSrepl_commandsMSrepl_transactions 테이블에 저장됩니다.

그런 다음 표준 트랜잭션 복제와 같이 변경 내용이 배포 데이터베이스에서 읽힌 다음 배포 에이전트에 의해 구독자로 배달됩니다.