Change Data Capture (CDC) - OracleChange Data Log Miner and Streams Oracle Database 11g DW Tables...
Transcript of Change Data Capture (CDC) - OracleChange Data Log Miner and Streams Oracle Database 11g DW Tables...
<Insert Picture Here>
Change Data Capture (CDC)
• Обзор
• Детали
• Сравнение режимов CDC
• CDC вместе с Oracle Warehouse Builder
• Дополнительная информация
• Q&A
Методы извлечения новыхданных
• Два метода
• Полное извлечение:
• Не требуется отслеживатьизменения
• Больше данных переносить
• Меньшая нагрузка наOLTP среду
• Инкрементальное извлечение:
• Требуется отслеживатьизменения
• Меньше данных
• Большая нагрузка на OLTP
Все
строки
Только
изменения
История Oracle Change Data Capture
• Oracle Database 9.2: synchronous
• Построена на триггерах
• Часть транзакции
• Oracle Database 10g Release 1: asynchronous
• Основана на Oracle Streams
• Поддерживается только 10g
• Oracle Database 10g Release 2: asynchronous
• Поддержка для 9.2.0.6 или выше как источника
Change Data Capture СегодняOracle Database 11g
• Synchronous
• Asynchronous (local) hotlog
• Читает [redo logs | archive logs]
• Asynchronous distributed hotlog
• Читает redo logs на источнике, применяет на целевой DB
• Поддержка Cross-version/cross operating system
• Asynchronous remote autolog [online | archive]
• Распространяет [redo logs | archive logs] на целевую DB
• Собирает и применяет изменения на целевой DB(downstream)
• Требуется одинаковых версий базы и ОС
Как работает Asynchronous CDC
• Собираем изменения из [redo | archive] logs
• Не нужно менять приложение
• Минимальная дополнительная нагрузка
• Хранит изменения в таблицах измененийOLTPDB
Logfiles
Logical Change Data
Log Minerand
Streams
Oracle Database 11gDWTables
SQL, PL/SQL,Java
Transform
Change Data Capture & Streams
• Проще интерфейс
• Меньшая гибкость
• Разработана для «почти» real-time хранилищ данных
• Bulk-load интерфейс
• Поддержка окна для подписчика на данные
• Гарантированная согласованность данных
• Asynchronous CDC это приложение на базе Streams
Терминология Oracle
• Change source – Логическое представление базы-источника
• Publisher – публикует изменения из источника
• Обычно отдельная схема в базе
• Subscriber – подписывается на изменения
• 1 publisher может иметь N subscribers
• Many implementations use one subscriber
• Обычно отдельная схема в базе
• Change table – таблица с изменениями
• Change set – транзактно-согласованный наборданных с изменениями
Database Logging
• Asynchronous CDC использует redo logs
• Журналирование может быть установлен впринудительный режим
• Database level – все изменения в базе
• Tablespace level – все изменения в табличномпространстве
• Table level – все изменения в таблице
• ЖУРНАЛИРОВАНИЕ ТРЕБУЕТСЯ ДЛЯASYNCHRONOUS CDC
• Нежурналируемые операции не мог быть собраны
• Пример: загрузка в режиме direct path без enforced logging
Supplemental Logging
• Дополнительное журналирование для того, чтобылогически связать измененные записи
• Применяется к базе-источнику
• Рекомендовано для упрощения обработки в режимеdownstream
• Primary key/unique столбцы (уже собирается!) достаточно
• Рекомендуется включить для всех собираемыхстолбцов
• Автоматически начиная с 10gR2 (как источника)
• Если нет primary/unique, то вся записи сохраняется вжурнал
• Relevant for updates
Сценарий применения CDC Начальный ETL
SOURCE_TABLE
Начальные
данные
SOURCE
ETL
Начальная загрузка данных вхранилище с помощью bulk load.
Сценарий применения CDC Настройка CDC
ИзначальнопустаяSOURCE_TABLE
CHANGE_TABLE
Ничегоне показывает
SUB_VIEW
SOURCE PUBLISHER SUBSCRIBER
Сценарий применения CDC Появление и сбор изменений
Ничегоне показывает
SUB_VIEW
Deleted
Updated
Inserted
Updated old
Updated new
Change table собираетизменения (старые иновые значения)
SOURCE PUBLISHER SUBSCRIBER
Inserted
Deleted
Сценарий применения CDC Subscriber расширил окно подписки
SOURCE PUBLISHER SUBSCRIBER
После расширенияпредставление подписчика
показывает текущиеизмененияDeleted
Updated
Inserted
Updated old
Updated new
Inserted
Deleted
Updated old
Updated new
Inserted
Deleted
Сценарий применения CDC Добавили еще изменений
SOURCE PUBLISHER SUBSCRIBER
Подписчик видитснимок измененных
данных
More changes More changes
Deleted
Updated
Inserted
Updated old
Updated new
Inserted
Deleted
Updated old
Updated new
Inserted
Deleted
Сценарий применения CDC «Прочитали» измененные данные
SOURCE PUBLISHER SUBSCRIBER
More changes More changes
ETL
Deleted
Updated
Inserted
Updated old
Updated new
Inserted
Deleted
Updated old
Updated new
Inserted
Deleted
Сценарий применения CDC
Подписчик очищает окно подписки
SOURCE PUBLISHER SUBSCRIBER
More changes More changes
Ничего
не показывает
SUB_VIEW
Deleted
Updated
Inserted
Updated old
Updated new
Inserted
Deleted
Сценарий применения CDC Subscriber расширил окно подписки снова
SOURCE PUBLISHER SUBSCRIBER
More changes More changes
Появляются новыеизменения
More changes
Deleted
Updated
Inserted
Updated old
Updated new
Inserted
Deleted
Сценарий применения CDC Очищаются измененные данные
SOURCE PUBLISHER SUBSCRIBER
More changes More changes
Прошлые изменениядля которых уже нет
подписчиковудаляются
Автоматическийджоб создаетсяпри реализации
CDC
More changes
Deleted
Updated
Inserted
Synchronous CDC
• Реализован с помощью триггеров
• Запись изменений – часть транзакции
• Значительная дополнительная нагрузка в транзакции
• Изменения фиксируются (commit) как часть транзакции
• Нулевая задержка
• Опасайтесь direct path загрузок (триггеры отключаются)
• Изменения собираются локально в базе-источнике
• Работает для Standard Edition
Asynchronous Autolog Online
• Используем redo log доставку для передачи журналов
• Как в standby базе данных
• Standby logs
• Использует Streams для сбора и примененияизменений
• Короткая задержка между транзакцией и ее сбором
• Удаленный журнал пишет изменения как часть транзакции
• Удаленный журнал может писаться асинхронно
• Влияние на транзакции
• Минимальное, если удаленный журнал пишется асинхронно
• Зависит от скорости сети, когда пишется асинхронно
Asynchronous Autolog Archive
• Используем redo log доставку для передачи журналов
• Same as standby database
• Standby logs
• Использует Streams для сбора и примененияизменений
• Возможна задержка между временем транзакции исбором измененных данных
• Журнал передается после переключения
• Минимальное влияние на транзакции
• Только на supplemental logging
Asynchronous Hotlog CDC
• Использует redo log для сбора изменений
• Отдельный процесс для сбора изменений из журналов
• Минимальное влияние на транзакции
• Только на supplemental logging
• Использует Streams для сбора и примененияизменений
• Небольшая задержка между транзакцией и сборомизменений (обычно максимум несколько секунд)
• Изменения собираются на базе-источнике
Asynchronous Distributed Hotlog CDC
• Процесс сбор изменений разделен
• Сбор изменений происходит на базе-источнике
• Изменения передаются на промежуточную (stage) базу
• Изменения применяются к таблице изменений напромежуточной базе
• Если версия промежуточная базы =>10.2, то вкачестве источника могут быть базы с версией9.2.0.6 и выше
• Поддерживаются разные операционные системыдля базы источника и промежуточной базы
• Минимальное влияние на транзакции
Сравнение режимов CDC
НетНетДаN/AN/AПоддержка разных версий
операционной системы
НетНетДаN/AN/AПоддержка разных версий
НетНетНетДаДаЛокальная таблица изменений
Redo transport
after log switch
Redo
transportStreamsN/AN/AМеханизм переноса
НетНетНетНетДаПостроена на триггерах
НетНетДаДаДаЛокальный сбор изменений
Возможно
высокая
Минимальная
autolog
archive
Задержка между транзакцией
и сбором изменений
Влияние на транзакции
Критерий
Нулевая
Высокая
sync
Низкая
Низкая
async
hot
НизкаяНизкая
НизкаяНизкая
autolog
online
asynch
dist hot
Oracle Warehouse BuilderWhat is it?
• Graphical user interface to
• Design data warehouse structures
• Define data loads
• Warehouse Builder will then
• Generate code to create database objects
• Generate data load scripts that utilize Oracle Database functionality
• Provide metadata access for easy manageability
• Provide the monitoring infrastructure to monitor ETL
CDC With OWB
• Initial configuration and setup
• Manual
• Daily use and incremental ETL
• Warehouse Builder
Define Process Flow Sequence
• Extend subscription window – load data for table(s) –upon success, purge window
Additional Steps
• Define schedule
• How frequently do you want to load
• Deploy database objects
• Target table(s)
• Data load mapping(s)
• Process flow(s)
• Schedule(s)
• Execute initial load once
• Activate schedule to load incrementally
• Monitor
More Information
• Chapter 16 in Oracle Database 10g Data Warehousing Guide
• Asynchronous Change Data Capture Cookbookhttp://www.oracle.com/technology/products/bi/db/10g/pdf/twp_cdc_cookbook_0206.pdf
• Asynchronous Autolog CDC Cookbookhttp://www.oracle.com/technology/products/bi/db/10g/pdf/twp_autolog_cdc_cookbook_0107.pdf
• Feature pagehttp://dw.us.oracle.com/pls/htmldb/f?p=174:58
• Using asynchronous distributed hotlog CDC with Oracle Warehouse Builderhttp://www.rittman.net/2006/04/14/asynchronous-hotlog-distributed-change-data-capture-and-owb-paris/
<Insert Picture Here>
Summary
• Overview
• Detail
• Comparing CDC modes
• CDC with Oracle Warehouse Builder
• More information
• Q&A