Oracle CDC 인스턴스는 단일 Oracle 원본 데이터베이스에서 캡처한 변경 내용을 처리하기 위해 Oracle CDC Service에서 만든 프로세스입니다. Oracle CDC 인스턴스는 cdc.xdbcdc_config 테이블에서 해당 구성을 검색하고 cdc.xdbcdc_state 테이블에서 상태를 유지 관리합니다. 이러한 테이블은 Oracle CDC 인스턴스를 정의하는 CDC 데이터베이스의 일부입니다. xdbcdc 데이터베이스 및 테이블에 대한 자세한 내용은 CDC 데이터베이스를 참조하세요.
다음은 Oracle CDC 인스턴스에서 수행하는 작업에 대해 설명합니다.
서비스 시작 확인 처리: 시작 시 CDC 인스턴스는 xdbcdc_config 테이블에서 구성을 로드하고 CDC 인스턴스 지속 상태가 일관되고 변경 내용 처리를 시작할 수 있도록 일련의 상태 확인을 수행합니다.
변경 캡처 준비: 확인이 성공적으로 통과하면 Oracle CDC 인스턴스는 현재 정의된 모든 캡처 인스턴스를 검사하고 변경 캡처에 필요한 Oracle LogMiner 쿼리 및 기타 지원 구조를 준비합니다. 또한 Oracle 인스턴스는 Oracle CDC 인스턴스가 마지막으로 실행되었을 때 저장된 내부 캡처 상태를 다시 로드합니다.
Oracle에서 변경 내용 캡처: Oracle CDC 인스턴스는 Oracle LogMiner 기능을 통해 Oracle에서 변경 내용을 풀링하고 트랜잭션 커밋에 따라 순서를 지정한 다음 트랜잭션의 시간을 변경하고 CDC 데이터베이스의 SQL Server 변경 테이블에 씁니다.
서비스 종료 처리: Oracle CDC 인스턴스의 수명 주기는 Oracle CDC Service에서 관리됩니다. Oracle CDC 인스턴스를 종료하도록 요청하면 다음 작업을 수행합니다.
Oracle 트랜잭션 로그에서 읽기를 중지합니다.
완료된 Oracle 트랜잭션을 CDC 데이터베이스에 쓰는 것을 중지합니다.
현재 트랜잭션이 CDC 데이터베이스에 쓰기를 완료할 때까지 최대 30초(필요한 경우)를 기다립니다. 30초가 넘으면 쓰기가 취소되고 트랜잭션이 롤백됩니다(CDC 인스턴스를 다시 시작할 때 다시 시도).
별도의 스레드에서 스테이징된 트랜잭션 테이블에 가능한 한 많은 메모리 캐시 레코드를 최대 30초 동안 쓴 다음(가장 오래된 트랜잭션에서 최신 트랜잭션까지) xdbcdc_state 테이블을 업데이트하고 모든 변경 내용을 커밋합니다.
구성 변경 처리: Oracle CDC 인스턴스는 CDC Service에서 또는 cdc.xdbcdc_config 테이블에서 새 버전을 검색하여 구성 변경에 대한 알림을 받습니다. 대부분의 변경 내용은 Oracle CDC 인스턴스를 다시 시작할 필요가 없습니다(예: 캡처 인스턴스 추가 또는 제거). 그러나 Oracle 연결 문자열 또는 액세스 자격 증명 변경과 같은 일부 변경 내용은 CDC 인스턴스를 다시 시작해야 합니다.
복구 처리: Oracle CDC 인스턴스가 시작될 때 내부 상태는 xdbcdc_state 및 xdbcdc_staged_transactions 테이블에서 복원됩니다. 상태가 복원되면 CDC 인스턴스는 평소와 같이 진행됩니다.