Oracle Сhange Data Capture
Oracle Сhange Data Capture (CDC) — технология, встроенная в сервер БД Oracle 10g, которая предназначена для захвата подтвержденных (committed) изменений в таблицах данных и передачи изменений в другие системы.
Первоначально в системе-источнике (publisher) задается набор публикуемых таблиц, изменения в которых фиксируются в специальной таблице изменений, к которой система-подписчик (subscriber) получает доступ посредством представления (view).
Управление подпиской и публикацией изменений осуществляется с помощью API — PL/SQL пакетов DBMS_CDC_PUBLISH и DBMS_CDC_SUBSCRIBE.
Доступно несколько режимов функционирования:
Синхронный режим (synchronous mode) — реализуется путем создания триггеров на таблицах в системе-источнике. В этом случае при выполнении DML-операций над публикуемыми таблицами захват изменений и помещение их в таблицу изменений выполняется в рамках транзакции — в момент подтверждения изменений (commit) в системе-источнике. Данный режим доступен в версии Oracle Standard Edition.
Асинхронный режим (asynchronous mode) — работает с использованием журналов повторного выполнения. При этом захват и передача изменений происходит вне транзакции, выполняемой в системе-источнике. Это позволяет не создавать дополнительной нагрузки на систему-источник в данном режиме. В этом случае задействуется механизм Oracle Streams. Данный режим доступен только в версии Oracle Enterprise Edition.
Схема работы CDC в синхронном режиме:

В асинхронном режиме работы возможны следующие варианты настройки системы:
Asynchronous HotLog Mode
В этом случае используются оперативные журналы транзакций (online redo logs).
В этом случае таблица изменений должна быть в базе данных системы-источника.

Asynchronous Distributed HotLog Mode
В этом случае данные для захвата данных используются также оперативные журналы транзакций. Но таблица изменений располагается на другом сервере БД (см. схему). При этом системы источник и приемник могут располагаться на различных аппаратных платформах и работать на различных операционных системах.

Asynchronous AutoLog Mode
В этом случае журналы передаются в систему-приемник (standby redo logs). Доставкой журналов повторного выполнения управляют специализированные Redo transport services, настраиваемые параметрами инициализации сервера Oracle.
При этом могут быть использованы как оперативные журналы повторного выполнения (asynchronous AutoLog online), так и архивные журналы (asynchronous AutoLog archive). В on-line режиме передача данных на приемник происходит при каждом commit на источнике — процесс LGWR пишет изменения (change record) и локальные redo logs, и передает на удаленный сервер. В архивном режиме передача на приемник происходит в момент создания архивных журналов — работы процесса ARCn.

