• OGG FOR BIGDATA 安装(修正)


    参考: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 #启动复制进程
















  • 相关阅读:
    Dynamic Shortest Path CodeForces
    New task CodeForces
    New Roads CodeForces
    Music in Car CodeForces
    互联网思维体系--史上最全的互联网思维精髓总结
    OpenGL Shader Key Points (3)
    Netfilter的使用和实现
    数据包接收系列 — IP协议处理流程(二)
    数据包接收系列 — IP协议处理流程(一)
    数据包接收系列 — NAPI的原理和实现
  • 原文地址:https://www.cnblogs.com/skyrim/p/7456182.html
Copyright © 2020-2023  润新知