Использование Oracle Streams для репликации
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
;
4.1 PL/SQL API
Позволяет использовать все процедуры, находящиеся в перечисленных ранее пакетах, за счет чего обеспечивает самый гибкий способ настройки.
4.2 Упрощенное PL/SQL API
Начиная с 11-ой версии СУБД Oracle поддерживает специальные макрокоманды для настройки репликации. Теперь нет необходимости вручную создавать очереди, процессы сбора, передачи и применения. Достаточно запустить одну процедуру, которая сгенерирует скрипт и запустит его. В случае неудачи этот скрипт выдаст ошибку и позволит в будущем продолжить выполнение, либо откатить изменения.
Для упрощения конфигурации Oracle ввел в базе данных ряд простых процедур, осуществляющих детальную конфигурацию. Это такие процедуры как MAINTAIN_GLOBAL, MAINTAIN_SCHEMAS, MAINTAIN_SIMPLE_TTS, MAINTAIN_TTS, MAINTAIN_TABLES(рис.5 )
Рис.5. - Процедуры упрощенного PL/SQL API
Возможные параметры при использовании данных процедур:
репликация пользователь база данный
DBMS_STREAMS_ADM.MAINTAIN_GLOBAL(_directory_object IN VARCHAR2,_directory_object IN VARCHAR2,_database IN VARCHAR2,_database IN VARCHAR2,_actions IN BOOLEAN DEFAULT TRUE,_name IN VARCHAR2 DEFAULT NULL,_directory_object IN VARCHAR2 DEFAULT NULL,_file_name IN VARCHAR2 DEFAULT NULL,_name IN VARCHAR2 DEFAULT NULL,_queue_table IN VARCHAR2 DEFAULT NULL,_queue_name IN VARCHAR2 DEFAULT NULL,_queue_user IN VARCHAR2 DEFAULT NULL,_name IN VARCHAR2 DEFAULT NULL,_name IN VARCHAR2 DEFAULT NULL,_queue_table IN VARCHAR2 DEFAULT NULL,_queue_name IN VARCHAR2 DEFAULT NULL,_queue_user IN VARCHAR2 DEFAULT NULL,_file IN VARCHAR2 DEFAULT NULL,_directional IN BOOLEAN DEFAULT FALSE,_ddl IN BOOLEAN DEFAULT FALSE,IN INTEGER DEFAULT_STREAMS_ADM.INSTANTIATION_FULL);_STREAMS_ADM.MAINTAIN_TTS(_names IN DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET,_directory_object IN VARCHAR2,_directory_object IN VARCHAR2,_database IN VARCHAR2,_database IN VARCHAR2,_actions IN BOOLEAN DEFAULT TRUE,_name IN VARCHAR2 DEFAULT NULL,_directory_object IN VARCHAR2 DEFAULT NULL,_file_name IN VARCHAR2 DEFAULT NULL,_name IN VARCHAR2 DEFAULT NULL,_queue_table IN VARCHAR2 DEFAULT NULL,_queue_name IN VARCHAR2 DEFAULT NULL,_queue_user IN VARCHAR2 DEFAULT NULL,_name IN VARCHAR2 DEFAULT NULL,_name IN VARCHAR2 DEFAULT NULL,_queue_table IN VARCHAR2 DEFAULT NULL,_queue_name IN VARCHAR2 DEFAULT NULL,_queue_user IN VARCHAR2 DEFAULT NULL,_file IN VARCHAR2 DEFAULT NULL,_directional IN BOOLEAN DEFAULT FALSE,_ddl IN BOOLEAN DEFAULT FALSE);_STREAMS_ADM.MAINTAIN_SIMPLE_TTS(_name IN VARCHAR2,_directory_object IN VARCHAR2,_directory_object IN VARCHAR2,_database IN VARCHAR2,_database IN VARCHAR2,_actions IN BOOLEAN DEFAULT TRUE,_name IN VARCHAR2 DEFAULT NULL,_directory_object IN VARCHAR2 DEFAULT NULL,_directional IN BOOLEAN DEFAULT FALSE);
DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS(_names IN VARCHAR2,_directory_object IN VARCHAR2,_directory_object IN VARCHAR2,_database IN VARCHAR2,_database IN VARCHAR2,_actions IN BOOLEAN DEFAULT TRUE,_name IN VARCHAR2 DEFAULT NULL,_directory_object IN VARCHAR2 DEFAULT NULL,_file_name IN VARCHAR2 DEFAULT NULL,_name IN VARCHAR2 DEFAULT NULL,_queue_table IN VARCHAR2 DEFAULT NULL,_queue_name IN VARCHAR2 DEFAULT NULL,_queue_user IN VARCHAR2 DEFAULT NULL,_name IN VARCHAR2 DEFAULT NULL,_name IN VARCHAR2 DEFAULT NULL,_queue_table IN VARCHAR2 DEFAULT NULL,_queue_name IN VARCHAR2 DEFAULT NULL,_queue_user IN VARCHAR2 DEFAULT NULL,_file IN VARCHAR2 DEFAULT NULL,_directional IN BOOLEAN DEFAULT FALSE,_ddl IN BOOLEAN DEFAULT FALSE,IN INTEGER DEFAULT_STREAMS_ADM.INSTANTIATION_SCHEMA);
DBMS_STREAMS_ADM.MAINTAIN_TABLES(_names IN VARCHAR2,_directory_object IN VARCHAR2,_directory_object IN VARCHAR2,_database IN VARCHAR2,_database IN VARCHAR2,_actions IN BOOLEAN DEFAULT TRUE,_name IN VARCHAR2 DEFAULT NULL,_directory_object IN VARCHAR2 DEFAULT NULL,_file_name IN VARCHAR2 DEFAULT NULL,_name IN VARCHAR2 DEFAULT NULL,_queue_table IN VARCHAR2 DEFAULT NULL,_queue_name IN VARCHAR2 DEFAULT NULL,_queue_user IN VARCHAR2 DEFAULT NULL,_name IN VARCHAR2 DEFAULT NULL,_name IN VARCHAR2 DEFAULT NULL,_queue_table IN VARCHAR2 DEFAULT NULL,_queue_name IN VARCHAR2 DEFAULT NULL,_queue_user IN VARCHAR2 DEFAULT NULL,_file IN VARCHAR2 DEFAULT NULL,_directional IN BOOLEAN DEFAULT FALSE,_ddl IN BOOLEAN DEFAULT FALSE,IN INTEGER DEFAULT_STREAMS_ADM.INSTANTIATION_TABLE);
4.3 EM интерфейс
интерфейс позволяет осуществить репликацию при помощи двух помощников (рис.6 ). Для репликации целого табличного пространства необходимо выбрать помощник "Streams Tablespace Replication Wizard". Для репликации отдельных таблиц, схем и всей базы данных необходимо выбрать "Streams Global, Schema, Table and Subset Replication Wizard".
Рис.6. EM интерфейс позволяет осуществить репликацию при помощи двух помощников
5.Пример использования PL/SQL API для настройки репликации
Репликация таблицы (действия на исходной базе данных)
Создадим таблицу, которую в дальнейшем будем реплицировать.
Установим для нее дополнительное журналирование баз данных.logging - это процесс записи дополнительной информации в журнал во время выполнения операций изменения (например, изменения строки).
Рис.7. - Создание таблицы для репликации и дополнительное журналирование.
Создадим очередь для передачи событий в базе данных источнике.
В БД-источнике создадим процесс захвата изменений(capture), одновременно указав правила отбора изменений в очередь, а также создадим процесс переноса изменений(propagation)(рис. 8).
Рис.8. - Процесс захвата изменений(capture), процесс переноса изменений(propagation).
Теперь для правильного воспроизведения изменений в принимающей БД требуется передать ей в качестве "точки отсчета" номер изменений в БД-источнике.
Теперь необходимо запустить процесс захвата изменений(рис.9).
Рис.9. - Процесс захвата изменений
Репликация таблицы (действия на целевой базе данных)
В целевой базе данных создадим процесс применения изменений(apply), одновременно указав правила отбора изменений в очередь.
Для удобства отключим реакцию на ошибки, иначе процесс применения изменений может самопроизвольно прекращаться.
Теперь необходимо запустить процесс применения изменений.
Рис.10. - Действия на целевой базе данных
6.Пример использования упрощенного PL/SQL API
Процедуры упрощенного PL/SQL API используют директории для записей файлов дампа и хранения временных файлов, используемых в репликации, которые необходимо заранее создать и дать на них права администратору Streams(рис.11).
Рис.11. - Создание директорий и права на чтение и запись для администратора Streams.
.1 Репликация схемы пользователя при помощи MAINTAIN_SCHEMAS
Рис.12. - Репликация схемы пользователя при помощи MAINTAIN_SCHEMAS
schema_names - имя реплицируемой схемы
source_directory_object - имя директории на БД источнике_directory_object - имя директории на целевой БД_database - имя БД источника_database - имя целевой БД_actions - п