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 ASSU
MetaRGETDEFS 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后面寻找远程主机动态端口,须保证远程主机动态队列端口设置正确,防火墙有开放端口.