Disclaimer

Данный блог является моей личной точкой зрения и не обязательно отражает точку зрения Oracle.

The views expressed on this blog are my own and do not necessarily reflect the views of Oracle

Поиск

Подписка

Использование GoldenGate для live reporting

19.10.2009 от aryndin99

UPDATE: Добавил строку с ADD TRANDATA для Capture

Это самое простое для чего мы можем использовать GoldenGate. В этом случае предполагается, что часть таблиц реплицируется на другой сервер и к этой реплике открывается доступ на чтение. Что характерно: доступ только на чтение, репликация в одну сторону.

Такую конфигурацию по сути можно достичь несколькими способами:

  1. GoldenGate
  2. Oracle Streams
  3. Oracle Logical Standby
  4. Active Data Guard

Каждый из этих способов обладает своими плюсами и минусами. Например, Oracle Streams бесплатный, но более медленный; Active Data Guard самый быстрый, но может дублировать только всю базу целиком.

Однако, до сих пор захват и репликация изменений (CDC) в Oracle делалась только средствами самой базы данных, что не всегда является оптимальным. Это также не давало возможности реализовывать репликацию с другими базами данных. GoldenGate меняет эту традицию.

В этой статье я покажу как настроить репликацию в простейшем варианте

image

image

Исталляция GoldenGate

Скачаем дистрибутив GoldenGate для нужной платформы. Я буду расписывать все для платформы Linux. Дистрибутие GoldenGate на edelivery.oracle.com находится в дистрибутивах Fusion Middleware:

Management Pack for Oracle GoldenGate Пакет управления для GoldenGate
Oracle GoldenGate on Oracle
Oracle GoldenGate on Sybase
Oracle GoldenGate on MySQL
Непосредственное агенты, осуществляющие сбор изменений и применение на целевых базах данных
Oracle GoldenGate Veridata Специализированный инструмент для сравнения двух баз данных

Мы будем реплицировать данные между двумя базами данных, поэтому качаем Oracle GoldenGate on Oracle. Внутри для каждой операционной системы есть свой пакет.

Распаковываем дистрибутив на сервере.

tar xvf ggs_redhatAS50_x64_ora11g_64bit_v10.4.0.19_002.tar

Включим путь, в который распаковали дистрибутив (файл .bash_profile):

PATH=$PATH:$HOME/bin:/u01/app/oracle/product/GoldenGate/10.4
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/u01/app/oracle/product/GoldenGate/10.4

Кроме того, имеет смысл проинсталлировать rlwrap.

Запуск GoldenGate Manager Process

Менеджер процессов – это управляющий процесс GoldenGate. Он должен быть запущен на всех серверах, на которых работает GoldenGate прежде чем будут запущены процессы Extract и Replicat. Менеджер выполняет следующие функции:

  • Мониторит и перезапускает остальные процессы GoldenGate
  • Выполняем отчеты, следящие за пороговыми значениями (например, когда снижается пропускная способность или увеличивается задержка синхронизации)
  • Отслеживает trail файлы и журналы
  • Выделяет дисковое пространство
  • Отчитывается об ошибках и событиях
  • Получает и маршрутизирует запросы от пользовательского интерфейса

Запустим консоль управления GoldenGate

cd /u01/app/oracle/product/GoldenGate/10.4/
ggsci

При первом запуске необходимо создать структуру катальогов GoldenGate. Для этого выполним команду:

CREATE SUBDIRS

После создания структуры каталогов запустим редактор параметров менеджера процессов.

EDIT PARAMS MGR

Зададим необходимы параметры в виде (ПАРАМЕТР=ЗНАЧЕНИЕ). Список параметров ниже

Название параметр Обязательный Описание
PORT

+

Определяет фиксированный порт, на котором будет слушать менеджер. Именно по этому порту будет происходить передача команд в GoldenGate. Остальные порты будут выделяться динамически (Если сравнивать с базой данных, то это по сути порт LISTENER). Документация рекомендует значение 7809
DYNAMICPORTLIST

Указывает какие порты могут быть использованы GoldenGate. Например:
DYNAMICPORTLIST 7810-7910
AUTOSTART,
AUTORESTART

Указывает будет ли осуществляться автоматический запуск процессов репликации. Например, если мы хотим, чтобы и EXTRACT, и REPLICAT процессы запускались автоматически менеджером процессов:
AUTOSTART ER *
PURGEOLDEXTRACTS Указывает, что должны удаляться старые trail файлы.
USERID <user id>, PASSWORD <password> Если будет включенная поддержка DDL в GoldenGate, то необходимо также указать данные для подключения к базе данных
PURGEOLDEXTRACTS *

У меня файл параметров для менеджера процессов выглядит следующие образом:

PORT 7809
DYNAMICPORTLIST 7810-7910
AUTOSTART ER *
PURGEOLDEXTRACTS *

После настройки параметров запустим менеджер процессов:

START MANAGER

После запуска можно проверить, что менеджер запустился командой

STATUS MGR

Если менеджер не запустился, то можно посмотреть его журнал:

