Использование Oracle Streams для репликации

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,79 Мб
  • Опубликовано:
    2012-07-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Использование Oracle Streams для репликации

Государственное учреждение образования

"Белорусский государственный технологический университет"

Факультет издательского дела и полиграфии

Кафедра информационных систем и технологий







Пояснительная записка

по курсовой работе:

"Использование Oracle Streams для репликации"


Выполнила:

Нешик Д.А.

курс 3 группа 9

проверил:

доц. Смелов В.В




Минск 2011

Оглавление

Введение

1.    Возможности репликации в СУБД Oracle

2.    Основные компоненты Oracle Streams

3.    Основные шаги по настройке репликации

3.1 Настройка баз данных(Startup open)

3.2 Настроить tnsnames.ora (на обоих серверах)

3.3 Табличное пространство и пользователь Streams

3.4 Dblink (между исходной и целевой базами данных)

4.    Методы настройки репликации при помощи Oracle Streams

4.1 PL/SQL API

4.2 Упрощенное PL/SQL API

4.3 EM интерфейс

5.    Пример использования PL/SQL API для настройки репликации

6.    Пример использования упрощенного PL/SQL API

6.1 Репликация схемы пользователя при помощи MAINTAIN_SCHEMAS

6.2 Репликация таблиц при помощи MAINTAIN_TABLES

Заключение

Библиографический список

 


Введение

Streams - это средство СУБД, позволяющее переносить данные, транзакции и события в потоке данных внутри одной или между базами данных. Это более поздняя, чем "обычная" репликация (репликация на основе материализованных представлений) ), модель организации непрерывного переноса данных как внутри, так и между базами данных.Streams появились в Oracle версии 9, а в версии 10 получили свое развитие в возможностях и в организации.

Oracle Streams предоставляет набор элементов, которые позволяют пользователю управлять:

·              тем какую информацию помещать в поток

·              как должен "течь" поток

·              как он должен маршрутизироваться с одно сервера на другой

·              что должно происходить, когда поток приходит на сервер

·              где он должен прерываться.

Oracle Streams применяется в качестве решения для различных областей :

·              Репликация

·              Очереди сообщений

·              Загрузка хранилищ данных

Технически потоки Oracle Streams опираются на созданный независимо и ранее аппарат организации очередей передачи сообщений, известный под названием Oracle Advanced Queuing ,а также используют Dblink для передачи информации между исходной и целевой базами данных.

В отличие от "обычной" репликации Oracle Streams не требует заведения особых структур в БД (журналов таблиц, materialized views). Репликация в Oracle Streams основана на обработке информации из журнала БД.

1.      Возможности репликации в СУБД Oracle


Существует два вида репликации в СУБД Oracle:

·        Репликация на основе Oracle Streams

·        Репликация на основе материализованных представлений

Репликация на основе Oracle Streams обладает следующими преимуществами:

·              Работает быстрее (данные находятся в памяти: Streams pool)

·              Репликация на уровне отдельных таблиц, схем, табличных пространств

·              Репликация между разными версиями базы данных и даже между разными платформами

·              Возможность фильтрации данных на основе правил

·              Поддерживает как одностороннюю, так и двухстороннюю репликацию

·              Поддерживает синхронную (начиная с версии 11g) или асинхронную репликацию

Репликации доступна во всех редакциях, однако для редакций Standard Edition One и Standard Edition существуют ограничения:

·              Не используется Buffered queue

·              Не поддерживается Capture from redo

Не поддерживается Asynchronous change data capture

Существует два вида репликации, основанных на материализованных представлениях: Basic и Advanced.

Особенности Basic репликации:

·              Доступна во всех редакциях Oracle

·              Реплицируются только данные

·              Репликация производится только в одну сторону

·              В исходной базе данных обычные таблицы

·              В базе, в которую реплицируют, находятся не таблицы, а доступные только на чтение Snapshots (Read Only Materialized Views)

·              Работает на основе триггеров

·              После 16 неудачных попыток передачи данных подряд процесс останавливается и требует вручную перезапустить JOBрепликация поддерживает различные конфигурации: репликация в обе стороны, репликация со многими первичными серверами и т. д. Она позволяет реплицировать не только данные, но и другие объекты базы данных. Доступна только в Enterprise Edition.репликация, начиная с Enterprise Edition 11g, позволяет передавать изменение структуры реплицируемых объектов в автоматическом режиме без остановки БД.

2.      Основные компоненты Oracle Streams


Три основных компонента Oracle Streams:

