参考:http://docs.oracle.com/goldengate/bd1221/gg-bd/GADBD/toc.htm

一、环境介绍

源:centos6.5 oracl
e 11.20.4   OGG版本:12.2.0.1.1

目标:OGG 版本Version 12.2.0.1

二、配置源端数据库

1.1 创建OGG用户并授权
  1. create user ggmgr identified by ggmgr defaulttablespace DATA_OL;
  2. grant connect,resource,unlimited tablespace to ggmgr;
  3. grant execute on utl_file to ggmgr;
  4. grant select any dictionary,select any table to ggmgr;
  5. grant alter any table to ggmgr;
  6. grant flashback any table to ggmgr;
  7. grant execute on DBMS_FLASHBACK to ggmgr;
  8. GRANT execute on DBMS_CAPTURE_ADM to ggmgr ;

1.2 开启附加日志

1.2.1 日志简介
ORALCE支持三种附加日志:
  • 数据库级别:包括最小(Minimal)、支持所有字段(all)、支持主键(primary key)、支持唯一键(unique)、支持外键(foreign               key)。要使用OGG,至少要开启最小级别。是用户级别附加日志和表级别附加日志的基础。
  • 用户级别:使用OGG DDL抽取功能时需要开启.
  • 表级别  :必须开启表级别附加日志,除非启用了用户级别附加日志。
1.2.2 开启附件日志
检查补充日志是否开启,检查强制日志模式:
  1. SQL> SELECT supplemental_log_data_min, force_logging FROM v$database;
  2. SUPPLEMENTAL_LOG_DATA_MIN FORCE_LOGGING
  3. ------------------------- -------------
  4. YES NO
开始补充日志和强制日志
alter database add supplemental log data(Minimal,all,primary key,unique,foreign key);
为了使用OGG for bigdata,至少要开启primary key级别:
  1. alter database add supplemental log data;
  2. ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;
  3. ALTER DATABASE FORCE LOGGING;
1.2.3 设置允许OGG复制
该参数从这个参数在11.2.0.4和12.1.0.2以后才出现.
  1. ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;

三、配置抽取端OGG

3.1 设置环境变量

    编辑.bash_profile,加入ORACLE_HOME和ORACLE_SID及LD_LIBRARY_PATH:
  1. export ORACLE_BASE=/u01/app/oracle
  2. export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1
  3. export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  4. export ORACLE_SID=orcl
  5. export PATH=$PATH:$ORACLE_HOME/bin:$LD_LIBRARY_PATH
或者在抽取进程配置文件中标明:
  1. setenv(NLS_LANG = "AMERICAN_AMERICA.UTF8")
  2. SETENV(ORACLE_HOME = "/u01/app/oracle/product/11.2.0.4/dbhome_1")
  3. SETENV(ORACLE_SID = "orcl")

3.2 安装OGG

    使用OUI安装OGG或下载安装包解压到/u01/ogg.
1)用OUI安装OGG
用ORACLE用户执行runInstaller即可
2)用OUI静默安装
在解压目录下找到response/oggcore.rsp,修改:
  1. #如果机器上已经安装了ORACLE,则只添加以下几行即可.如果没有安装ORACLE,请先安装ORACLE或者ORACEL LIENT
  2. INSTALL_OPTION=11g
  3. SOFTWARE_LOCATION=/opt/ogg
  4. UNIX_GROUP_NAME=oinstall
然后执行
  1. ./runInstaller -silent -nowait -responseFile /opt/ogg/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp

3.2 创建子目录

    进入ogg的解压目录,执行./ggsci进入命令台,执行命令创建工作目录:
  1. GGSCI (OGGTEST) 1> create subdirs

3.3 添加表级别附加日志

  1. GGSCI (OGGTEST) 2>dblogin userid ggmgr,password ggmgr
  2. Successfully logged intodatabase.
  3. GGSCI (OGGTEST) 3> add trandata scott.dept
  4. Logging of supplemental redo dataenabled for table SCOTT.DEPT.
如果表没有主键,需要这样:
  1. GGSCI (OGGTEST) 3> add trandata scott.bouns,cols(ename),nokey
cols指定ename做为keycols,nokey表示忽略表上的主键,这样就能用keycols来匹配和过滤

3.4 配置mgr进程

配置管理进程mgr:
  1. GGSCI(OGGTEST) 1> edit param mgr
  2. PORT 7839
  3. DYNAMICPORTLIST 7840-7939
  4. --AUTOSTART ER *
  5. AUTORESTART EXTRACT *,RETRIES5,WAITMINUTES 3
  6. PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3
  7. LAGREPORTHOURS 1
  8. LAGINFOMINUTES 30
  9. LAGCRITICALMINUTES 45
