Использование 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 - п