1.      Capture - процесс сбора данных на источнике

3.      Apply - процесс применения изменений в целевой базе данных

Capture(фоновый процесс)

Сбор осуществляется двумя способами:

·              Неявный сбор. Серверный процесс сбора собирает DML и DDL события в исходной базе данных непосредственно из журналов (redo log), либо с помощью горячего "раскапывания" (hot mining), либо, при необходимости, из архивных журналов (archive log). После извлечения данных процесс сбора форматирует их в Logical Change Record (LCR) и помещает в область распространения для дальнейшей обработки. Процесс сбора может фильтровать LCRы по заданным правилам. Таким образом буду собираться изменения только заданных объектов.

·              Явный сбор. Позволяет приложению явным образом сгенерировать сообщение и поместить его в область хранения. Эти сообщения могут быть отформатированы как LCR (дает возможность автоматически применить их процессом применения (apply process), либо как пользовательские сообщения, предназначенные для потребления другим пользовательским приложением.

Capture:

. Работает на стороне исходной БД

. Работают на основе правил;

. Просматривает средствами LogMiner журналы повтора и архив;

.Выбирает из журналов изменения в исходной  БД ;

. Формирует логическую запись об изменении, Logical Change Record (LCR);

. Помещает LCR в качестве события в очередь Streams Advanced Queuing (SAQ).(фоновый процесс)

1.      Находится на стороне исходной БД

2.      Работает на основе правил

.        Выбирает события из очереди SAQ, сформированной Capture

.        Помещает их в очереди на целевой БД через Oracle Net.

Apply (фоновый процесс)

1.      Находится на стороне целевой БД

2.      Работает на основе правил

.        Выбирает изменения(LCR) из очереди на целевой базе данных.

.        Применяет изменения на целевой БД.

Правила(rules)

. Capture: определяют перечень данных, которые собираются capture и очередь для записи изменений(LCR) в исходной базе данных.

.Propagation: определяет очередь в исходной базе данных с изменениями и очередь в целевой базе данных для применения изменений

.Apply: определяют входную очередь и перечень объектов, подлежащих изменению с изменениями(LCR)

Технология Oracle Streams

Рис.1. - Технология Oracle Streams

3.      Основные шаги по настройке репликации


Для работы с репликацией необходимо осуществить предварительные настройки:

•        Настроить параметры баз данных

•        Настроить tnsnames.ora

•        Создать табличное пространство и пользователя Streams.

•        Назначить права администратора пользователю Streams

•        Создать dblink (между исходной и целевой базами данных)

3.1 Настройка баз данных(Startup open)


•        COMPATIBLE (минимум 9.2.0): для использование Streams, Compatible должен быть минимум 9.2.0.

•        GLOBAL_NAMES (TRUE): параметр должен быть установлен в TRUE на всех базах. После включения Streams этот параметр изменяться нельзя.

•        GLOBAL_NAME используется для идентификации базы, в которой произошли изменения. Все сообщения в репликации будут содержать эти имена.

•        JOB_QUEUE_PROCESSES (минимум 2): этот параметр указывает количество процессов, которые может задействовать DBMS_JOB.

•        AQ_TM_PROCESSES (лучше не прописывать в файле параметров вообще): количество процессов для мониторинга очередей.

o   Сбросить в значение по-умолчанию можно командой alter system reset AQ_TM_PROCESSES scope=spfile;

•        LOGMNR_MAX_PERSISTENT_SESSIONS(минимум 1, должен быть равен или больше количества процессов сбора; для 11g не требуется): количество постоянных сессий, используемых LOGMINER.

•        LOG_PARALLELISM(должен быть 1 на всех базах, осуществляющих сбор изменений): устарел, начиная с версии 10.1.

•        PARALLEL_MAX_SERVERS(минимум 2): каждый процесс сбора и применений изменений может использовать несколько параллельных серверных процессов. Процесс применения по-умолчанию требует 2 параллельных серверных процесса.

•        SHARED_POOL_SIZE (минимум 100 Мб): каждый процесс сбора требует 10 Мб в shared pool, но Streams ограниченые использования 10% shared pool.

•        JAVA_POOL_SIZE (минимум 50 Мб, лучше 100): по опыту необходимо также выделить минимум 50 мб под JAVA VM.

•        OPEN_LINKS (минимум 4): задает максимальное количество одновременно открытых в одной сессии соединений с удаленной базой.

•        Базы данных должны быть в (ARCHIVELOG).

В данном случае было необходимо произвести такие настройки:

•        alter system set GLOBAL_NAMES=TRUE scope=both;

•        alter system set JOB_QUEUE_PROCESSES=8 scope=both;

•        alter system set LOGMNR_MAX_PERSISTENT_SESSIONS=8 scope=spfile;

•        alter system set PARALLEL_MAX_SERVERS=8 scope=both;

•        alter system set SHARED_POOL_SIZE=200m scope=both;

•        alter system set STREAMS_POOL_SIZE=200m scope=both;

•        alter system set JAVA_POOL_SIZE=50m scope=both;

•        alter system set OPEN_LINKS=8 scope=spfile;

•        alter system set AQ_TM_PROCESSES=3 scope=both;

На исходной базе данных необходимо перевести базу данных в режим archivelog, для того чтобы сервер Oracle мог сохранять данные файла журнала повторного выполнения, перед тем как файл будет перезаписан. Тогда сервер будет архивировать журналы и данные не будут утеряны.

Для перевода базы данных в режим ARCHIVELOG необходимо:

•        остановить экземпляр Oracle - shutdown immediate;

•        запустить экземпляр Oracle в режиме mount;

•        перевести базу данных в режим ARCHIVELOG

•        открыть базу данных. immediate;

startup mount;database archivelog;database open;

3.2 Настроить tnsnames.ora (на обоих серверах)

.local - исходная база данных

dest.local - целевая база данных

.local = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = src_server)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME =orcl11) )).local = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dest_server)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl22 ))

 