MANAGER进程参数配置说明:
PORT:指定服务监听端口;这里以7839为例,默认端口为7809
DYNAMICPORTLIST:动态端口:可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标段的Collector、Replicat、GGSCI进程通信也会使用这些端口;
COMMENT:注释行,也可以用--来代替;
AUTOSTART:指定在管理进程启动时自动启动哪些进程;
AUTORESTART:自动重启参数设置:本处设置表示每3分钟尝试重新启动所有EXTRACT进程,共尝试5次;
PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过3天的trail文件进行删除。
LAGREPORT、LAGINFO、LAGCRITICAL:
定义数据延迟的预警机制:本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中。

启动mgr进程:starg mgr
查看mgr状态:info mgr

3.5 配置抽取进程

  1. GGSCI(OGGTEST) 12> add extract e_m157,tranlog,begin now #指定从log抽取,抽取时间是noe
  2. EXTRACTadded.
  3. GGSCI(OGGTEST) 14> add exttrail ./dirdat/em,extract e_m157,megabytes 50 #添加trail文件,
  4. Megabytes:指定队列大小,本处设置表示50M。
  5. GGSCI(OGGTEST) 14> edit param e_m157
  6. extract e_m157
  7. SETENV(ORACLE_SID="orcl")
  8. SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
  9. userid ggmgr, password ggmgr
  10. EXTTRAIL /opt/ogg/dirdat/em
  11. table ogg_owner.togg;
  12. TABLE scott.dept;#可以用scott.*
添加进程时,进程名要注意大小定

相关的语法:
ADD EXTRACT group name
{, TRANLOG | , INTEGRATED TRANLOG}
{, BEGIN {NOW | yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]} | SCN value}
[, THREADS n]
TRANLOG:指定把日志做为输入源
INTERRATED TRANLOG:指定把logming server的LCR作为输入源
BEGIN :NOW现在、时间、SCN
TRRADS N:RAC中指定节点
示例:
ADD EXTRACT finance, TRANLOG, BEGIN 2011-01-01 12:00:00.000000

3.6 配置传输进程

  1. GGSCI(OGGTEST) 2> add extract dpend,exttrailsource ./dirdat/em #添加 传输进程
  2. EXTRACT added.
  3. GGSCI(OGGTEST) 3> add rmttrail /opt/ogg/dirdat/em, EXTRACT DPEND #添加远程trail文件,即目标机tail文件位置
  4. RMTTRAIL added.
  5. GGSCI(OGGTEST) 4> edit params dpend #编辑传输进程配置文件
  6. EXTRACT dpend
  7. SETENV(NLS_LANG = "AMERICAN_AMERICA.UTF8")
  8. USERID ggmgr, PASSWORD ggmgr
  9. PASSTHRU
  10. RMTHOST 10.81.2.108, MGRPORT 7839, compress
  11. RMTTRAIL /opt/ogg/dirdat/em
  12. TABLE Scott.dept

3.7 创建定义文件

3.7.1 创建定义文件参数
  1. [oracle@OGGTEST ogg]$ vi /opt/ogg/dirdef/scott.def.prm
  2. defsfile ./dirdef/scott.def , purge
  3. userid ggmgr,password ggmgr
  4. table scott.*;
3.7.2 创建定义文件
  1. ./defgen PARAMFILE /opt/ogg/dirdef/scott.def.prm
然后把/opt/ogg/dirdef/scott.def这个文件复制到目标机的/opt/ogg/dirdef下

四、配置目标端OGG

4.1 安装ogg for bigdata

4.1.1 安装ogg for bigdata
解压OGG FOR BIGDATA 到/opt/ogg
然后创建工作目录:
./ggsci 
  1. ggsci>create subdirs

4.1.2 设置环境变量

添加环境变量:
  1. export LD_LIBRARY_PATH=/usr/java/jdk1.8.0_60/jre/lib/amd64/server/
路径是JRE中libjvm.so 和libjsig.so 所在的目录.

4.2 配置mgr进程

