Использование 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 - процесс сбора данных на источнике

.Propagation- процесс передачи данных от источника к целевой базе данных

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.

·Выдать привилегии администратор STREAMS с помощью DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE:


Рис.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

4.http://www.citforum.ru/database/oracle/streams


Государственное учреждение образования "Белорусский государственный технологический университет" Факультет издательского дела и полиграфии Ка

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