Использование GoldenGate для live reporting
19.10.2009 от aryndin99UPDATE: Добавил строку с ADD TRANDATA для Capture
Это самое простое для чего мы можем использовать GoldenGate. В этом случае предполагается, что часть таблиц реплицируется на другой сервер и к этой реплике открывается доступ на чтение. Что характерно: доступ только на чтение, репликация в одну сторону.
Такую конфигурацию по сути можно достичь несколькими способами:
Каждый из этих способов обладает своими плюсами и минусами. Например, Oracle Streams бесплатный, но более медленный; Active Data Guard самый быстрый, но может дублировать только всю базу целиком.
Однако, до сих пор захват и репликация изменений (CDC) в Oracle делалась только средствами самой базы данных, что не всегда является оптимальным. Это также не давало возможности реализовывать репликацию с другими базами данных. GoldenGate меняет эту традицию.
В этой статье я покажу как настроить репликацию в простейшем варианте
Исталляция 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;
- Вам также могут быть интересны следующие статьи:
- Первоначальная загрузка данных в GoldenGate
- Репликация DDL в GoldenGate
- Использование GoldenGate для выгрузки данных во Flat File
- Выпущен Oracle GoldenGate 11g R1
- Интеграция Oracle BI в порталы (Go URL или GOURL)
Рубрики: Data Warehousing, GoldenGate | Комментарии (3) »

06.11.2009 в 20:42
[...] пространственных веб-сервис в OC4JИспользование GoldenGate для live reportingОбзор продуктов GoldenGaterlwrap – история и [...]
13.02.2010 в 13:34
[...] См. статью Использование GoldenGate для live reporting. [...]
18.08.2010 в 15:24
[...] настройка делается также как для Linux. Вам также могут быть интересны следующие статьи: [...]