4.2.1 编辑mgr进程参数
  1. GGSCI(OGGTEST) 1> edit param mgr
  2. port 7839
  3. dynamicportlist 7809-7909
  4. lagreportminutes 10
  5. laginfoseconds 1
  6. purgeoldextracts ./dirdat/*, usecheckpoints, minkeephours 192
配置复制进程
REPLICAT进程参数配置说明:
ASSUMETARGETDEFS:假定两端数据结构一致使用此参数;
SOURCEDEFS:假定两端数据结构不一致,使用此参数指定源端的数据结构定义文件,该文件需要由GlodenGate工具产生。
MAP:用于指定源端与目标端表的映射关系;
MAPEXCLUDE:用于使用在MAP中使用*匹配时排除掉指定的表;
REPERROR:定义出错以后进程的响应,一般可以定义为两种:
ABEND,即一旦出现错误即停止复制,此为缺省配置;
DISCARD,出现错误后继续复制,只是把错误的数据放到discard文件中。
DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;
SQLEXEC:在进程运行时首先运行一个SQL语句;
GROUPTRANSOPS:将小交易合并成一个大的交易进行提交,减少提交次数,降低系统IO消耗。
MAXTRANSOPS:将大交易拆分,每XX条记录提交一次。
4.2.2 启动mgr
  1. ggsci>start mgr

4.3 配置HDFS handler

复制/opt/ogg/AdapterExamples/big-data/hdfs下的hdfs.props和rhdfs.prm到/opt/ogg/dirprm下
  1. cp /opt/ogg/AdapterExamples/big-data/hdfs/* /opt/ogg/dirprm
4.3.1 配置hdfs handler
编辑hdfs.props:
  1. [root@BFHT5 ogg]# vi dirprm/hdfs.props
  2. gg.handlerlist=hdfs --handler名称
  3. gg.handler.hdfs.type=hdfs --handler的类型
  4. #gg.handler.hdfs.includeTokens=true
  5. gg.handler.hdfs.maxFileSize=1g
  6. gg.handler.hdfs.rootFilePath=/user/oracle/gg --HDFS上的存储目录
  7. gg.handler.hdfs.fileRollInterval=0
  8. gg.handler.hdfs.inactivityRollInterval=0
  9. gg.handler.hdfs.fileSuffix=.txt
  10. gg.handler.hdfs.partitionByTable=true
  11. gg.handler.hdfs.rollOnMetadataChange=true
  12. gg.handler.hdfs.authType=none
  13. gg.handler.hdfs.format=delimitedtext --hdfs文件类型
  14. gg.handler.hdfs.format.includeColumnNames=true --包括列名
  15. gg.handler.hdfs.format.fieldDelimiter=CDATA[|] --字段分隔符
  16. gg.handler.hdfs.mode=tx --工作模式tx 事务 op操作
  17. goldengate.userexit.timestamp=utc
  18. goldengate.userexit.writers=javawriter
  19. javawriter.stats.display=TRUE
  20. javawriter.stats.full=TRUE
  21. gg.log=log4j
  22. gg.log.level=DEBUG --日志级别,可设5个级别,默认为INFO
  23. gg.report.time=30sec
  24. gg.classpath=/opt/cloudera/parcels/CDH/lib/hadoop/*:/opt/cloudera/parcels/CDH/lib/hadoop/lib/*:/opt/cloudera/parcels/CDH/lib/hadoop-hdfs/*:/etc/hadoop/conf/:/opt/cloudera/parcels/CDH/lib/hadoop/lib/native/*
  25. javawriter.bootoptions=-Xmx512m -Xms32m -Djava.class.path=ggjava/ggjava.jar
注意:gg.classpath要包括hdfs的库文件和core-site.xml路径

4.3.2 配置复制进程
编辑hdfs.prm
  1. [root@BFHT5 ogg]# vi dirprm/rhdfs.prm
  2. REPLICAT rhdfs --复制进程名
  3. setenv HADOOP_COMMON_LIB_NATIVE_DIR=/opt/cloudera/parcels/CDH/lib/hadoop/lib/native
  4. TARGETDB LIBFILE libggjava.so SET property=dirprm/hdfs.props --使用的hdfs handler配置文件
  5. SOURCEDEFS ./dirdef/scott.def --使用定义文件
  6. HANDLECOLLISIONS
  7. reperror default ,discard
  8. discardfile ./dirrpt/r_hive00000.dsc, append, megabytes 50 --错误数据写这里
  9. REPORTCOUNT EVERY 1 MINUTES, RATE
  10. GROUPTRANSOPS 10 --组提交
  11. MAP scott.*, TARGET scott.*;

4.3.3 添加复制进程
  1. ggsci>ADD REPLICAT rhdfs, EXTTRAIL /opt/ogg/dirdat/em
相关语法:
  1. ADD REPLICAT <group_name>
  2. [, INTEGRATED | COORDINATED [MAXTHREADS <number>]]
  3. {
  4. , SPECIALRUN |
  5. , EXTFILE <filename> |
  6. , EXTTRAIL <filename>
  7. }
  8. [, BEGIN {NOW | yyyy-mm-dd:hh:mm[:ss[.cccccc]]} |
  9. , EXTSEQNO <seqno>, EXTRBA <rba>]
  10. [, CHECKPOINTTABLE <owner.table> | NODBCHECKPOINT]
  11. [, PARAMS <parameter file>]
  12. [, REPORT <report file>]
  13. [, DESC "<description>"]
  14. [, CPU number]
  15. [, PRI number]
  16. [, HOMETERM device_name]
  17. [, PROCESSNAME process_name]
4.3.4 启动复制进程
  1. ggsci>start rhdfs
ggserr.log 和 dirrpt/R_HDFS_debug_log4j.log 分别可以看到ogg和hdfs的日志信息

4.3.5 检查抽取情况
    如果日志中没有报错,检查hdfs上相关目录,数据是否抽取过来:
hdfs dfs -ls /user/oracle/gg/scott.dept

4.4 配置 flume handler

4.4.1 配置flume handler
复制 /opt/ogg/AdapterExamples/big-data/flume下的 custom-flume-rpc.properties  flume.props  rflume.prm 到/opt/ogg/dirprm/下

编辑custom-flume-rpc.properties,改flume代理使用的主机\端口\IP
  1. [root@BFHT5 dirprm]# vi custom-flume-rpc.properties
  2. client.type = default
  3. hosts = bfht5
  4. hosts.bfht5 = 10.80.2.108:1111
  5. batch-size = 100
  6. connect-timeout = 20000
  7. request-timeout = 20000
编辑 flume.props:
  1. [root@BFHT5 dirprm]# vi flume.props
  2. gg.handlerlist = flumehandler --handler 名称
  3. gg.handler.flumehandler.type=flume --handler类型
  4. gg.handler.flumehandler.RpcClientPropertiesFile=custom-flume-rpc.properties --指定flume代理的配置文件
  5. gg.handler.flumehandler.mode=tx
  6. #gg.handler.flumehandler.maxGroupSize=100, 1Mb
  7. #gg.handler.flumehandler.minGroupSize=50, 500 Kb
  8. gg.handler.flumehandler.EventMapsTo=tx
  9. gg.handler.flumehandler.PropagateSchema=true
  10. gg.handler.flumehandler.includeTokens=false
  11. gg.handler.flumehandler.format.fieldDelimiter=,
  12. gg.handler.flumehandler.format.lineDelimiter=;
  13. gg.handler.flumehandler.format.includeColumnNames=true
  14. goldengate.userexit.timestamp=utc
  15. goldengate.userexit.writers=javawriter
  16. javawriter.stats.display=TRUE
  17. javawriter.stats.full=TRUE
  18. gg.log=log4j
  19. gg.log.level=INFO
  20. gg.report.time=30sec
  21. gg.classpath=dirprm/:/opt/cloudera/parcels/CDH/lib/flume-ng/lib/* --要包含flume的库
  22. javawriter.bootoptions=-Xmx512m -Xms32m -Djava.class.path=ggjava/ggjava.jar

编辑rflume.prm:
  1. [root@BFHT5 dirprm]# vi rflume.prm
  2. REPLICAT rflume
  3. TARGETDB LIBFILE libggjava.so SET property=dirprm/flume.props
  4. SOURCEDEFS ./dirdef/scott.def
  5. HANDLECOLLISIONS
  6. ALLOWNOOPUPDATES
  7. discardfile ./dirrpt/r_hive00000.dsc, append, megabytes 50
  8. REPORTCOUNT EVERY 1 MINUTES, RATE
  9. GROUPTRANSOPS 10
  10. MAPEXCLUDE uatxdgl.USER_INFO;
  11. MAPEXCLUDE uatxdgl.BACKDETAILS_INFO;
  12. MAPEXCLUDE UATXDGL.ASSISTINVESTIGATE;
  13. MAP scott.dept, TARGET scott.dept;
4.4.2 添加复制进程
  1. ggsci>ADD REPLICAT rflume, EXTTRAIL /opt/ogg/dirdat/em
4.4.3 启动复制
  1. GGSCI>start rflume

五、初始化数据

5.1 停止复制进程

GGSCI>stop rflume

5.2 源库查询当前SCN

  1. SQL> select dbms_flashback.get_system_change_number from dual;
  2. GET_SYSTEM_CHANGE_NUMBER
  3. ------------------------
  4. 3173410

5.3 sqoop从SCN 3173410开始抽取数据到HDFS

sqoop --import -e 'select * from scott.dept as of scn 3173410' ....

5.4 设置复制端使用的文件和SCN,启动复制

  1. alter replicat fscott,extseqno 2,extrba 0 #使用scn 3173410 时的trail文件
  2. start fscott NOFILTERDUPTRANSACTIONS, aftercsn 3173410 #启动复制进程












OGG FOR BIGDATA 安装(修正)的更多相关文章

  1. OGG For Bigdata To Kafka同步问题处理

    一.问题报错 -- :: ERROR OGG- Java or JNI exception: oracle.goldengate.util.GGException: Error detected ha ...

  2. OGG FOR BigData(Hive) GoldenGate 性能测试

    版本信息: Oracle GoldenGate Command Interpreter Version 12.2.0.1.160419 OGGCORE_12.2.0.1.0OGGBP_PLATFORM ...

  3. 安装ogg软件报错:[INS-75012]Sofware Location specified is already an existing Oracle

    1.安装ogg软件时报错: [INS-75012]Sofware Location specified is already an existing Oracle 2.根据报错,是说我们选择ogg软件 ...

  4. OGG 18.1 for mysql远程捕获测试

    Ogg18.1 remote capture要求mysql为5.7版本,只能从linux远程捕获mysql on windows or linux,且不支持DDL捕获.支持远程mysql为commun ...

  5. OGG 从Oracle备库同步数据至kafka

    OGG 从Oracle备库同步数据至kafka Table of Contents 1. 目的 2. 环境及规划 3. 安装配置JDK 3.1. 安装jdk 3.2. 配置环境变量 4. 安装Data ...

  6. 在RAC上部署OGG并配置OGG高可用

    目录 简介 环境信息 安装OGG 配置数据库 开启数据库级别日志补充 在dbdc1为OGG单独创建TNS 创建OGG管理用户及其表空间 配置OGG 设置OGG全局参数 Source端,OGG设置, 配 ...

  7. 10.Oracle Golden Date(ogg)的搭建和管理

    一. GoldenGate 概述 GoldenGate现在是业内成熟的数据容灾与复制产品:GoldenGate是一种基于日志的结构化数据复制方式,它通过解析源数据库在线日志或归档日志获得数据的增删改变 ...

  8. oracle goldengate安装

    1.ftp工具上传ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip分别到source和target服务器 [oracle@localhost mnt]$ ll ...

  9. 【OGG】RAC环境下配置OGG单向同步 (四)

    [OGG]RAC环境下配置OGG单向同步 (四) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的 ...

随机推荐

  1. 聊聊iOS Keychain

    某天,小熊碰见这样一个错误 Couldn't update the Keychain Item问题处理 ,网上搜索了下网上很多解决方案,依然百撕不得骑姐.后来参考下面两篇文章.才发现是用法不正确,网上 ...

  2. block本质探寻一之内存结构

    一.代码——命令行模式 //main.m #import <Foundation/Foundation.h> struct __block_impl { void *isa; int Fl ...

  3. Delphi的idhttp报508 Loop Detected错误的原因

    一般是访问https时才出现“508 Loop Detected”,idhttp+IdSSLIOHandlerSocketOpenSSL,这个在上篇文章中讲过了. 由于该问题网上资料极少,连外文资料也 ...

  4. windbg调试虚拟机win7系统

    调试机:win10 1809 虚拟机: win7 windbg属性设置,在目标后面加上紫色字体参数:  "D:\Program Files\Debugging Tools for Windo ...

  5. PPAS可以安装分区表

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL基础知识与基本操作索引页     回到顶级页面:PostgreSQL索引页 [作者 高健@博客园  luckyjackg ...

  6. c++ 字符串转换

    字符分类函数 转换字符函数 字符串转换成数值 需清加#include<ctype.h> 函数名 功能 islower 测试是否小写字母, 是返回非零,否则返回零. isupper 测试是否 ...

  7. 07- django组件:中间件

    1.中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影 ...

  8. 9 README,全套代码

    BBS+ BLOG系统(仿博客园) 一.概要 欢迎您使用该BBS+BLOG系统,希望在您使用的过程中体验到便捷和愉快的使用感受,并对我们的软件提出您发现的问题和建议,谢谢. 联系邮箱:liangshu ...

  9. Kubernetes学习之路(八)之Kubeadm部署集群

    一.环境说明 节点名称 ip地址 部署说明 Pod 网段 Service网段 系统说明 k8s-master 192.168.56.11 docker.kubeadm.kubectl.kubelet ...

  10. python之打包、发布模块

    一.python中针对于写好的模块,并且比人也可以使用改模块,这样就可以以同意的打出来,让别人安装或者赋值过后可以更好的使用以及集成. 二.最近在学习python所以这里主要是记录一下python的打 ...