Post on 08-Apr-2018
ОГЛАВЛЕНИЕ
Оглавление
Ссылки на документацию ___________________________________________________ 1
0. Подготовка виртуальнои среды _______________________________________ 2
0. Создание схемы данных для репликации ____________________________ 3
1. Проверка базы данных ___________________________________________________ 4
2. Инсталляция GoldenGate с помощью Universal Installer _____________ 6
(Опционально) Обновляем GoldenGate до последнеи версии с
помощью OPatch _____________________________________________________________ 13
3. Подготовка источника базы данных Oracle для репликации _____ 15
4. Подготовка приемника базы данных Oracle для репликации _____ 16
4. Отчетная база данных ___________________________________________________ 17
5. Анализ и оптимизация производительности GoldenGate __________ 28
6. Настраиваем дополнительныи источник MySQL ____________________ 37
7. Настраиваем GoldenGate Director _______________________________________ 42
Настрои ка сверки данных с помощью Veridata _________________________ 46
ССЫЛКИ НА ДОКУМЕНТАЦИЮ
Страница 1
Ссылки на документацию
1. Сборник документации по GoldenGate 12c:
http://docs.oracle.com/goldengate/1212/gg-winux/docs.htm
2. Справочник по параметрам GoldenGate 12c
3. Руководство администратора GoldenGate 12c (общее)
4. Руководство администратора GoldenGate 12c для for Oracle Database
5. Руководство администратора GoldenGate 12c для for MSSQL
6. Руководство администратора GoldenGate 12c для for MySQL
ПОДГОТОВКА ВИРТУАЛЬНОЙ СРЕДЫ
Страница 2
0. Подготовка виртуальнои среды
Виртуальная среда для проведения лабораторнои работы состоит из 3 серверов:
1. Сервер gg1ora – источник для репликации
2. Сервер gg2ora – приемник для репликации
3. Сервер gg3fmw – вспомогательные компоненты такие как нагрузочные скрипты,
репозитории GoldenGate Director, Veridata и Monitor.
orcl1
orcl2
eth0: 192.168.43.128 eth1: gg1ora, 192.168.154.50
eth0: 192.168.43.128 eth1: gg2ora, 192.168.154.51
eth0: 192.168.43.128 eth1: gg3fmw, 192.168.154.52 eth2: динамическии адрес
Director Director Monitor
mysql
СОЗДАНИЕ СХЕМЫ ДАННЫХ ДЛЯ РЕПЛИКАЦИИ
Страница 3
0. Создание схемы данных для репликации
cd ~/GG_LAB_NEW1/Oracle2OracleClassic/0.CreateSchema/
sqlplus "sys/oracle@gg1:1521/orcl1 as sysdba" @demo_ora_create
sqlplus "sys/oracle@gg1:1521/orcl1 as sysdba" @demo_ora_insert
[oracle@gg3 0.CreateSchema]$ cd ~/GG_LAB_NEW1/Oracle2OracleClassic/0.CreateSchema/
[oracle@gg3 0.CreateSchema]$ sqlplus "sys/oracle@gg1:1521/orcl1 as sysdba"
@demo_ora_create
SQL*Plus: Release 12.1.0.2.0 Production on Sun Jan 25 19:34:12 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
User dropped.
User created.
User altered.
Grant succeeded.
Grant succeeded.
Table created.
Table created.
Sequence created.
Sequence created.
SQL>
1. ПРОВЕРКА БАЗЫ ДАННЫХ
Страница 4
1. Проверка базы данных
Прежде чем приступать к настрои ке репликации необходимо осуществить
проверку базы данных с точки зрения потенциальных проблем: отсутствие
первичного ключа, неподдерживаемые типы данных, сжатие и т.д. Набор
поддерживаемых и неподдерживаемых возможностеи разныи для разных типов
процессов Extract. Ниже в таблице приведена краткая сводка:
Способ проверки зависит от того какои планируется использовать режим Extract
(Classic или Integrated).
Classic Extract
Если планируется использовать классическии Extract, то для целеи проверки
используются скрипты, доступные на support.oracle.com – наи ти их можно по
словам “goldengate profile”. Например, скрипт для проверки планируемои к
репликации схемы Oracle доступен в ноте Oracle GoldenGate database Schema Profile
check script for Oracle DB (Doc ID 1296168.1).
Для лабораторнои работы этот скрипт загружен в каталог:
/home/oracle/GG_LAB_NEW1/Oracle2OracleClassic/1.CheckSchema/full-
schemaCheckOracle_11032014.sql
Запустим этот скрипт под пользователем обладающим правами DBA:
[oracle@gg3 0.CheckSchema]$ cd ~/GG_LAB_NEW1/Oracle2OracleClassic/1.CheckSchema/
[oracle@gg3 0.CheckSchema]$ sqlplus "sys/oracle@gg1:1521/orcl1 as sysdba" @full-
schemaCheckOracle_11032014.sql
Enter the Schema Name > ggtest
При запуске скрипт запросит схему пользователя, в которои хранятся
реплицируемые таблицы (я ввел ggtest). Результирующии отчет будет состоять
из трех частеи :
1. Общая информация: версия СУБД, включено ли минимальное
журналирование, архивирование журналов, производится ли форсирование
журналирования, количество объектов различных типов, типы данных
2. Потенциально проблемные таблицы
1. ПРОВЕРКА БАЗЫ ДАННЫХ
Страница 5
3. Нагрузка на базу данных по дня и часам: размер журнала, количество
переключении журнала по часам, объем сгенерированных журналов под
часа и дням.
Ответьте на вопросы:
1. Какие таблицы не имеют первичного ключа?
2. Какие таблицы сжаты?
3. Какие таблицы содержат неподдерживаемые типы данных и какие этот типы?
4. Существуют ли триггеры?
Integrated Extract
Для интегрированного Extract для этих целеи предназначена специальная
таблица в СУБД Oracle DBA_GOLDENGATE_SUPPORT_MODE
SQL> column object_name format a20
SQL> column owner format a20
SQL> select * from DBA_GOLDENGATE_SUPPORT_MODE where OWNER='GGTEST';
OWNER OBJECT_NAME SUPPOR
-------------------- -------------------- ------
GGTEST SPATIAL_TABLE FULL
GGTEST XMLTYPE_TABLE FULL
GGTEST EMPLOYEES FULL
GGTEST BLOB_TABLE FULL
GGTEST ANYDATA_TABLE FULL
GGTEST DEPARTMENTS FULL
GGTEST UDF_TABLE ID KEY
FULL - A capture process can capture changes made to all of the columns in the
table
ID KEY - A capture process can capture changes made to the key columns and any
other columns in the table supported by the capture process, except for LOB,
LONG, LONG RAW, and XMLType columns.
NONE - A capture process cannot capture changes made to any columns in the
table.
Ответьте на вопросы:
1. Какие таблицы не полностью захватываются из журнала СУБД?
2. ИНСТАЛЛЯЦИЯ GOLDENGATE С ПОМОЩЬЮ UNIVERSAL INSTALLER
Страница 6
2. Инсталляция GoldenGate с помощью Universal Installer
Начиная с GoldenGate версии 12c инсталляция осуществляется через
стандартныи Oracle Universal Installer. Пока что такая функция доступна не для
всех платформ, но, как минимум GoldenGate for Oracle, сеи час использует OUI
У нас 2 сервера gg1 и gg2.
На сервере gg1 проинсталлирована СУБД Oracle 12.1.0.2 и MySQL Community
Edition 5.6. На сервере gg2 проинсталлирована СУБД Oracle 12.1.0.2. На gg1 мы
проинсталлируем GoldenGate 12c для СУБД Oracle 12g и MySQL Enterprise Edition.
Инсталляцию будум осуществлять в каталог
/u01/app/oracle/product/ogg$VERSION/$DATABASE$DATABASE_VERSION.
Ниже показаны пути инсталляции.
orcl1
orcl2
ogg1: /u01/app/oracle/product/ogg12.1.2.1/ora12 port 7809 ogg2: /u01/app/oracle/product/ogg12.1.2.1/mysql port 8809
eth0: 192.168.43.128 eth1: gg3fmw, 192.168.154.52 eth2: динамическии адрес
Director Director Monitor
mysql
ogg1: /u01/app/oracle/product/ogg12.1.2.1/ora12 port 7809
2. ИНСТАЛЛЯЦИЯ GOLDENGATE С ПОМОЩЬЮ UNIVERSAL INSTALLER
Страница 7
На gg2 будет проинсталлирован GoldenGate 12c для СУБД Oracle 12c.
cd GG_LAB_NEW1/distrib/
ssh gg1 "mkdir /home/oracle/distrib/gg1212/ora12 -p"
ssh gg2 "mkdir /home/oracle/distrib/gg1212/ora12 -p"
ssh gg1 "mkdir /home/oracle/distrib/gg1212/mysql -p"
scp gg1212/ora12/* gg1:/home/oracle/distrib/gg1212/ora12
scp gg1212/ora12/* gg2:/home/oracle/distrib/gg1212/ora12
scp gg1212/mysql/* gg1:/home/oracle/distrib/gg1212/mysql
Вывод на экране:
[oracle@gg3 ~]$ cd GG_LAB_NEW1/distrib/
[oracle@gg3 distrib]$ ssh gg1 "mkdir /home/oracle/distrib/gg1212/ora12 -p"
[oracle@gg3 distrib]$ ssh gg2 "mkdir /home/oracle/distrib/gg1212/ora12 -p"
[oracle@gg3 distrib]$ ssh gg1 "mkdir /home/oracle/distrib/gg1212/mysql -p"
[oracle@gg3 distrib]$
[oracle@gg3 distrib]$ scp gg1212/ora12/* gg1:/home/oracle/distrib/gg1212/ora12
p20282720_121210_Linux-x86-64.zip
100% 121MB 120.6MB/s 00:01
V46695-01.zip
100% 336MB 167.9MB/s 00:02
[oracle@gg3 distrib]$ scp gg1212/ora12/* gg2:/home/oracle/distrib/gg1212/ora12
p20282720_121210_Linux-x86-64.zip
100% 121MB 120.6MB/s 00:01
V46695-01.zip
100% 336MB 56.0MB/s 00:06
[oracle@gg3 distrib]$ scp gg1212/mysql/* gg1:/home/oracle/distrib/gg1212/mysql
V47367-01.zip
100% 136MB 68.0MB/s 00:02
[oracle@gg3 distrib]$
Для инсталляции OGG для Oracle на сервере gg1 запускаем Gnome:
startx
Запускаем терминал и переходим в каталог
cd /home/oracle/distrib/gg1212/ora12
unzip V46695-01.zip
cd fbo_ggs_Linux_x64_shiphome/Disk1/
./runInstaller
После запуска открывается окно для выбора версии СУБД. Связана такая
необходимость с тем, что в одном дистрибутиве есть GoldenGate как для Oracle
11g, так и Oracle 12c.
2. ИНСТАЛЛЯЦИЯ GOLDENGATE С ПОМОЩЬЮ UNIVERSAL INSTALLER
Страница 8
1. Выбираем версию СУБД. В нашем случае версия СУБД – 12c:
2. На следующеи странице инсталлятора указываем
- каталог, в которыи будет проинсталлирован GoldenGate: /u01/app/oracle/product/ogg12.1.2.1/ora12
- местоположение $ORACLE_HOME: /u01/app/oracle/product/12.1.0/dbhome_1
- порт, на котором будет работать менеджер 7809
Обратите внимание, что GoldenGate не следует инсталлировать в домашнии
каталог СУБД Oracle.
2. ИНСТАЛЛЯЦИЯ GOLDENGATE С ПОМОЩЬЮ UNIVERSAL INSTALLER
Страница 9
3.
4. На следующеи странице просматриваем настрои ки и жмем Install.
5. Жмем кнопку Close для выхода из Universal Installer
6. Аналогично инсталлируем GoldenGate для gg2.
7. Помимо Oracle Database для демонстрации возможностеи будет
использована СУБД MySQL Community. Для этои СУБД инсталляция
производится старыми методами – обычная распаковка дистрибутива.
Для этого на сервере gg1:
cd ~/distrib/gg1212/mysql/
mkdir /u01/app/oracle/product/ogg12.1.2.1/mysql
unzip V47367-01.zip -d /u01/app/oracle/product/ogg12.1.2.1/mysql
cd /u01/app/oracle/product/ogg12.1.2.1/mysql
tar xvf ggs_Linux_x64_MySQL_64bit.tar
2. ИНСТАЛЛЯЦИЯ GOLDENGATE С ПОМОЩЬЮ UNIVERSAL INSTALLER
Страница 10
8. GoldenGate для MySQL нужно проинициализировать. Для СУБД Oracle за нас
это сделал Universal Installer. Здесь нам это нужно делать вручную. Для
инициализации выполняем следующие деи ствия:
cd /u01/app/oracle/product/ogg12.1.2.1/mysql
./ggsci
create subdirs
Ниже вывод от выполнения этих команд
[oracle@gg1 mysql]$ cd /u01/app/oracle/product/ogg12.1.2.1/mysql
[oracle@gg1 mysql]$ ./ggsci
Oracle GoldenGate Command Interpreter for MySQL
Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140920.0203
Linux, x64, 64bit (optimized), MySQL Enterprise on Sep 20 2014 03:43:22
Operating system character set identified as UTF-8.
Copyright (C) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
GGSCI (gg1.localdomain) 1> create subdirs
Creating subdirectories under current directory
/u01/app/oracle/product/ogg12.1.2.1/mysql
Parameter files /u01/app/oracle/product/ogg12.1.2.1/mysql/dirprm:
already exists
Report files /u01/app/oracle/product/ogg12.1.2.1/mysql/dirrpt:
created
Checkpoint files /u01/app/oracle/product/ogg12.1.2.1/mysql/dirchk:
created
Process status files /u01/app/oracle/product/ogg12.1.2.1/mysql/dirpcs:
created
SQL script files /u01/app/oracle/product/ogg12.1.2.1/mysql/dirsql:
created
Database definitions files /u01/app/oracle/product/ogg12.1.2.1/mysql/dirdef:
created
Extract data files /u01/app/oracle/product/ogg12.1.2.1/mysql/dirdat:
created
Temporary files /u01/app/oracle/product/ogg12.1.2.1/mysql/dirtmp:
created
Credential store files /u01/app/oracle/product/ogg12.1.2.1/mysql/dircrd:
created
Masterkey wallet files /u01/app/oracle/product/ogg12.1.2.1/mysql/dirwlt:
created
Dump files /u01/app/oracle/product/ogg12.1.2.1/mysql/dirdmp:
created
GGSCI (gg1.localdomain) 2>
9. Настраиваем Manager для MySQL. Для этого вводим команду
edit params mgr
В открывшемся редакторе вводим PORT 8809
2. ИНСТАЛЛЯЦИЯ GOLDENGATE С ПОМОЩЬЮ UNIVERSAL INSTALLER
Страница 11
10. Запускаем менеджер
start mgr
info mgr
Ниже вывод от команд:
GGSCI (gg1.localdomain) 2> start mgr
Manager started.
GGSCI (gg1.localdomain) 3> info mgr
Manager is running (IP port gg1.localdomain.8809, Process ID 7486).
GGSCI (gg1.localdomain) 4>
Итак, на данныи момент мы имеет следующую конфигурацию:
На сервере GG1 сконфигурирована база данных Oracle 12g и MySQL 5.6
orcl1
orcl2
ogg1: /u01/app/oracle/product/ogg12.1.2.1/ora12 port 7809 process list: MGR (7809) ogg2: /u01/app/oracle/product/ogg12.1.2.1/mysql port 8809 process list: MGR (8809)
eth0: 192.168.43.128 eth1: gg3fmw, 192.168.154.52 eth2: динамическии адрес
Director Director Monitor
mysql
ogg1: /u01/app/oracle/product/ogg12.1.2.1/ora12 port 7809 process list: MGR (7809)
2. ИНСТАЛЛЯЦИЯ GOLDENGATE С ПОМОЩЬЮ UNIVERSAL INSTALLER
Страница 12
На сервере GG2 сконфигурирована база данных Oracle 12g
На сервере GG1 запущен менеджер GoldenGate для Oracle 12g (порт 7809) и
MySQL 5.6 (порт 8809)
На сервере GG2 запущен менеджер GoldenGate для Oracle 12g (порт 7809)
(ОПЦИОНАЛЬНО) ОБНОВЛЯЕМ GOLDENGATE ДО ПОСЛЕДНЕЙ ВЕРСИИ С ПОМОЩЬЮ OPATCH
Страница 13
(Опционально) Обновляем GoldenGate до последнеи версии с помощью OPatch
Обновления GoldenGate 12c выпускаются в стандартном формате для OPatch, т.е.
установка обновления GoldenGate делается стандартными инструментами Oracle.
Патчи для каждои версии СУБД разные. Даваи те установим патч на сервере GG1
для GoldenGate 12c для СУБД Oracle 12c.
1. Переходим в каталог, куда скачан патч и распаковываем его
cd ~/distrib/gg1212/ora12/
unzip p20282720_121210_Linux-x86-64.zip
cd 20282720
2. Устанавливаем переменную ORACLE_HOME, чтобы она указывала в каталог,
куда проинсталлирован GoldenGate
export ORACLE_HOME=/u01/app/oracle/product/ogg12.1.2.1/ora12
3. Запускаем установку патча
$ORACLE_HOME/OPatch/opatch apply
Вывод команды выглядит следующим образом
Invoking OPatch 11.2.0.1.7
Oracle Interim Patch Installer version 11.2.0.1.7
Copyright (c) 2011, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/ogg_12.1.2/db12c
Central Inventory : /u01/app/oraInventory
from : /etc/oraInst.loc
OPatch version : 11.2.0.1.7
OUI version : 11.2.0.3.0
Log file location :
/u01/app/oracle/product/ogg_12.1.2/db12c/cfgtoollogs/opatch/opatch2014-07-24_02-29-
18AM.log
Applying interim patch '19152124' to OH '/u01/app/oracle/product/ogg_12.1.2/db12c'
Verifying environment and performing prerequisite checks...
Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.
Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/u01/app/oracle/product/ogg_12.1.2/db12c')
Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...
(ОПЦИОНАЛЬНО) ОБНОВЛЯЕМ GOLDENGATE ДО ПОСЛЕДНЕЙ ВЕРСИИ С ПОМОЩЬЮ OPATCH
Страница 14
Patching component oracle.oggcore.ora12c, 12.1.2.0.0...
Patch 19152124 successfully applied
Log file location:
/u01/app/oracle/product/ogg_12.1.2/db12c/cfgtoollogs/opatch/opatch2014-07-24_02-29-
18AM.log
OPatch succeeded.
[oracle@gg2day 19152124]$
4. Проверим, что патч был установлен. Для этого можно открыть фаи л
/u01/app/oracle/product/ogg_12.1.2/db12c/OGG_WinUnix_Rel_Notes_12.1.2.0.0_B
LR19007464.pdf
В этом фаи ле содержится информация о последних багах исправленных в
GoldenGate. Также можно видеть, что номер патча 19007464 в консоли ggsci.
3. ПОДГОТОВКА ИСТОЧНИКА БАЗЫ ДАННЫХ ORACLE ДЛЯ РЕПЛИКАЦИИ
Страница 15
3. Подготовка источника базы данных Oracle для репликации
Для того, чтобы GoldenGate мог корректно захватывать изменения необходимо
выполнить ряд деи ствии :
создать пользователя;
включить минимальное журналирование;
включить архивацию журналов СУБД
разрешить использование GoldenGate
работать необходимо выполнить ряд подготовительных деи ствии на СУБД
источника:
Создать выделенного пользователя для работы GoldenGate
CREATE USER GGADMIN IDENTIFIED BY oracle;
GRANT CONNECT,RESOURCE,DBA to GGADMIN;
GRANT UNLIMITED TABLESPACE TO GGADMIN;
exec dbms_goldengate_auth.grant_admin_privilege('GGADMIN');
Oracle Database 12c в режиме CDB
CREATE USER C##GGADMIN IDENTIFIED BY oracle CONTAINER=ALL;
GRANT CONNECT,RESOURCE,DBA to C##GGADMIN CONTAINER=ALL;
GRANT UNLIMITED TABLESPACE TO C##GGADMIN CONTAINER=ALL;
exec dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN', container => 'ALL');
Включить minimum supplemental logging
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Включить режим архивирования журналов
mkdir /u02/oradata/orcl1/arcs/orcl1 –p
sqlplus / as sysdba
shutdown immediate
startup mount
alter system set LOG_ARCHIVE_DEST_1='location=/u02/oradata/orcl1/arcs/orcl1'
scope=both;
alter database archivelog;
alter database open;
Разрешить репликацию с помощью GoldenGate (необходимо для 11.2.0.4+,
12.1.0.2+)
ALTER SYSTEM SET enable_goldengate_replication=true scope=both;
4. ПОДГОТОВКА ПРИЕМНИКА БАЗЫ ДАННЫХ ORACLE ДЛЯ РЕПЛИКАЦИИ
Страница 16
4. Подготовка приемника базы данных Oracle для репликации
Для корректного применения изменении на приемнике необходимо выполнить
ряд деи ствии :
создать пользователя;
разрешить использование GoldenGate
Ниже описаны эти деи ствия:
Создать выделенного пользователя для работы GoldenGate
CREATE USER GGADMIN IDENTIFIED BY oracle;
GRANT CONNECT,RESOURCE,DBA to GGADMIN;
GRANT UNLIMITED TABLESPACE TO GGADMIN;
exec dbms_goldengate_auth.grant_admin_privilege('GGADMIN');
Oracle Database 12c в режиме CDB
CREATE USER C##GGADMIN IDENTIFIED BY oracle CONTAINER=ALL;
GRANT CONNECT,RESOURCE,DBA to C##GGADMIN CONTAINER=ALL;
GRANT UNLIMITED TABLESPACE TO C##GGADMIN CONTAINER=ALL;
exec dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN', container => 'ALL');
Включить minimum supplemental logging
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Разрешить репликацию с помощью GoldenGate (необходимо для 11.2.0.4+,
12.1.0.2+)
ALTER SYSTEM SET enable_goldengate_replication=true scope=both;
4. ОТЧЕТНАЯ БАЗА ДАННЫХ
Страница 17
4. Отчетная база данных
В этои лабораторнои работе мы рассмотрим конфигурирование GoldenGate для
поддержки одностороннеи репликации из Oracle 12с в Oracle 12c.
Первоначальное создание отчетнои базы данных может выполняться как с
остановкои , так и без остановки. Мы рассмотрим безостановочныи вариант.
Для этои лабораторнои будут использована схема ggtest (Oracle 12c) как на
источнике, так и на премнике.
Первоначально будет выполнена настрои ка GoldenGate в классическом режиме.
Следующие задачи будут выполнены в рамках это лабораторнои :
Запущены процессы Manager GoldenGate.
Создан процесс Extract, читающии данные из Oracle Redo среды gg1.
Создан процесс Pump, которые будет переносить захваченные транзакции в
среду gg2
Запустим Extract на стороне gg1
Запомним текущии SCN
Экспортируем данные на этот SCN из gg1 и импортируем их в gg2
Создадим Replicat, которыи будет синхронизировать базы
Запустим Replicat, чтобы он применял данные, начиная с записанного SCN
Сгенерируем транзакции на источнике и проверим, что они корректно
передаются на приемник
Согласно best practice работа GoldenGate будет осуществляться под выделенным
пользователем (ggadmin).
ИСТОЧНИК, ORACLE 12C (КОНФИГУРАЦИЯ OGG)
1. Будущая конфигурация
4. ОТЧЕТНАЯ БАЗА ДАННЫХ
Страница 18
2. Переходим в каталог GoldenGate 12c для СУБД Oracle 12g
(проинсталлирован в разделе 2)
cd /u01/app/oracle/product/ogg12.1.2.1/ora12
3. Запускаем GoldenGate и смотрим, что ни один процесс не запущен (точнее
запущен MANAGER, которыи был настроен в Universal Installer)
[oracle@gg1 ora12]$ ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140727.2135.1_FBO
Linux, x64, 64bit (optimized), Oracle 12c on Aug 7 2014 10:21:34
Operating system character set identified as UTF-8.
Copyright (C) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
GGSCI (gg1.localdomain) 1> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
GGSCI (gg1.localdomain) 2>
4. Если менеджер не запущен, то запускаем его и проверяем его состояние
GGSCI (gg1.localdomain) 3> start mgr
Manager started.
GGSCI (gg1.localdomain) 4> info mgr
Manager is running (IP port gg1.localdomain.7809, Process ID 8483).
Oracle 12c
DB_NAME: ORCL2
Oracle 12c
DB_NAME: ORCL1
Pump LAN / WAN /
INTERNET
Capture Delivery
CAB PAB DAB ./dirdat/ta ./dirdat/tb
4. ОТЧЕТНАЯ БАЗА ДАННЫХ
Страница 19
5. Для подключения к СУБД Oracle будет использоваться пользователь
ggadmin. На обеих серверах создадим эту учетную запись
create wallet
add credentialstore
ALTER CREDENTIALSTORE ADD USER ggadmin ALIAS ggadmin
dblogin useridalias ggadmin
list tables ggtest.*
6. Мы готовы к созданию процессов GoldenGate.
7. Первым делом будет создан процесс Extract CAB. Конфигурация для этого
процесса лежит в каталоге
/home/oracle/GG_LAB_NEW1/Oracle2OracleClassic/4.StartCapture
Для редактирования конфигурацию используется команда
edit params cab
После ввода этои команды мы попадаем в редактор vi (или другои
заданныи командои SET EDITOR). В редакторе вводим конфигурацию и
сохраняем ее
GGSCI (gg1day.local) 14> edit params cab
Фаи л параметров представлен ниже:
EXTRACT cab
setenv (ORACLE_SID=orcl1)
setenv (ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1)
USERIDALIAS ggadmin
EXTTRAIL ./dirdat/ta
TABLE GGTEST.*;
8. Следующие команды мы запустим для создания процесса CAB
GGSCI (gg1.localdomain as ggadmin@orcl1) 8> delete cab
Deleted EXTRACT CAB.
GGSCI (gg1.localdomain as ggadmin@orcl1) 9> add extract cab, tranlog,begin now
EXTRACT added.
GGSCI (gg1.localdomain as ggadmin@orcl1) 10> ADD exttrail ./dirdat/ta, EXTRACT cab,
MEGABYTES 50
EXTTRAIL added.
4. ОТЧЕТНАЯ БАЗА ДАННЫХ
Страница 20
9. Следующии шаг – создание процесса, которыи будет передавать данные,
захваченные процессом CAB на удаленныи сервер. Этот процесс (pump)
будет называть PAB. Аналогично тому, как мы добавляли Extract добавляем
Pump:
GGSCI (gg1day.local) 14> edit params pab
10. Фаи л параметров для процесса PAB представлен ниже:
EXTRACT pab
RMTHOST gg2,MGRPORT 7809
RMTTRAIL ./dirdat/tb
PASSTHRU
TABLE ggtest.*;
11. Следующие команды мы запустим для создания процесса PAB
GGSCI (gg1.localdomain as ggadmin@orcl1) 12> delete extract pab
ERROR: EXTRACT PAB does not exist.
GGSCI (gg1.localdomain as ggadmin@orcl1) 13> add extract pab, EXTTRAILSOURCE
./dirdat/ta, begin now
EXTRACT added.
GGSCI (gg1.localdomain as ggadmin@orcl1) 14> ADD RMTTRAIL ./dirdat/tb, EXTRACT pab
RMTTRAIL added.
GGSCI (gg1.localdomain as ggadmin@orcl1) 15>
12. Для корректнои работы репликации необходимо добавить
supplemental logging первичного ключа для реплицируемых таблиц.
Параллельно мы проверим, что работает наше хранилище учетных записеи
GGSCI (gg1.localdomain as ggadmin@orcl1) 15> DBLOGIN USERidALIAS ggadmin
Successfully logged into database.
GGSCI (gg1.localdomain as ggadmin@orcl1) 16> add trandata ggtest.*
Logging of supplemental redo data enabled for table GGTEST.DEPARTMENTS.
TRANDATA for scheduling columns has been added on table 'GGTEST.DEPARTMENTS'.
Logging of supplemental redo data enabled for table GGTEST.EMPLOYEES.
TRANDATA for scheduling columns has been added on table 'GGTEST.EMPLOYEES'.
Logging of supplemental redo data enabled for table GGTEST.TABLE_ANYDATA.
TRANDATA for scheduling columns has been added on table 'GGTEST.TABLE_ANYDATA'.
Logging of supplemental redo data enabled for table GGTEST.TABLE_COMPRESS.
TRANDATA for scheduling columns has been added on table 'GGTEST.TABLE_COMPRESS'.
Logging of supplemental redo data enabled for table GGTEST.TABLE_DEFERRED.
TRANDATA for scheduling columns has been added on table 'GGTEST.TABLE_DEFERRED'.
Logging of supplemental redo data enabled for table GGTEST.TABLE_INVISIBLE.
TRANDATA for scheduling columns has been added on table 'GGTEST.TABLE_INVISIBLE'.
4. ОТЧЕТНАЯ БАЗА ДАННЫХ
Страница 21
2015-01-26 00:59:33 INFO OGG-06441 Unique key SYS_C0010381 for table TABLE_NESTED
cannot be used due to the inclusion of virtual columns, or user-defined datatypes, or
extended long varchar columns, or function-based index columns.
2015-01-26 00:59:33 WARNING OGG-06440 No viable unique key is defined for table
TABLE_NESTED. All viable columns will be used to represent the key, but may not
guarantee uniqueness. KEYCOLS may be used to define the key.
Logging of supplemental redo data enabled for table GGTEST.TABLE_NESTED.
TRANDATA for scheduling columns has been added on table 'GGTEST.TABLE_NESTED'.
Logging of supplemental redo data enabled for table GGTEST.TABLE_NOLOGGING.
TRANDATA for scheduling columns has been added on table 'GGTEST.TABLE_NOLOGGING'.
2015-01-26 00:59:33 WARNING OGG-06439 No unique key is defined for table TABLE_NO_PK.
All viable columns will be used to represent the key, but may not guarantee uniqueness.
KEYCOLS may be used to define the key.
Logging of supplemental redo data enabled for table GGTEST.TABLE_NO_PK.
TRANDATA for scheduling columns has been added on table 'GGTEST.TABLE_NO_PK'.
Logging of supplemental redo data enabled for table GGTEST.TABLE_SPATIAL.
TRANDATA for scheduling columns has been added on table 'GGTEST.TABLE_SPATIAL'.
Logging of supplemental redo data enabled for table GGTEST.TABLE_TRIGGER.
TRANDATA for scheduling columns has been added on table 'GGTEST.TABLE_TRIGGER'.
GGSCI (gg1.localdomain as ggadmin@orcl1) 17>
13. Запускаем процессы CAB и PAB, проверяем, что процессы корректно
запустились
GGSCI (gg1.localdomain) 12> start cab
Sending START request to MANAGER ...
EXTRACT CAB starting
GGSCI (gg1.localdomain) 13> start pab
Sending START request to MANAGER ...
EXTRACT PAB starting
GGSCI (gg1.localdomain) 14> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING CAB 00:04:21 00:00:03
EXTRACT RUNNING PAB 00:00:00 00:15:
14. Если какои -то процесс не запустился, то используем команду view
report ИМЯ_ПРОЦЕССА, чтобы определить причину ошибки
15. После того как процессы на источнике запущены можно приступать к
экспорту данных на источнике и импорту их на приемнике. Для этих целеи
будем использовать Data Pump (СУБД) в сетевом, консистентном режиме
16. Создаем Directory GG_INITIAL_LOAD на источнике и приемнике:
На GG1:
SQL> CREATE DIRECTORY gg_initial_load AS '/home/oracle/';
4. ОТЧЕТНАЯ БАЗА ДАННЫХ
Страница 22
Directory created.
SQL> grant read, write on directory gg_initial_load to ggadmin;
Grant succeeded.
На GG2:
SQL> CREATE DIRECTORY gg_initial_load AS '/home/oracle/';
Directory created.
SQL> grant read, write on directory gg_initial_load to ggadmin ;
Grant succeeded.
17. На приемнике (GG2) создаем Database Link, через которыи будет
производиться инициализация
SQL> create public database link orcl1 connect to ggadmin
identified by oracle using 'gg1:1521/orcl1';
Database link created.
SQL>
18. Фиксируем SCN, на которыи будем экспортировать данные. Именно
этот SCN будет служить точкои синхронизации, после которои GoldenGate
начнет применять накопленные изменения. На GG2 вводим следующую
команду:
SQL> SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL@ORCL1;
GET_SYSTEM_CHANGE_NUMBER
------------------------
1919378
SQL>
19. На GG2 запускаем импорт данных через созданныи сетевои database
link. Обязательно нужно подставить ваш FLASHBACK_SCN.
[oracle@gg2 ~]$ impdp ggadmin/oracle@gg2:1521/orcl2 DIRECTORY=gg_initial_load
NETWORK_LINK=orcl1 FLASHBACK_SCN=1919378 schemas=ggtest
Import: Release 12.1.0.2.0 - Production on Mon Jan 26 01:19:38 2015
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit
Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
4. ОТЧЕТНАЯ БАЗА ДАННЫХ
Страница 23
FLASHBACK automatically enabled to preserve database integrity.
Starting "GGADMIN"."SYS_IMPORT_SCHEMA_01": ggadmin/********@gg2:1521/orcl2
DIRECTORY=gg_initial_load NETWORK_LINK=orcl1 FLASHBACK_SCN=1919378 schemas=ggtest
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 640 KB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TYPE/TYPE_SPEC
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
. . imported "GGTEST"."TABLE_SPATIAL" 0 rows
. . imported "GGTEST"."TABLE_ANYDATA" 0 rows
. . imported "GGTEST"."TABLE_NESTED" 0 rows
. . imported "GGTEST"."DEPARTMENTS" 0 rows
. . imported "GGTEST"."EMPLOYEES" 0 rows
. . imported "GGTEST"."TABLE_COMPRESS" 0 rows
. . imported "GGTEST"."TABLE_DEFERRED" 0 rows
. . imported "GGTEST"."TABLE_INVISIBLE" 0 rows
. . imported "GGTEST"."TABLE_NOLOGGING" 0 rows
. . imported "GGTEST"."TABLE_NO_PK" 0 rows
. . imported "GGTEST"."TABLE_TRIGGER" 0 rows
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Job "GGADMIN"."SYS_IMPORT_SCHEMA_01" completed with 1 error(s) at Mon Jan 26 01:20:50
2015 elapsed 0 00:01:08
20. Данные импортированы в моем случае на SCN=1919378. Именно с
этого момента нужно будет запускать применение данных на целевои
системе.
21. Создаем фаи л GLOBALS. В этои фаи ле, в частности, прописывается
глобальная таблица checkpoint.
GGSCI (gg2.localdomain as ggadmin@orcl2) 24> edit params ./GLOBALS
Необходимо ввести настрои ку
checkpointtable ggadmin.checkpointtable
22. Перезапустим ggsci консоль.
23. Создаем процесс DAB. Этот процесс будет читать данные,
передаваемые процессом PAB, из треи л-фаи лов dirdat/tb и применять их к
базе данных ORCL2. Создать конфигурацию процесса DAB можно командои
GGSCI (gg1day.local) 14> edit params dab
4. ОТЧЕТНАЯ БАЗА ДАННЫХ
Страница 24
Фаи л параметров для процесса DAB представлен ниже:
replicat da
setenv (ORACLE_SID=orcl2)
setenv (ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1)
USERIDALIAS ggadmin
discardfile ./dirrpt/da.dsc, purge
assumetargetdefs
map ggtest.*, target ggtest.*;
24. Следующие команды мы запустим для создания процесса DAB
GGSCI (gg2.localdomain) 2> dblogin useridalias ggadmin
Successfully logged into database.
GGSCI (gg2.localdomain as ggadmin@orcl2) 3> add checkpointtable
No checkpoint table specified. Using GLOBALS specification (ggadmin.checkpointtable)...
Successfully created checkpoint table ggadmin.checkpointtable.
GGSCI (gg2.localdomain as ggadmin@orcl2) 6> delete dab
Deleted REPLICAT DAB.
GGSCI (gg2.localdomain as ggadmin@orcl2) 7> ADD REPLICAT dab, EXTTRAIL ./dirdat/tb,
EXTSEQNO 0, EXTRBA 0
REPLICAT added.
25. Запускаем репликация с ранее зафиксированного SCN.
GGSCI (gg2.localdomain as ggadmin@orcl2) 14> start dab aftercsn 1919378
Sending START request to MANAGER ...
REPLICAT DAB starting
GGSCI (gg2.localdomain as ggadmin@orcl2) 15> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING DAB 00:00:00 00:00:03
GGSCI (gg2.localdomain as ggadmin@orcl2) 16>
26. Генерируем несколько записеи в DEPARTMENTS и EMPLOYEES на
источнике (GG1)
SQL> @/home/oracle/GG_LAB_NEW1/Oracle2OracleClassic/7.Workload/demo_ora_insert.sql
4. ОТЧЕТНАЯ БАЗА ДАННЫХ
Страница 25
SQL*Plus: Release 12.1.0.2.0 Production on Mon Jan 26 01:42:05 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected.
Session altered.
Number of rows in array to update or delete =2000
PL/SQL procedure successfully completed.
SQL> select count(*) from employees;
COUNT(*)
----------
27590
SQL> select count(*) from departments;
COUNT(*)
----------
360
SQL> exit;
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit
Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
[oracle@gg3 distrib]$
Как можно видеть на источнике теперь 27590 записеи .
27. Проверяем количество записеи , переданных процессом DAB
GGSCI (gg2.localdomain as ggadmin@orcl2) 29> stats dab
Sending STATS request to REPLICAT DAB ...
Start of Statistics at 2015-01-26 01:45:00.
Replicating from GGTEST.DEPARTMENTS to GGTEST.DEPARTMENTS:
*** Total statistics since 2015-01-26 01:36:51 ***
Total inserts 360.00
Total updates 0.00
Total deletes 0.00
Total discards 0.00
Total operations 360.00
*** Daily statistics since 2015-01-26 01:36:51 ***
Total inserts 360.00
Total updates 0.00
Total deletes 0.00
Total discards 0.00
Total operations 360.00
*** Hourly statistics since 2015-01-26 01:36:51 ***
Total inserts 360.00
Total updates 0.00
Total deletes 0.00
Total discards 0.00
4. ОТЧЕТНАЯ БАЗА ДАННЫХ
Страница 26
Total operations 360.00
*** Latest statistics since 2015-01-26 01:36:51 ***
Total inserts 360.00
Total updates 0.00
Total deletes 0.00
Total discards 0.00
Total operations 360.00
Replicating from GGTEST.EMPLOYEES to GGTEST.EMPLOYEES:
*** Total statistics since 2015-01-26 01:36:51 ***
Total inserts 28372.00
Total updates 1002.00
Total deletes 782.00
Total discards 0.00
Total operations 30156.00
*** Daily statistics since 2015-01-26 01:36:51 ***
Total inserts 28372.00
Total updates 1002.00
Total deletes 782.00
Total discards 0.00
Total operations 30156.00
*** Hourly statistics since 2015-01-26 01:36:51 ***
Total inserts 28372.00
Total updates 1002.00
Total deletes 782.00
Total discards 0.00
Total operations 30156.00
*** Latest statistics since 2015-01-26 01:36:51 ***
Total inserts 28372.00
Total updates 1002.00
Total deletes 782.00
Total discards 0.00
Total operations 30156.00
End of Statistics.
Как можно видеть было передано 360 записеи в таблице DEPARTMENTS. По
таблице EMPLOYEES прошло 28372 INSERT, 1002 UPDATE и 782 DELETE. Для
проверки можно взять по таблице EMPLOYEES количество INSERT и DELETE. Их
разница и будет количеством записеи в таблице.
28. Посмотрим количество записеи на приемнике
select count(*) from ggtest.employees;
select count(*) from ggtest.departments;
COUNT(*)
----------
27590
SQL>
COUNT(*)
4. ОТЧЕТНАЯ БАЗА ДАННЫХ
Страница 27
----------
360
SQL>
Также на приемнике можно запустить следующие команды:
select * from ggtest.employees minus select * from ggtest.employees@orcl1;
select * from ggtest.employees@orcl1 minus select * from ggtest.employees;
Если обе команды не вернут данных, то можно сделать вывод о синхронности
баз.
5. АНАЛИЗ И ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ GOLDENGATE
Страница 28
5. Анализ и оптимизация производительности GoldenGate
GoldenGate использует компонентную схему работы. Есть процессы Extract, Pump
и Replicat. Они никак не завязаны друг на друга. При остановке или торможении
одного процесса другие продолжают нормально работать.
Компонентная схема делает задачу оптимизации производительности довольно
простои . Для определения причины торможения можно использовать
информацию о лаге компонент GoldenGate.
1. Даваи те запустим более длительную нагрузку
[oracle@gg3 distrib]$ sqlplus /nolog
@/home/oracle/GG_LAB_NEW1/Oracle2OracleClassic/7.Workload/demo_ora_insert_1000000
SQL*Plus: Release 12.1.0.2.0 Production on Mon Jan 26 01:42:05 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected.
Session altered.
2. Параллельно с этим даваи те посмотрим на каждыи компонент в
отдельности. Полезная команда для этого info all. На источнике:
GGSCI (gg1.localdomain) 5> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING CAB 00:00:00 00:00:07
EXTRACT RUNNING PAB 00:00:03 00:00:00
GGSCI (gg1.localdomain) 6>
Нас интересен столбец Lag at Chkpt. Он показывает разницу между текущим
временем системы и временем последнеи обработаннои транзакции. Видно, что
CAB не отстает, PAB отстает на 3 секунду.
3. Если то же самое посмотреть на приемнике, то можно увидеть, что DAB
будет отставать сильнее (в рамках лабораторнои это может не
наблюдаться)
GGSCI (gg2.localdomain as ggadmin@orcl2) 32> info all
Program Status Group Lag at Chkpt Time Since Chkpt
5. АНАЛИЗ И ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ GOLDENGATE
Страница 29
MANAGER RUNNING
REPLICAT RUNNING DAB 00:00:08 00:00:00
GGSCI (gg2.localdomain as ggadmin@orcl2) 33>
Видно, что DAB отстает на 8 секунд. Причины могут быть самые разные – от
слишком высокои нагрузки (что решается распараллеливанием) до медленно
работающеи целевои базы данных.
Основное – это понять, где мы отстаем.
4. Даваи те посмотрим статистику, с которои GoldenGate извлекает данные из
журнала. Для этого идем на источник и в ggsci вводим команды
GGSCI (gg1.localdomain) 6> stats CAB reportrate sec total
Sending STATS request to EXTRACT CAB ...
Start of Statistics at 2015-01-26 02:24:15.
Output to ./dirdat/ta:
Extracting from GGTEST.DEPARTMENTS to GGTEST.DEPARTMENTS:
*** Total statistics since 2015-01-26 01:36:43 ***
Total inserts/second: 3.30
Total updates/second: 0.00
Total deletes/second: 0.00
Total discards/second: 0.00
Total operations/second: 3.30
Extracting from GGTEST.EMPLOYEES to GGTEST.EMPLOYEES:
*** Total statistics since 2015-01-26 01:36:43 ***
Total inserts/second: 294.75
Total updates/second: 14.75
Total deletes/second: 13.67
Total discards/second: 0.00
Total operations/second: 323.17
End of Statistics.
Как можно видеть в среднем обрабатывается около 323 операции в секунду.
Нужно понимать, что это статистика с момента запуска и она может быть
непоказательна.
5. Посмотрим статистику на стороне приемника для процесса DAB
GGSCI (gg2.localdomain as ggadmin@orcl2) 34> stats DAB reportrate sec total
Sending STATS request to REPLICAT DAB ...
Start of Statistics at 2015-01-26 02:25:54.
Replicating from GGTEST.DEPARTMENTS to GGTEST.DEPARTMENTS:
5. АНАЛИЗ И ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ GOLDENGATE
Страница 30
*** Total statistics since 2015-01-26 01:36:51 ***
Total inserts/second: 3.40
Total updates/second: 0.00
Total deletes/second: 0.00
Total discards/second: 0.00
Total operations/second: 3.40
Replicating from GGTEST.EMPLOYEES to GGTEST.EMPLOYEES:
*** Total statistics since 2015-01-26 01:36:51 ***
Total inserts/second: 304.25
Total updates/second: 15.25
Total deletes/second: 14.24
Total discards/second: 0.00
Total operations/second: 333.74
End of Statistics.
Также можно видеть, что Replicat обрабатывает около 333 записеи в секунду.
Отставание при этом у все процессов близко к 0 секунд, а значит GoldenGate
справляется с текущеи нагрузкои .
6. Интересную информацию можно увидеть, если остановить все процессы и
дать скрипту "нагенерировать" побольше данных.
7. Даваи те остановим процессы на источнике и приемнике.
На источнике:
GGSCI (gg1.localdomain) 8> stop *
Sending STOP request to EXTRACT CAB ...
Request processed.
Sending STOP request to EXTRACT PAB ...
Request processed.
GGSCI (gg1.localdomain) 9> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED CAB 00:00:00 00:00:06
EXTRACT STOPPED PAB 00:00:00 00:00:06
GGSCI (gg1.localdomain) 10>
На приемнике:
GGSCI (gg2.localdomain as ggadmin@orcl2) 35> stop *
Sending STOP request to REPLICAT DAB ...
Request processed.
GGSCI (gg2.localdomain as ggadmin@orcl2) 36> info all
5. АНАЛИЗ И ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ GOLDENGATE
Страница 31
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT STOPPED DAB 00:00:00 00:00:02
GGSCI (gg2.localdomain as ggadmin@orcl2) 37>
8. Добавим в каждыи процесс команду для вывода статистики каждые 10
секунд. Это очень удобно для мониторинга.
edit params dab
REPORTCOUNT EVERY 10 SECONDS, RATE
9. Запустим нагрузку:
[oracle@gg3 distrib]$ sqlplus /nolog
@/home/oracle/GG_LAB_NEW1/Oracle2OracleClassic/7.Workload/demo_ora_insert_1000000
SQL*Plus: Release 12.1.0.2.0 Production on Mon Jan 26 01:42:05 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected.
Session altered.
10. Подождем 1 минуту. Запустим процессы и опять посмотрим
количество обработанных записеи в секунду. Но в этот раз воспользуемсы
командои просмотра отчета
view report cab
view report pab
view report dab
11. Вопрос: Какие процессы работают быстрее Extract или Replicat?
12. Обычно узким местом репликации становится процесс применения
изменении , поскольку на источнике изменения генерируются в несколько
потоков, а на приемнике мы пытаемся применить их в один поток. Чтобы
Replicat не становился узким местом необходимо настроить
распараллеливание. Настроим распараллеливание нагрузки. Для это
преобразуем Replicat в coordinated.
13. Для этого остановим и запомним текущую позицию Replicat
GGSCI (gg2.localdomain as ggadmin@orcl2) 64> stop dab
Sending STOP request to REPLICAT DAB ...
Request processed.
5. АНАЛИЗ И ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ GOLDENGATE
Страница 32
GGSCI (gg2.localdomain as ggadmin@orcl2) 65> info da
ERROR: Invalid command.
GGSCI (gg2.localdomain as ggadmin@orcl2) 66> info dab
REPLICAT DAB Last Started 2015-01-26 02:54 Status STOPPED
Checkpoint Lag 00:07:50 (updated 00:02:06 ago)
Log Read Checkpoint File ./dirdat/tb000004
2015-01-26 02:47:39.114736 RBA 61991649
Как можно видеть наш Replicat стоит на фаи ле #4 в позиции 61991649
14. Залогинимся, удалим DAB и пересоздадим его как coordinated
GGSCI (gg2.localdomain as ggadmin@orcl2) 67> dblogin useridalias ggadmin
Successfully logged into database.
GGSCI (gg2.localdomain as ggadmin@orcl2) 68> delete dab
Deleted REPLICAT DAB.
GGSCI (gg2.localdomain as ggadmin@orcl2) 69>
GGSCI (gg2.localdomain as ggadmin@orcl2) 69> add replicat dab coordinated exttrail
./dirdat/tb extseqno 4 extrba 61991649
REPLICAT (Coordinated) added.
15. Настроим распараллеливание для таблицы EMPLOYEES в фаи ле
параметров DAB
replicat dab
setenv (ORACLE_SID=orcl2)
setenv (ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1)
USERIDALIAS ggadmin
discardfile ./dirrpt/dab.dsc, purge
assumetargetdefs
REPORTCOUNT EVERY 10 SECONDS, RATE
map ggtest.*, target ggtest.*, threadrange (1-5);
16. Запустим DAB
Sending START request to MANAGER ...
REPLICAT DAB starting
GGSCI (gg2.localdomain as ggadmin@orcl2) 74> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING DAB 00:00:00 00:06:50
В результате были запущены 5 потоков, которые можно увидеть с помощью
команды info deuro detail
GGSCI (gg2.localdomain as ggadmin@orcl2) 80> info dab detail
REPLICAT DAB Last Started 2015-01-26 03:06 Status RUNNING
5. АНАЛИЗ И ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ GOLDENGATE
Страница 33
COORDINATED Coordinator MAXTHREADS 25
Checkpoint Lag 00:19:48 (updated 00:00:04 ago)
Process ID 10664
Log Read Checkpoint File ./dirdat/tb000005
2015-01-26 02:48:17.677812 RBA 10330279
Lowest Log BSN value: 4450719
Lowest Last Committed Transaction CSN value: 4548329
Active Threads:
ID Group Name PID Status Lag at Chkpt Time Since Chkpt
1 DAB001 10670 RUNNING 00:19:56 00:00:01
2 DAB002 10671 RUNNING 00:19:53 00:00:01
3 DAB003 10672 RUNNING 00:19:56 00:00:01
4 DAB004 10673 RUNNING 00:19:52 00:00:01
5 DAB005 10674 RUNNING 00:19:56 00:00:00
Current directory /u01/app/oracle/product/ogg12.1.2.1/ora12
Report file /u01/app/oracle/product/ogg12.1.2.1/ora12/dirrpt/DAB.rpt
Parameter file /u01/app/oracle/product/ogg12.1.2.1/ora12/dirprm/dab.prm
Checkpoint file /u01/app/oracle/product/ogg12.1.2.1/ora12/dirchk/DAB.cpr
Checkpoint table ggadmin.checkpointtable
Process file /u01/app/oracle/product/ogg12.1.2.1/ora12/dirpcs/DAB.pcr
Error log /u01/app/oracle/product/ogg12.1.2.1/ora12/ggserr.log
17. Через некоторое время координированныи Replicat прекратит работу
с ошибкои .
GGSCI (gg2.localdomain as ggadmin@orcl2) 98> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT ABENDED DAB 00:04:34 00:01:20
Чтобы выяснить причину ошибки просмотрим отчет.
view report DAB
В теле отчета будет следующая ошибкам
2015-01-26 03:17:26 ERROR OGG-06004 Coordinated Replicat thread DAB002 exited
unexpectedly. Please check the report file of DAB002 for more details.
Как можно видеть координированныи процесс остановил свою работу по
причине "смерти" одного из своих дочерних процессов – DAB002. Увидеть
причину смерти можно просмотрев отчет DAB002
view report DAB002
В теле отчета будет следующая ошибкам. Ошибка связана с тем, что процесс
при вставке не наше родительскую запись для дочернеи . В результате было
нарушено ограничение целостности FK:
5. АНАЛИЗ И ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ GOLDENGATE
Страница 34
2015-01-26 03:17:24 INFO OGG-06510 Using the following key columns for target
table GGTEST.EMPLOYEES: EMPLOYEE_ID.
2015-01-26 03:17:24 WARNING OGG-00869 OCI Error ORA-02291: integrity constraint
(GGTEST.SYS_C0010372) violated - parent key not found (status = 2291), SQL <INSERT INTO
"GGTEST"."EMPLOYEES" ("EMPLOYEE_ID","FIR
ST_NAME","LAST_NAME","EMAIL","PHONE_NUMBER","HIRE_DATE","JOB_ID","SALARY","COMMISSION_P
CT","MANAGER_ID","DEPARTMENT_ID") VALUES
(:a0,:a1,:a2,:a3,:a4,:a5,:a6,:a7,:a8,:a9,:a10)>.
18. Это нормальное поведение и основная проблема как классических
параллельных Replicat, так и координированных. Причинои является то,
что процессы не координируют между собои работу. Для того, чтобы
продолжить работу отключим Foreign Key. Для интегрированного Replicat
это делать не требуется.
alter table ggtest.employees disable constraint SYS_C0010372;
19. После отключения и перезапуска процесса DAB мы увидим
практически линеи ныи рост производительности:
view report dab001
…
view report dab005
Каждыи из процессов будет отрабатывать 2000 записеи , а суммарно будет
10000.
Switching to next trail file ./dirdat/tb000017 at 2015-01-26 03:38:46 due to EOF, with
current RBA 99999854
Opened trail file ./dirdat/tb000017 at 2015-01-26 03:38:46
94045 records processed as of 2015-01-26 03:38:50 (rate 2351,delta 2276)
117548 records processed as of 2015-01-26 03:39:00 (rate 2350,delta 2350)
141381 records processed as of 2015-01-26 03:39:10 (rate 2356,delta 2383)
164688 records processed as of 2015-01-26 03:39:20 (rate 2352,delta 2330)
20. Но производительность Replicat можно еще поднять, если
проанализировать ожидания.
5. АНАЛИЗ И ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ GOLDENGATE
Страница 35
21. Enterprise Manager показывает, что у нас есть ожидания commit и
конкуренция.
22. В рамках лабораторнои работы мы вряд ли увидим сильное
увеличение производительности, но при нормальнои дисковои системе
можно значительно снизить нагрузку на LGWR включением параметра
BATCHSQL в Replicat:
replicat dab
setenv (ORACLE_SID=orcl2)
setenv (ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1)
USERIDALIAS ggadmin
discardfile ./dirrpt/dab.dsc, purge
assumetargetdefs
REPORTCOUNT EVERY 10 SECONDS, RATE
--handlecollisions
batchsql
map ggtest.*, target ggtest.*, threadrange (1-5);
23. Перезапустим и посмотрим производительность dab. Она должна
значительно вырасти, потому что нагрузку на log резко упала
5. АНАЛИЗ И ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ GOLDENGATE
Страница 36
Switching to next trail file /u01/app/oracle/product/ogg12.1.2.1/ora12/dirdat/tb000022
at 2015-01-26 04:09:15 due to EOF, with current RBA 99999819
Opened trail file /u01/app/oracle/product/ogg12.1.2.1/ora12/dirdat/tb000022 at 2015-01-
26 04:09:15
88306 records processed as of 2015-01-26 04:09:18 (rate 8827,delta 8827)
Switching to next trail file /u01/app/oracle/product/ogg12.1.2.1/ora12/dirdat/tb000023
at 2015-01-26 04:09:22 due to EOF, with current RBA 99999957
Opened trail file /u01/app/oracle/product/ogg12.1.2.1/ora12/dirdat/tb000023 at 2015-01-
26 04:09:22
187006 records processed as of 2015-01-26 04:09:28 (rate 9346,delta 9866)
6. НАСТРАИВАЕМ ДОПОЛНИТЕЛЬНЫЙ ИСТОЧНИК MYSQL
Страница 37
6. Настраиваем дополнительныи источник MySQL
1. Если в качестве engine в MySQL используется InnoDB, то мы можем
использовать GoldenGate для репликации MySQL EE и MySQL Community
Edition (Относительно недавно)
2. Перед тем как настраивать репликацию в GoldenGate необходимо включить
журналирование MySQL. Для этого установим следующие параметры в
/etc/my.cnf:
log_bin=/mysql_log/mysql_log.bin
log_bin_index = /mysql_log/mysql_log_index.bin
binlog_format = ROW
3. Перезапустим MySQL:
[oracle@gg1 mysql]$ sudo mkdir /mysql_log -p
[oracle@gg1 mysql]$ sudo chmod 777 /mysql_log
[oracle@gg1 mysql]$
[oracle@gg1day db11g]$ sudo service mysqld restart
Shutting down MySQL.. [ OK ]
Starting MySQL. [ OK ]
[oracle@gg1day db11g]$
4. Проверим, что фаи л появились
ls /mysql_log/mysql_log*
/mysql_log/mysql_log.000001 /mysql_log/mysql_log.000002 /mysql_log/mysql_log.000003
/mysql_log/mysql_log.000004 /mysql_log/mysql_log.000005
/mysql_log/mysql_log_index.bin
5. Создадим таблицы
mysql -u root
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('oracle');
GRANT ALL ON repl.* TO 'root'@'localhost' IDENTIFIED BY 'oracle';
create database repl;
use repl
CREATE TABLE DEPARTMENTS
( DEPARTMENT_ID NUMERIC(20),
DEPARTMENT_NAME VARCHAR(30),
MANAGER_ID NUMERIC(6),
LOCATION_ID NUMERIC(4),
PRIMARY KEY (DEPARTMENT_ID)
);
CREATE TABLE EMPLOYEES
( EMPLOYEE_ID NUMERIC(20,0),
FIRST_NAME VARCHAR(20),
LAST_NAME VARCHAR(25),
EMAIL VARCHAR(25),
PHONE_NUMERIC VARCHAR(20),
6. НАСТРАИВАЕМ ДОПОЛНИТЕЛЬНЫЙ ИСТОЧНИК MYSQL
Страница 38
HIRE_DATE DATE,
JOB_ID VARCHAR(10),
SALARY NUMERIC(8,2),
COMMISSION_PCT NUMERIC(2,2),
MANAGER_ID NUMERIC(6,0),
DEPARTMENT_ID NUMERIC(20,0),
PRIMARY KEY (EMPLOYEE_ID),
FOREIGN KEY (DEPARTMENT_ID)
REFERENCES DEPARTMENTS (DEPARTMENT_ID)
);
6. Заполним таблицы небольшим количеством данных:
use repl
insert into DEPARTMENTS values (1,'AA',1,1);
insert into DEPARTMENTS values (2,'BB',1,1);
insert into DEPARTMENTS values (3,'CC',1,1);
insert into DEPARTMENTS values (4,'DD',1,1);
insert into EMPLOYEES values (1,'A','A','A','111',CURDATE(),'A',100,NULL,1,1);
insert into EMPLOYEES values (2,'A','A','A','111',CURDATE(),'A',100,NULL,1,1);
insert into EMPLOYEES values (3,'A','A','A','111',CURDATE(),'A',100,NULL,1,1);
insert into EMPLOYEES values (4,'A','A','A','111',CURDATE(),'A',100,NULL,1,2);
insert into EMPLOYEES values (5,'A','A','A','111',CURDATE(),'A',100,NULL,1,3);
insert into EMPLOYEES values (6,'A','A','A','111',CURDATE(),'A',100,NULL,1,4);
commit;
set echo on
select count(*) from EMPLOYEES;
select count(*) from DEPARTMENTS;
exit;
7. Переи дем в каталог c GoldenGate for MySQL
[oracle@gg1 ~]$ cd /u01/app/oracle/product/ogg12.1.2.1/mysql/
[oracle@gg1 mysql]$ ggsci
Oracle GoldenGate Command Interpreter for MySQL
Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140920.0203
Linux, x64, 64bit (optimized), MySQL Enterprise on Sep 20 2014 03:43:22
Operating system character set identified as UTF-8.
Copyright (C) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
GGSCI (gg1.localdomain) 1>
8. Включаем расширенное журналирование (для MySQL не требуется)
DBLOGIN SOURCEDB repl@localhost:3307, USERID root, PASSWORD oracle
ADD TRANDATA repl.*
9. В ggsci создаем фаи л параметров процесса CABM командои edit params
CABM (буквои M в конце имени процесса будем обозначать процессы
MySQL).
edit params CABM
6. НАСТРАИВАЕМ ДОПОЛНИТЕЛЬНЫЙ ИСТОЧНИК MYSQL
Страница 39
Фаи л параметров будет содержать следующии текст
EXTRACT CABM
setenv (MYSQL_UNIX_PORT=/var/lib/mysql/mysql.sock)
SOURCEDB repl@localhost:3307, USERID root, PASSWORD oracle
TRANLOGOPTIONS ALTLOGDEST "/mysql_log/mysql_log_index.bin"
EXTTRAIL ./dirdat/tc
TABLE repl.*;
Создаем процесс CABM
delete CABM
add extract CABM, tranlog,begin now
ADD exttrail ./dirdat/tc, EXTRACT CABM, MEGABYTES 50
10. Запустим процесс CABM:
GGSCI (gg1.localdomain) 2> start cabm
Sending START request to MANAGER ...
EXTRACT CABM starting
GGSCI (gg1.localdomain) 3> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING CABM 00:08:57 00:00:01
GGSCI (gg1.localdomain) 4> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING CABM 00:00:00 00:00:06
GGSCI (gg1.localdomain) 5>
11. Создаем фаи л параметров для peuroa
EXTRACT pabm
RMTHOST gg2,MGRPORT 7809
RMTTRAIL ./dirdat/td
PASSTHRU
TABLE repl.*;
Добавим pump-процесс
delete pabm
add extract pabm, exttrailsource ./dirdat/tc,begin now
ADD rmttrail ./dirdat/td, EXTRACT pabm, MEGABYTES 50
start pabm
6. НАСТРАИВАЕМ ДОПОЛНИТЕЛЬНЫЙ ИСТОЧНИК MYSQL
Страница 40
12. Поскольку репликация осуществляется в гетерогеннои среде, то
необходимо будет создать def-фаи л. Этот фаи л создается на источнике и
переносится на приемник, чтобы приемник (а точнее процесс replicat)
обладал всеи необходимои информациеи об источнике.
13. На источнике заходим в каталог GoldenGate для mysql и создаем фаи л
параметров dirprm/defgen.prm со следующим содержимым
defsfile ./dirdef/mysql.defs, purge
SOURCEDB repl@localhost:3307, USERID root, PASSWORD oracle
table repl.*;
14. Запустим defgen
[oracle@gg1day mysql56]$ export MYSQL_UNIX_PORT=/var/lib/mysql/mysql.sock
[oracle@gg1 mysql]$ ./defgen paramfile dirprm/defgen.prm
***********************************************************************
Oracle GoldenGate Table Definition Generator for MySQL
Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140920.0203
Linux, x64, 64bit (optimized), MySQL Enterprise on Sep 20 2014 04:32:20
Copyright (C) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
Starting at 2015-01-26 05:05:30
***********************************************************************
Operating System Version:
Linux
Version #2 SMP Thu Dec 18 00:15:51 PST 2014, Release 3.8.13-55.1.2.el6uek.x86_64
Node: gg1.localdomain
Machine: x86_64
soft limit hard limit
Address Space Size : unlimited unlimited
Heap Size : unlimited unlimited
File Size : unlimited unlimited
CPU Time : unlimited unlimited
Process id: 4513
***********************************************************************
** Running with the following parameters **
***********************************************************************
defsfile ./dirdef/mysql.defs, purge
SOURCEDB repl@localhost:3307, USERID root, PASSWORD ******
table repl.*;
Expanding wildcard table specification repl.*:
Retrieving definition for repl.DEPARTMENTS.
Retrieving definition for repl.EMPLOYEES.
Definitions generated for 2 tables in ./dirdef/mysql.defs.
[oracle@gg1 mysql]$
15. Скопируем фаи л ./dirdef/mysql.defs на приемник в каталог ./dirdef
6. НАСТРАИВАЕМ ДОПОЛНИТЕЛЬНЫЙ ИСТОЧНИК MYSQL
Страница 41
[oracle@gg1 mysql]$ scp ./dirdef/mysql.defs
oracle@gg2:/u01/app/oracle/product/ogg12.1.2.1/ora12/dirdef
oracle@gg2's password:
mysql.defs
100% 2790 2.7KB/s 00:00
[oracle@gg1 mysql]$
16. На приемнике создадим фаи л конфигурации Replicat:
replicat dabm
USERIDALIAS ggadmin
discardfile ./dirrpt/dabm.dsc, purge
sourcedefs dirdef/mysql.defs
map repl.*, target ggtest_mysql.*;
17. Создадим процесс Replicat:
delete dabm
ADD REPLICAT dabm, EXTTRAIL ./dirdat/td, EXTSEQNO 0, EXTRBA 0
18. Вставим несколько записеи на источнике
mysql –u root –p
password: oracle
use repl
insert into EMPLOYEES values (34,'A','A','A','111',CURDATE(),'A',100,NULL,1,2);
insert into EMPLOYEES values (35,'A','A','A','111',CURDATE(),'A',100,NULL,1,3);
insert into EMPLOYEES values (36,'A','A','A','111',CURDATE(),'A',100,NULL,1,4);
commit;
19. Проверим, что данные попали на приемник.
SQL> select count(*) from ggtest_mysql.employees;
COUNT(*)
----------
3
7. НАСТРАИВАЕМ GOLDENGATE DIRECTOR
Страница 42
7. Настраиваем GoldenGate Director
GoldenGate имеет следующую архитектуру
Как можно видеть в центре есть серверное приложение, которое
разворачивается на Weblogic. Есть клиенты, через которое пользователи
подключаются к Director (Director Web, Director Client и Director Admininstrator).
Есть также база данных (репозитории ), где GoldenGate Director хранит
информацию об объектах GoldenGate.
1. Прежде чем начинать инсталляцию необходимо создать базу данных
репозитория (пароль обязательно должен содержать цифру). Базу данных
создаем на сервере gg1:
CREATE USER ggDirector IDENTIFIED BY welcome1 DEFAULT TABLESPACE users;
ALTER USER ggDirector QUOTA UNLIMITED ON users;
GRANT connect,resource TO ggDirector;
После этого запускаем инсталляцию Director на gg3fmw:
cd /home/oracle/GG_LAB_NEW1/distrib/gg_director
chmod 777 gg-director-serversetup_unix_v12_1_2_0_1.sh
7. НАСТРАИВАЕМ GOLDENGATE DIRECTOR
Страница 43
./gg-director-serversetup_unix_v12_1_2_0_1.sh
2. Отвечаем на вопросы инсталляции
7. НАСТРАИВАЕМ GOLDENGATE DIRECTOR
Страница 45
3. После того как инсталляция закончится необходимо запустить домен с
GoldenGate Director
cd /u01/app/oracle/product/director/domain
./startWeblogic.sh
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 46
Настрои ка сверки данных с помощью Veridata
Veridata позволяет производить сверку данных между источником и
приемником. Может работать параллельно с репликациеи . Проверка
корректности репликации не требует остановки СУБД.
Результаты сверки можно использовать для ресинхронизации баз данных.
Ниже приведены шаги по инсталляции и настрои ке Veridata 12.1.3. Инсталляция
Veridata делится на следующие этапы:
создание репозитория и инсталляция сервера Veridata – выполняется 1 раз
инсталляция stage-агентов (из этих агентов затем создаются агенты,
смотрящие непосредственно на базы данных) – выполняется 1 раз для
каждого хоста
инсталляция конечного агента – выполняется 1 раз для каждои базы
данных
1. На сервере GG3 установим переменную JAVA_HOME и запустим RCU для
создания репозитория
[oracle@gg3 bin]$ export JAVA_HOME=/usr/java/jdk1.7.0_67
[oracle@gg3 bin]$ cd /u01/app/oracle/product/fmw1213/oracle_common/bin/
[oracle@gg3 bin]$ ./rcu
2. После запуска графическои утилиты указываем, как мы хотим создавать
репозитории . Проще всего позволить RCU самому создать все
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 47
3. Вводим параметры для подключения к базе данных репозитория
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 48
4. Выбираем, что хотим инсталлировать Veridata. Также вводим префикс для
имен пользователеи (я ввел OGG)
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 49
5. Вводим пароль для вновь создаваемых пользователеи . Лучше взять пароль,
где есть хотя бы одна цифра (например, welcome1). На следующем экране
проверяем корректность параметров и запускаем создания репозитория
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 50
6. По окончанию создания нужно будет запустить создание домена Weblogic,
которыи будет хостить Veridata.
[oracle@gg1day bin]$ cd /u01/app/oracle/product/fmw1213/wlserver/common/bin/
[oracle@gg1day bin]$ ./config.sh
7. Указываем имя домена – я указал veridata_domain
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 51
8. Выбираем, что хоти инсталлировать Veridata. Автоматически поставится
галочка напротив JRF – это пререквизит для инсталляции Veridata
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 53
10. Соглашаемся с режимом домена по-умолчанию
11. На следующем экране указываем подключению к базе данных, в
которои хранится ранее созданныи репозитории . Жмем Get RCU
Configuration. Не забываи те указывать префикс, заданыи при работе с
репозиторием.
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 55
12. По-умолчанию, GoldenGate Veridata попытается встать на отдельныи
managed server. Это хорошо для продукционнои системы, но плохо работает
в рамках лабораторнои работы. Поэтому я перераспределил и избавился от
лишних серверов приложении . Для этого на последнеи странице я поставил
галки, что хочу управлять куак приложениями, так и железными.
13. На закладке Managed Servers удалим специальныи сервер для Veridata
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 56
14. На закладке с развертывание приложении все приложения и
библиотеки перекидываем на AdminServer
15. Аналогично по ресурсам и сервисам. Они должны быть привязаны к
AdminServer.
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 57
16. Запускаем инсталляцию и ждем окончания.
17. По окончанию создания можно запускать сервис Veridata.
[oracle@gg1day bin]$ cd
/u01/app/oracle/product/fmw1213/user_projects/domains/veridata_domain/
[oracle@gg1day veridata_domain]$ ./startWebLogic.sh
18. Для работы нам понадобится 2 агента: один для orcl1 (gg1), второи
для orcl2 (gg2).
Следующии шаг – это инсталляция stage-агентов. Для этого запускаем
инсталляцию veridata:
java -jar fmw_12.1.3.0.0_ogg.jar
19. При запросе пути указываем
/u01/app/oracle/product/veridata12.1.3_stage1
20. В окне типов инсталляции указываем "Oracle GoldenGate Veridata
Agent":
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 58
21. Дожидаемся окончания инсталляции.
22. Повторяем на GG2
23. После того как stage-агенты проинсталлированы необходимо
выполнить их deploy. По сути это выполнение скрипта, которыи создает
отдельныи экземпляр агента под свою базу данных.
24. Запускаем следующие команды:
export JAVA_HOME=/usr/java/jdk1.7.0_67
cd /u01/app/oracle/product/veridata12.1.3_stage1/veridata/agent/
[oracle@gg1 agent]$ ./agent_config.sh /u01/app/oracle/product/veridata12.1.3_deploy
Successfully deployed the agent.
25. Теперь необходимо сконфигурировать агенты их и запустить их.
Конфигурация осуществляется редактированием фаи ла
/u01/app/oracle/product/veridata_agent_deploy/agent.properties. В поставке
есть фаи лы agent.properties.sample, которые и нужно взять за основу
26. Для gg2 введем следующие параметры:
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 59
server.port=9001
database.url=jdbc:oracle:thin:@localhost:1521/orcl2
server.jdbcDriver=ojdbc7.jar oracle.xdb_12.1.0.jar
27. Для Oracle gg1 введем следующие параметры
server.port=9001
database.url=jdbc:oracle:thin:@localhost:1521:orcl1
server.jdbcDriver=ojdbc7.jar oracle.xdb_12.1.0.jar
28. На обеих серверах запустим агента.
[oracle@gg1day ~]$ cd /u01/app/oracle/product/veridata12.1.3_deploy
[oracle@gg1day veridata_agent_deploy]$ export JAVA_HOME= /usr/java/jdk1.7.0_67
[oracle@gg1day veridata_agent_deploy]$ ./agent.sh start
[oracle@gg1day veridata_agent_deploy]$ tail -f logs/veridata-agent.log
[VERIAGT-BOOT] INFO Looking for home directory.
[VERIAGT-BOOT] INFO Found bootstrap class in
file:/u01/app/oracle/product/veridata_agent/veridata/agent/JavaAgent.jar!/com/goldengat
e/veridata/agent/Bootstrap.class.
[VERIAGT-BOOT] INFO Home directory:
/u01/app/oracle/product/veridata_agent/veridata/agent
[VERIAGT-BOOT] INFO Preparing classpath.
[VERIAGT-BOOT] INFO Driver location:
/u01/app/oracle/product/veridata_agent_deploy/drivers
[VERIAGT-BOOT] INFO Drivers to load: ojdbc7.jar oracle.xdb_12.1.0.jar
[VERIAGT-BOOT] INFO Classpath:
[VERIAGT-BOOT] INFO
/u01/app/oracle/product/veridata_agent/veridata/agent/JavaAgent.jar
[VERIAGT-BOOT] INFO
/u01/app/oracle/product/veridata_agent/oracle_common/modules/oracle.xdb_12.1.0.jar
[VERIAGT-BOOT] INFO
/u01/app/oracle/product/veridata_agent/oracle_common/modules/oracle.jdbc_12.1.0/ojdbc7.
jar
[VERIAGT-BOOT] INFO /u01/app/oracle/product/veridata_agent/veridata/agent/agent-
manifest.jar
[VERIAGT-BOOT] INFO Initializing.
[VERIAGT-BOOT] INFO Invoking startup method: public static void
com.goldengate.veridata.agent.VeridataAgent.main(java.lang.String[])
2014-07-24 07:11:10.209 NOTIFICATION OGGV-60150 Configuring logging.
2014-07-24 07:11:10.339 NOTIFICATION OGGV-60151 Config file for logger is
/u01/app/oracle/product/veridata_agent_deploy/config/odl.xml
2014-07-24 07:11:10.379 NOTIFICATION OGGV-60001: Veridata Agent Version 12.1.3.0.0
OGGVDT_12.1.3.0.0_PLATFORMS_140616.1904 built on Mon, 16 Jun 2014 19:38:59 -0700
2014-07-24 07:11:10.381 NOTIFICATION OGGV-60002 Veridata Agent starting on gg1day.local
port 9001
Server gg1day.local:9001 starting
29. После запуска агентов можно идти и конфигурировать сравнение в
интерфеи се Veridata, но перед эти нужно создать пользователя и наделить
его правами.
30. Адрес консоли для серверав
http://gg1day:7001/console
31.
НАСТРОЙКА СВЕРКИ ДАННЫХ С ПОМОЩЬЮ VERIDATA
Страница 61
Запускаем создание домена
Используемые возможности GoldenGate 12c.
Support for Oracle 12c Multitenant Databases. GoldenGate 12c supports capture
from multiple pluggable databases with a single capture process as well as
applying to pluggable databases (each with its own dedicated apply). Standard
three-part naming conventions allow data to be mapped between multitenant
and standalone databases.
Credential Store GoldenGate 12c now employs a credential store to maintain
encrypted database passwords and user IDs and associate them with an alias. It is
the alias, not the actual user ID or password that is specified in a command or
parameter file and no user input of an encryption key is required. The credential
store is implemented as an auto login wallet within the Oracle Credential Store
Framework (CSF).
Integrated Replicat. In integrated mode, available for Oracle databases of version
11.2.0.4 or later, a single Replicat configuration leverages apply processing
functionality that is available within the Oracle database. Integrated Replicat
enables heavy workloads to be partitioned automatically among parallel apply
processes that apply multiple transactions concurrently while preserving the
integrity (computes Primary and Foreign Key Relationships) and atomicity of the
source transaction. Parallelism is increased or decreased dynamically as needed.
Default Discard File. Parameter files no longer need to specify a discard file for
replication errors. A file will automatically be created in the dirrpt directory and s
named after the process that created it with a dsc extension (i.e. <process
name>.dsc).