Как уже упоминалось ранее, не все изменения выбираются из журналов БД, не все изменения притекают в конкретные узлы и не все изменения применяются к конкретной БД. Фильтрация изменений реализуется за счет того, что подписка на изменения основана на правилах. Правила регламентируют, какую информацию надо захватывать, транспортировать, применять. Причем эти правила используют содержимое элемента потока, т е мы можем указать, что в конкретный узел попадают только изменения для конкретных объектов. Кроме того, изменение, например, значения поля “Страна” в записи с “UK” на “Russia” приведет к тому, что эти изменения потекут и будут применены не в Англии, а в российских узлах.
Машина правил существует в сервере Oracle независимо от Oracle Streams. Пользовательские приложения, так же как Oracle Streams, могут использовать ее, передавая ей оцениваемую строку и имя набора правил и получая ответ (истина/ложь). Правила описываются пользователем как обычное условие, напоминающее предикат SQL выражения WHERE и являются объектами БД. Из отдельных правил набираются наборы правил , т н RULE SETS, которые машина правил и применяет для оценки. Кстати с помощью правил можно не только отфильтровать изменения, относящиеся к отдельным объектам БД или схемам, DDL или DML операции, но, также, наложить условие на изменения таблицы, применяемые в конкретном узле, порождая, таким образом, разные подмножества одной таблицы в разных БД.
Конфигурирование маршрута потока независимо от конфигурирования Apply процессов конкретных узлов. Благодаря этому и системе правил мы можем управлять движением потока. Например, поток может течь через некоторые узлы не меняя их БД. Это позволяет уменьшить нагрузку на сеть, т к все изменения не текут от исходной БД во все целевые БД, создавая много “широких” потоков. Вместо этого мы имеем широкий поток, который затем расщепляется на несколько более мелких. Например, если в Нью- Йорке в таблицу записываются данные, часть из которых должна быть отреплицирована в БД Англии, часть в БД Италии, а часть в БД Франции, то мы можем направить весь поток из Америки через океан в Европу (в Лондон). Там изменения для Англии будут извлечены и обработаны, а поток расщепится и часть изменений пойдет в Италию, а часть – во Францию (см. рис. 3).
Рис. 3. Расщепление потока
Поскольку Apply процесс БД Oracle может через Database Link и шлюз вносить изменения в чужие БД или передавать сообщения в чужие системы управления сообщениями, а приложения, работающие с чужими СУБД и системами сообщений могут помещать LCRы и сообщения в поток Oracle, механизм Oracle Streams удобно использовать для обмена информацией и интеграции разнородных приложений построенных как на платформе Oracle, так и на платформах других компаний. Шлюз Message Gateway позволяет работать с сообщениями потока Oracle Streams из пакета MQ Series.
Установка, конфигурирование и поддержка Oracle Streams в различных режимах может осуществляться через дружелюбный графический интерфейс штатного инструмента администратора Oracle – Oracle Enterprise Manager.