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 #啟動復制進程

















免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM