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

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

огут быть отформатированы как 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