3.3 Табличное пространство и пользователь Streams


·              Создать или использовать существующее табличное пространство

·              Создать пользователя Oracle Streams

·              Выдать пользователю привилегии DBA. Роль DBA необходима, когда пользователь создает или изменяет процессы сбора и применений. Когда пользователь не делает этого - можно забрать роль DBA.


Рис.2. - Табличное пространство и пользователь Streams

3.4 Dblink (между исходной и целевой базами данных)


Необходимо подключиться как администратор Oracle Streams и создать database links


Рис.3. Создание Dblink (между исходной и целевой базами данных)

 


4.      Методы настройки репликации при помощи Oracle Streams


Для настройки репликации применяются следующие методы (рис. 4) :

•        PL/SQL API

•        Упрощенное PL/SQL API (макрокоманды, начинающиеся на MAINTAIN)

•        Enterprise Manager интерфейс (GUI)

Рис.4. Методы для настройки репликации при помощи 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 - применение изменений_file_name - имя файла DUMP

capture_name - имя процесса захвата изменений (capture)

capture_queue_name - имя очереди для capture

capture_queue_user - пользователь, создающий очередь для capture

propagation_name - имя процесса передачи изменений (propagation)_name - имя процесса применения изменений (apply)

apply_queue_name - имя очереди для apply

apply_queue_user - пользователь, создающий очередь для apply

log_file - файл для файла log_directional - двусторонняя репликация,_ddl включение ddl-изменений

6.2 Репликация таблиц при помощи MAINTAIN_TABLES



table_names - имя реплицируемой тадлицы

source_directory_object - имя директории на БД источнике_directory_object - имя директории на целевой БД_database - имя БД источника_database - имя целевой БД_actions - применение изменений_name - имя процесса передачи изменений (propagation)_file - файл для файла log_directional - двусторонняя репликация,_ddl включение ddl-изменений

Заключение


Технология Oracle Streams позволяет настраивать репликацию при помощи нескольких методов, что позволяет выбрать необходимый механизм для конкретного случая в зависимости от сложности задачи.

Oracle Streams начинает устойчиво работать с версии 10.2.0 и продолжает развиваться в следующих версиях.

Методы упрощенного PL/SQL API, появившиеся в Oracle 11g позволяют выполнить всю настройку репликации при помощи одной команды, а также сгенерировать скрипт репликации, который можно изменять при необходимости и запускать отдельными блоками, что существенно упрощает работу с репликацией на основе Oracle Streams.

Репликации при помощи Oracle Streams позволяет использовать практически мгновенную передачу данных, однако и требует существенных затрат оперативной памяти компьютера.

Библиографический список:


1.      Документация Oracle® Database PL/SQL Packages and Types Reference 11g Release 1 (11.1)

Интернет ресурсы:

.        http://www.oraclegis.com/blog/?p=417 - статья про использование репликации при помощи Oracel Streams

.        http://www.citforum.ru/database/oracle/streams_simple - общие сведения о Oracle Streams


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!