среда, 31 июля 2013 г.

Начальная настройка GoldenGate


GoldenGate — настройка процесса

SourceDB (Oracle 10.2) , хост - SourceHost
TargetDB (Oracle 11.2) , хост — TargetHost

В целом процесс настройки заключается в следующем:
  1. установка GoldenGate (GG)
  2. создание пользователя в каждой базе и раздача прав
  3. создание и старт менеджера на каждом GG
  4. создание extract процессов на SourceHost (в данном сценарии используется классический режим)
  • extract для захвата транзакций в локальный трэйл
  • extract (data pump) для передачи захваченных транзакций на удаленный GG
  • extract для первичной инициализации данных
  1. создание replicat процессов на TargetHost
  • replicat для приема транзакций
  • replicat для первичной инициализации данных
  1. запуск системы


На каждом хосте:
создаем каталог GoldenGate (можно любой)
скачиваем туда ogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip
распаковываем

запускаем ./ggsci
GGSCI > CREATE SUBDIRS





На каждой базе создаем пользователя (в данном сценарии я использую одного пользователя для всего, возможны варианты)
CREATE USER DDLGG IDENTIFIED BY DDLGGPWD;
GRANT CONNECT, RESOURCE, DBA TO DDLGG;
grant select any dictionary, select any table to DDLGG;
grant create table to DDLGG;
grant flashback any table to DDLGG;
grant execute on dbms_flashback to DDLGG;
grant execute on utl_file to DDLGG;

и сразу даем ему права для DDL синхронизации
GRANT EXECUTE ON utl_file TO DDLGG;
создаем выделенный тейблспейс  для этой схемы.
от сиса запускаем скрипты
@marker_setup.sql
@ddl_setup.sql
@role_setup.sql
GRANT GGS_GGSUSER_ROLE TO DDLGG
@ddl_enable.sql

Запускаем скрипт для возможности синхронизации последовательностей
sqlplus>@sequence.sql

На SourceHost

GGSCI > EDIT PARAMS ./GLOBALS
GGSCHEMA DDLGG

Настраиваем менеджер
ggsci> EDIT PARAM MGR
PORT 7809
USERID DDLGG, PASSWORD DDLGGPWD
AUTOSTART EXTRACT ext*
AUTORESTART EXTRACT ext*, RETRIES 4, WAITMINUTES 4
STARTUPVALIDATIONDELAY 5
PURGEOLDEXTRACTS /opt/oracle/GoldenGate/dirdat/tt*, USECHECKPOINTS, MINKEEPHOURS 2
ext* — Наши extract процессы, которые будет вытаскивать и передавать транзакционные изменения (ext1, extpump1)
PURGEOLDEXTRACTS — опция очистки трэйл файлов, иначе будут расти

Добавляем extractor для захвата транзакций
добавляем extractor
ADD EXTRACT ext1, TRANLOG, BEGIN NOW
добавляем exttrail — лоакльный файл, куда будут складываться изменния
ADD EXTTRAIL /opt/oracle/GoldenGate/dirdat/lt, EXTRACT ext1
редактируем параметры
EDIT PARAMS ext1

EXTRACT ext1
USERID DDLGG, PASSWORD DDLGGPWD
EXTTRAIL /opt/oracle/GoldenGate/dirdat/lt
TRANLOGOPTIONS DBLOGREADER //опция необходимая для чтения редо с ASM, для версий оракла 10.2 и выше и 11.2. и выше
TABLE srcschm.*;
Настраиваем data pump
добавляем extractor, с указанием откуда забирать изменения для перекачки
ADD EXTRACT extpump1, , EXTTRAILSOURCE /opt/oracle/GoldenGate/dirdat/lt
добавляем rmttrail — удаленный файл, куда будут перекачиваться изменения
ADD RMTTRAIL /home/oracle/GoldenGate/dirdat/rt, EXTRACT extpump1
редактируем параметры
EDIT PARAMS extpump1
EXTRACT extpump1
USERID DDLGG, PASSWORD DDLGGPWD
RMTHOST TargetHost, MGRPORT 7809
RMTTRAIL /home/oracle/GoldenGate/dirdat/rt
TABLE srcschm.*;

Настраиваем extractor для первичной загрузки
добавляем extractor с указанием параметров прямой загрузки
ADD EXTRACT load1, SOURCEITABLE
EDIT PARAMS load1

EXTRACT
load1
USERID DDLGG, PASSWORD DDLGGPWD
RMTHOST TargetHost, MGRPORT 7809
RMTTASK replicat, GROUP load2
TABLE srcschm.*;




На TargetHost
GGSCI > EDIT PARAMS ./GLOBALS
GGSCHEMA DDLGG
CHECKPOINTTABLE DDLGG.CHKPTAB
GGSCI > DBLOGIN USERID DDLGG, PASSWORD DDLGGPWD
GGSCI > ADD CHECKPOINTTABLE DDLGG.CHKPTAB


Настраиваем менеджер
ggsci> EDIT PARAMS MGR
PORT 7809
USERID DDLGG, PASSWORD DDLGGPWD
AUTOSTART REPLICAT rep1
AUTORESTART REPLICAT rep1, RETRIES 4, WAITMINUTES 4
STARTUPVALIDATIONDELAY 5
PURGEOLDEXTRACTS /home/oracle/GoldenGate/dirdat/rt*, USECHECKPOINTS, MINKEEPHOURS 2
rep1 — Наш replicat процесс, который будет реплицировать транзакционные изменения

Настраиваем replicat для транзакций
ggsci> add replicat rep1, EXTTRAIL /home/oracle/GoldenGate/dirdat/rt

ggsci> EDIT PARAMS rep1
REPLICAT rep1
USERID DDLGG, PASSWORD DDLGGPWD
HANDLECOLLISIONS //нужен в начальном этапе, когда транзакции реплицируются вместе с инициализацией
ASSUMETARGETDEFS //указывает на соответствие исходных и конечных таблиц
DBOPTIONS SUPPRESSTRIGGERS
DISCARDFILE /opt/oracle/GoldenGate/rep1.bad
MAP srcschm.*, TARGET targetschm.*;

Настраиваем replicat для первичной загрузки
добавляем replicat с указанием параметров прямой загрузки
ADD REPLICAT load2, SPECIALRUN
EDIT PARAMS load2

REPLICAT load2
USERID DDLGG, PASSWORD DDLGGPWD
DBOPTIONS SUPPRESSTRIGGERS, DEFERREFCONST //подавляем триггеры и ограничения
ASSUMETARGETDEFS
DISCARDFILE /home/oracle/GoldenGate/load2.bad
MAP srcschm.*, TARGET targetschm.*;

Запуск системы
START MANAGER — на обоих системах

на SourceHost
START EXTRACT ext1
START EXTRACT extpump1
START EXTRACT load1 - replicat load2 запустится автоматом

на TargetHost
START REPLICAT rep1
следим за процессами load1, load2
STATUS EXTARCT load1
STATUS REPLICAT load2
как они успешно завершатся
SEND REPLICAT rep1, NOHANDLECOLLISIONS — отключаем контроль коллизий


Полезные команды для слежения
info all
view ggsevt
view report <rep1/ext1/extpump1/load1/load2>
info extract <extname>
info replicat <repname>

Комментариев нет:

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