Oracle GoldenGate学习笔记
1.Oracle GoldenGate的体系结构
Oracle GoldenGate(OGG)是一种基于日志的结构化数据复制方式,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步,双活。
OGG体系结构如下:
*Manager* *Manager*
*Extract* *Data Pump* *Replicat*
Source Database -----------> Loacl Trail -------------> Remote Trail ------------> Target Database
------------------------------------------------------ ------------------------------------------
Source Server Target Server
物理结构可分为源端(Source Server),目标端(Target Server).
逻辑结构可分为数据抽取进程(Extract),传输进程(Data Pump),复制进程(Replicat).
OGG各个进程的作用:
进程统一由管理进程(Manager)管理。
抽取进程(Extract)将Redo日志或归档日志作为数据源,当其发生变化时抽取进程会将主键字段和变化字段(如果是既无主键又无唯一索引的表就会抽取全部字段)形成本地的Trail文件(Local Trail)。
传输进程(Data Pump)根据目标端的IP和端口配置将本地Trail文件发送至目标端,生成远程Trail文件(Temote Trail)。
复制进程(Replicat)根据远程Trail文件反向生成SQL语句在目标数据库中执行。
OGG要求源端数据库必须开启归档模式,以保证正常获取归档数据。
针对既无主键又无唯一索引的表,OGG的处理方式为:
一是打开数据最小附加日志开关: alter database add supplemental log data.
二是增加单表级别的表结构字段信息的获取: add trandata.
这两项操作可以保证所用的表都能正确抽取及复制。
2.Oracle GoldenGate 12c下载地址
进入Oracle官方网址www.oracle.com,选择Downloads/Middleware/GoldenGate
http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html
选择下面的下载选项:
Oracle GoldenGate 12.2.0.1.1 for Oracle on Linux x86-64 (454 MB)
下载文件: fbo_ggs_Linux_x64_shiphome.zip
安装和配置可以参考Oracle官方在线文档:
http://docs.oracle.com/goldengate/c1221/gg-winux/index.html
http://docs.oracle.com/goldengate/c1221/gg-winux/GIORA/GUID-3108B63B-F2A2-446E-8006-D685C8E9B3A3.htm#GIORA110
3.Oracle GoldenGate安装
Oracle GoldenGate安装很简单,但首先需要安装Oracle数据库,安装方法参考Oracle数据库安装文档。
本例安装OGG的环境:
操作系统: Redhat Enterprise Linux 7.3
数据库: Oracle 12c 12.1.0.2
OGG版本: Oracle GoldenGate 12c 12.2.0.1.1
需要设置Oracle数据库的全局变量:
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1;
export ORACLE_SID=sales;
建立OGG的安装目录:
# mkdir /u01/app/ogg
# chown -R oracle /u01/app/ogg
# chmod -R 775 /u01/app/ogg
设置OGG的全局变量:
export PATH=$ORACLE_HOME/bin:/u01/app/ogg/12.2.0:$PATH;
export LD_LIBBARY_PATH=$ORACLE_HOME/lib;/u01/app/ogg/12.2.0:/lib:/usr/lib;
然后将Oracle GoldenGate安装包解压,在oracle用户下运行安装程序即可.
# unzip fbo_ggs_Linux_x64_shiphome.zip
# su - oracle
$ export LANG=""
$ cd /fbo_ggs_Linux_x64_shiphome/Disk1
$ ./runInstaller
Software Location: 775 /u01/app/ogg/12.2.0 -- OGG软件的安装位置
Database Location: /u01/app/oracle/product/12.1.0/db_1 -- 需要同步的数据库的位置
在源端与目标端均需要安装.
安装好后在安装目录执行ggsci即可运行Oracle GoldenGate工具:
$ cd /u01/app/ogg/12.2.0
$ ggsci
GGSCI> info all
GGSCI> start manager
在Oracle中创建OGG访问的账号,在源端与目标端均需要创建.
$ sqlplus / as sysdba;
SQL> create user ogg identified by ogg;
SQL> grant connect,resource,unlimited tablespace to ogg;
SQL> grant unlimited tablespace to ogg;
SQL> grant execute on utl_file to ogg;
SQL> grant dba to ogg;
进入OGG命令界面,确认能访问Oracle数据库.
$ cd /u01/app/ogg/12.2.0
$ ggsci
GGSCI (rhel7a) 1> dblogin userid ogg
Password:
Successfully logged into database.
4.Oracle GoldenGate源端系统配置
(1).数据库开启归档模式
$ sqlplus / as sysdba;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database add supplemental log data; -- 添加附加日志
SQL> alter database force logging; -- 强制记录日志
SQL> alter datebase open;
(2).添加需要同步的表
语法结构:
ADD SCHEMATRANDATA schema [ALLCOLS | NOSCHEDULINGCOLS]
ADD TRANDATA [container.]schema.table [, COLS (columns)] [, NOKEY] [, ALLCOLS | NOSCHEDULINGCOLS]
例子:
$ cd /u01/app/ogg/12.2.0
$ ggsci
GGSCI> dblogin userid ogg
GGSCI> add trandata astt.*
(3).编辑源端系统配置参数.
管理器配置参数:
GGSCI (rhel7a) 1> edit param mgr
PORT 7809
日志提取配置参数:
GGSCI (rhel7a) 1> edit params extastt
EXTRACT extastt
USERID ogg, PASSWORD ogg
EXTTRAIL /u01/app/ogg/12.2.0/dirdat/lt
TABLE astt.*;
数据传输配置参数:
GGSCI (rhel7a) 1> edit params pumpastt
EXTRACT pumpastt
USERID ogg, PASSWORD ogg
RMTHOST 192.168.1.72, MGRPORT 7809
RMTTRAIL /u01/app/ogg/12.2.0/dirdat/rt
TABLE astt.*;
(4).添加源端系统进程.
(4.1).添加提取主进程(Adding the Primary Extract):
DBLOGIN USERIDALIAS alias
ADD EXTRACT group name
{, TRANLOG | , INTEGRATED TRANLOG}
{, BEGIN {NOW | yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]} | SCN value}
[, THREADS n]
(4.2).添加Trail文件(Add the Local Trail):
ADD EXTTRAIL pathname, EXTRACT group name
(4.3).添加传输进程(Add the Data Pump Extract Group):
ADD EXTRACT group name, EXTTRAILSOURCE trail name
(4.4).添加远程Trail文件(Add the Remote Trail):
ADD RMTTRAIL pathname, EXTRACT group name
例子:
$ ggsci
add extract extastt, tranlog, begin now
add exttrail /u01/app/ogg/12.2.0/dirdat/lt, extract extastt
add extract pumpastt, exttrailsource /u01/app/ogg/12.2.0/dirdat/lt
add rmttrail /u01/app/ogg/12.2.0/dirdat/rt, extract pumpastt
start extract extastt
start extract pumpastt
源端系统打开防火墙端口:1521,7809.
5.Oracle GoldenGate目标端系统配置
(1).修改Oracle系统参数,允许执行OGG复制.
$ sqlplus / as sysdba;
SQL> alter system set enable_goldengate_replication=true scope=both;
(2).编辑目标端系统配置参数.
管理器配置参数:
GGSCI (rhel7b) 1> edit param mgr
PORT 7809
DYNAMICPORTLIST 7810-7820 --远程队列端口
GLOBALS配置参数:
GGSCI (rhel7b) 1> edit params ./GLOBALS
CHECKPOINTTABLE ogg.checkpoint
数据复制配置参数:
GGSCI (rhel7b) 1> edit params repastt
REPLICAT repastt
USERID ogg, PASSWORD ogg
ASSUMETARGETDEFS
MAP astt.*, TARGET astt.*;
(3).添加目标端系统进程.
$ ggsci
dblogin userid ogg
add checkpointtable ogg.checkpoint -- 如果已存在需删除 delete checkpointtable ogg.checkpoint
add replicat repastt, exttrail /u01/app/ogg/12.2.0/dirdat/rt, checkpointtable ogg.checkpoint
start replicat repastt
目标端系统打开防火墙端口:1521,7809,7810-7820.
6.测试同步
在源端数据库的表中插入数据.
检查源端ogg的dirdat目录中是否有生成提取文件.
检查目标端ogg的dirdat目录中是否有接收到文件.
检查目标端数据库中是否已同步数据.
7.重新安装OGG.
先停止OGG的进程
$ ggsci
stop extastt
stop pumpastt
stop mgr
删除ogg目录所有文件,修改下inventory.xml,去掉OGG的HOME配置即可.
$ cd /u01/app
$ rm -r ogg
$ cd /u01/app/oraInventory/ContentsXML
$ vi inventory.xml
8.查看错误方法及常见错误信息
如OGG的进程有中断,可以通过命令查看错误信息:
$ ggsci
view report repastt
常见错误信息:
(1).参数配置错误
OGG-00041 Data source not specified
检查参数是否拼写错误.
(2).远程主机防火墙未打开,或动态队列端口配置有问题
OGG-01224 TCP/IP error 113 (No route to host), endpoint: 192.168.1.72:7820
一般OGG的DUMP进程会从管理端口7809后面寻找远程主机动态端口,须保证远程主机动态队列端口设置正确,防火墙有开放端口.