VIEW REPORT MGR

Настраиваем процесс сбора изменений

На сервере №1 заходим в SQLPLUS и выполняем команды для включения дополнительного журналирования в Oracle

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

На сервере №1 заходим в GGSCI запускаем команду настройки процесса извлечения изменений(см. рисунок выше):

ADD EXTRACT orcl1_e, TRANLOG, BEGIN NOW
ADD RMTTRAIL /u01/app/oracle/product/GoldenGate/10.4/dirdat/tr, EXTRACT orcl1_e

Отредактируем параметры процесса EXTRACT:

EDIT PARAMS orcl1_e

Название параметр Обязательный Описание
EXTRACT

+

Название группы (по сути имя процесса, по которому мы в дальнейшем будем к нему обращаться)
EXTRACT orcl1_e
USERID <user>, PASSWORD <pw>

+

Указываем имя пользователя и пароль для подключения к исходной базе данных
USERID system@orcl, PASSWORD oracle
RMTHOST <target>, MGRPORT <portnumber>

+

Данные для подключения к удаленному менеджеру процессов
RMTHOST 192.168.92.158, MGRPORT 7809
RMTTRAIL <remote_trail>

+

Указываем название trail на удаленном сервер
RMTTRAIL /u01/app/oracle/product/GoldenGate/10.4/dirdat/tr
TABLE <owner>.<table>;

+

Список таблиц для которых будет осуществлять извлечение изменений
TABLE test.employees

Итого файл параметров у меня будет выглядеть следующим образом (обратите внимание на точку с запятой в конце файла параметров)

EXTRACT orcl1_e
USERID system@orcl, PASSWORD oracle
RMTHOST 192.168.92.158, MGRPORT 7809
RMTTRAIL /u01/app/oracle/product/GoldenGate/10.4/dirdat/tr
TABLE test.employees;

Кроме того, необходимо включить журналирование для таблиц, которые мы будем реплицировать. Это можно сделать вручную, а можно позволить управлять процессом GoldenGate. Я выбрал второй вариант:

DBLOGIN USERID system@localhost:1521/orcl PASSWORD oracle
ADD TRANDATA test.employees

Настраиваем процесс применения изменений

На сервере №2 заходим в GGSCI и выполняем следующие команды:

Создадим таблицу для CheckPoint (необязательно, но рекомендуется). В эту таблицу будет записываться последняя считанная позиция из trail-файла. После некорректного завершения работы процесса повторное чтение будет начинаться с последнего checkpoint.

DBLOGIN userid system@localhost:1521/orcl,password oracle
ADD CHECKPOINTTABLE test.employees_ct

Создадим процесс репликации

ADD REPLICAT rep, EXTTRAIL /u01/app/oracle/product/GoldenGate/10.4/dirdat/tr, BEGIN NOW,CHECKPOINTTABLE test.employees_ct

Отредактируем параметры процесса репликации.

Название параметр Обязательный Описание
REPLICAT

+

Название группы (по сути имя процесса, по которому мы в дальнейшем будем к нему обращаться)
REPLICAT rep
USERID <user>, PASSWORD <pw>

+

Указываем имя пользователя и пароль для подключения к исходной базе данных
USERID system@orcl, PASSWORD oracle
SOURCEDEFS <full_pathname> | ASSUMETARGETDEFS

+

Указываем будут ли исходные и целевые объекты идентичны
ASSUMETARGETDEFS
MAP <owner>.<table>, TARGET <owner>.<table>

+

Указываем соответствие таблиц из одной базы данных в другую

У меня файл параметров процесса применения выглядит следующим образом(обратите внимание на точку с запятой в конце файла параметров):

REPLICAT rep
USERID system@orcl2, PASSWORD oracle
ASSUMETARGETDEFS
MAP test.employees, TARGET test.employees;

Запускаем процессы

На сервере №1 запускаем и проверяем, что процесс запустился

START EXTRACT orcl1_e
VIEW REPORT orcl1_e

На сервере №2 запускаем процесс применения изменений

START REPLICAT rep
VIEW REPORT rep

Если в отчетах процессов будут ошибки, то необходимо устранить их причину и перезапустить процессы.

Создаем таблицу EMPLOYEES для репликации

connect system/oracle
create table test.EMPLOYEES  as select * from hr.EMPLOYEES;
ALTER TABLE test.EMPLOYEES  ADD PRIMARY KEY (employee_id);

insert into employees select * from employees;

Рубрики: Data Warehousing, GoldenGate | Комментарии (3) »

Комментарии (3)

  1. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Первоначальная загрузка данных в GoldenGate пишет:

    [...] пространственных веб-сервис в OC4JИспользование GoldenGate для live reportingОбзор продуктов GoldenGaterlwrap – история и [...]

  2. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Использование GoldenGate Director для управления интеграцией пишет:

    [...] См.  статью  Использование GoldenGate для live reporting. [...]

  3. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Запускаем GoldenGate как Windows-сервис пишет:

    [...] настройка делается также как для Linux. Вам также могут быть интересны следующие статьи: [...]

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.