답변

6

오라클 CDC는 DB 테이블의 변경 사항을 캡처하고 변경 사항은 특별한 Oracle 테이블에 저장됩니다. CDC 작업에는 비동기 (Java 기반) 또는 동기 (DB 트리거 기반, 성능 오버 헤드)의 두 가지 모드가 있습니다.

Oracle Streams는 Oracle CDC 위에 있으며 두 서버 간의 데이터 동기화를위한 전체 전송 메커니즘 (예 : HTTP)입니다. Oracle Advanced Queues 기술을 기반으로하며 고성능 및 안정성을 위해 설계되었습니다.

Oracle CDC와 Streams는 일반적으로 Oracle DB 서버 간의 데이터 동기화에 사용됩니다. Oracle CDC를 사용하면 Oracle Streams를 사용할 필요가 없습니다. 당신은 2 개의 DB 서버 사이의 동기화를 위해 플랫 파일을 생성하는 자신의 데이터 내보내기 루틴을 작성할 수 있지만, Streams를 사용하면 2 개의 서버 사이에 네트워크 링크가 있어야합니다.

데이터베이스 변경 알림은 다시 서버 간 동기화에 사용되지 않고 대부분 클라이언트 측의 데이터 캐시 컨텍스트에서 클라이언트에 대한 결과 집합 변경에 대한 서버 알림에 사용됩니다.

+0

"결과 셋"이라는 용어는 쿼리를 사용하여 DCN을 활성화하려는 테이블을 쿼리의 알림 결과에만 표시하므로주의해야합니다. 모든 DCN이 신경 쓰는 것은 FROM 절입니다. FROM에있는 테이블을 변경하면 알림이 발생합니다. –

+0

안녕하세요 앤드류, asynrhonous 모드에서 Java와 바인딩 된 CDC의 예가 있습니까? java 또는 그 이상으로 구현 된 가입자의 종류. – user2427

+0

http://docs.oracle.com/cd/E11882_01/server.112/e25554/cdc.htm에 따르면 "비동기식 변경 데이터 캡처는 Oracle Streams에 대한 관계형 인터페이스를 기반으로 제공됩니다." 나는 이것이 어떻게 나머지 대답에 영향을 주는지는 모르겠다. –

0

시스템간에 동기화를 위해 Streams와 CDC 게시 메커니즘을 결합하여 비동기 모드를 구현할 수 있습니다. 이 목적을 위해 스트림을 사용하지 않기로 결정했다면, 각 트랜잭션에 약간의 오버 헤드를 가하는 동기식 모드를 사용하게 될 것입니다.

관련 문제