Goldengate抽取ORACLE 數據 到 Hbase

一、        軟件版本說明:java

Goldengate 12c  12.2.0.1 forOracle (源端 sql

Goldengate 12c  12.2.0.1  for Bigdata ( 目標端)shell

Oracle 11g 11.2.0.4.0 (oracle 數據庫必須是11.2.0.4以後的版本,以前的oracle 數據庫版本不支持ogg 12c )數據庫

HBase 1.1.2bash

Java 1.8.0_91session

二、        機器IP 說明oracle

源端IP地址(192.168.45.176安裝  Oracle 11g 11.2.0.4  Goldengate 12c app

目標端 IP地址(192.168.45.175),安裝 hbase,Goldengate 12c ,軟件安裝jvm

hbase已採用ambari 進行安裝,安裝過程不做詳細說明,在此主要說明下各軟件的安裝目錄,以及使用的端口。ide

 

Oracle 12c  for Oracle 192.168.45.176 安裝目錄爲:/home/oracle/oggdb

Oracle 12c for bigdata  (192.168.45.175)    安裝目錄爲:/ogg

Hbase 安裝目錄: /usr/hdp/2.4.2.0-258/hbase

 

三、        源端(192.168.45.176 的配置

#鏈接數據庫

sqlplus / as sysdba

SQL> shutdownimmeidate;

SQL> startup mount;

#開啓歸檔日誌

SQL> alter database archivelog;

SQL> archive log list  

#開啓數據庫級日誌

SQL> alter database force logging;

#開啓 goldengate 複製功能(注:此參數必須開啓,oracle 11.2.0.4 以後的數據庫才支持此參數

SQL> alter system set enable_goldengate_replication=true scope=both;

#關閉 垃圾回收站

SQL> alter system set recyclebin=off scope=spfile;

#開啓數據庫

SQL> alter databaseopen;

#建立ogg 管理用戶

SQL>  create user oggidentified by ogg account unlock;

SQL> grant execute on utl_file to ogg;

 SQL>grant restricted session to ogg;

 SQL> grant dba to ogg

 

進入源端(192.168.45.176OGG 目錄,配置數據初始化。

# cd /home/oracle/oggdb

#進入ogg

[oracle@sy-bd-061 oggdb]$ ./ggsci

#配置源端mgr進程

GGSCI (oracle) 10> edit params mgr

PORT 7809

#配置同步用戶

GGSCI (oracle) 7> dblogin userid ogg,password ogg

Successfully logged into database.

#scott用戶下的全部表開啓附加日誌

GGSCI (oracle) 8> add trandata scott.*

#源端配置initload extract 進程

GGSCI (oracle) 8> add extract fafainih, sourceistable

EXTRACT added.

            #配置extract進程 fafainie 參數

            extractfafainih

useridogg,password ogg

rmthost192.168.45.175,mgrport 7809

--rmttaskreplicat,group fafainir

RMTFILE./dirdat/hh

tablescott.*;

 

四、        目標 端的配置。(192.168.45.175)

#在用戶家目錄下的 ~/.bash_profile中配置用戶的JAVA_HOME,以及LIB_PATH 環境變量。

exportJAVA_HOME=/usr/java/jdk1.8.0_91/jre/

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/java/jdk1.8.0_91/jre/lib/amd64/libjsig.so:/usr/java/jdk1.8.0_91/jre/lib/amd64/server/libjvm.so:/usr/java/jdk1.8.0_91/jre/lib/amd64/server:/usr/java/jdk1.8.0_91/jre/lib/amd64

#使新加入的環境變量生效

source ~/.bash_profile

#進入 OGG安裝目錄

cd  /ogg

#複製 hbase對應的配置文件。

cp AdapterExamples/big-data/hbase/*   dirprm/

cd /ogg/dirprm

 

[root@sy-bd-060 dirprm]# vi hbase.props

 

 

gg.handlerlist=hbase

 

gg.handler.hbase.type=hbase

gg.handler.hbase.hBaseColumnFamilyName=cf

gg.handler.hbase.keyValueDelimiter=CDATA[=]

gg.handler.hbase.keyValuePairDelimiter=CDATA[,]

gg.handler.hbase.encoding=UTF-8

gg.handler.hbase.pkUpdateHandling=abend

gg.handler.hbase.nullValueRepresentation=CDATA[NULL]

gg.handler.hbase.authType=none

gg.handler.hbase.includeTokens=false

 

gg.handler.hbase.mode=tx

 

goldengate.userexit.timestamp=utc

goldengate.userexit.writers=javawriter

javawriter.stats.display=TRUE

javawriter.stats.full=TRUE

 

gg.log=log4j

gg.log.level=INFO

 

gg.report.time=30sec

 

#配置hbase 所用庫的路徑

gg.classpath=/usr/hdp/2.4.2.0-258/hbase/lib/*:/usr/hdp/2.4.2.0-258/hbase/conf/:/usr/hdp/2.4.2.0-258/hadoop/client/*

 

javawriter.bootoptions=-Xmx512m -Xms32m-Djava.class.path=ggjava/ggjava.jar

 

 

#進入ogg

cd  /ogg

./ggsci

GGSCI (hbase) 2> edit params mgr

Port 7809

#配置複製進程

GGSCI (hbase) 5> add replicat irhbase, specialrun

SPECIALRUN

END RUNTIME

EXTFILE ./dirdat/hh

TARGETDB LIBFILE libggjava.so SETproperty=dirprm/hbase.props

REPORTCOUNT EVERY 1 MINUTES, RATE

GROUPTRANSOPS 10000

MAP scott.*, TARGET BDTEST.*;

 

五、        源端(192.168.45.176)

cd /home/oracle/oggdb

./ggsci

#啓動fafainie 進程

GGSCI (oracle) 1> start fafainih

#查看進程的執行狀況

GGSCI (oracle) 2> view report fafainih

 

 

 

六、        目標端(192.168.45.175)

cd /ogg

 #啓動複製進程

./replicat paramfile ./dirprm/irhbase.prm reportfile ./dirrpt/irhbase.rpt -p INITIALDATALOAD

#進入hbase 環境

Hbase shell

wKioL1gtNrvTaOBnAACBDsoujQ8364.png-wh_50

#查看錶中的數據

wKiom1gtNryBFt4BAAE5PKd9tDQ678.png-wh_50

發現表中的數據已經存在,說明oracle 數據成功加載至 hbase.

源端(192.168.45.176)配置數據的動態抓取

cd  /home/oracle/oggdb

     sqlplus / as sysdba

     SQL> @marker_setup

       #在如下提示中輸入:ogg

Enter Oracle GoldenGate schema name:ogg

    #建立OGG表空間,授予OGG用戶相應的權限

SQL> CREATE TABLESPACE TBS_OGG DATAFILE '/home/oracle/app/oracle/oradata/oggdb/tbs_ogg_01.dbf'SIZE 2G AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;

Tablespace created.

SQL> alter user ogg DEFAULT TABLESPACE TBS_OGG;

User altered.

SQL> grant connect,resource,unlimited tablespace to ogg;

Grant succeeded.

 

SQL> @ddl_setup.sql 

#在如下提示中:輸入ogg

Enter Oracle GoldenGate schema name:ogg

 

SQL> @role_setup

  # 在如下提示中:輸入ogg

Enter GoldenGate schema name:ogg

SQL> GRANT GGS_GGSUSER_ROLE TO OGG; 

 

#配置OGG 日誌抓取進程

cd  /home/oracle/oggdb

./ggsci

 

#源端建立OGG 抽取進程

GGSCI (oracle) 1> add extract scotthb, tranlog, begin now

 

# 指定抽取進程trail文件的位置

GGSCI (oracle) 2> add rmttrail /ogg/dirdat/ha,extract scotthb   

# 編輯 scotthb 進程參數

GGSCI (oracle) 3> edit params scotthb

  extract scotthb

  userid ogg,password ogg

  rmthost 192.168.45.175, mgrport 7809

  rmttrail /ogg/dirdat/ha

  discardfile /home/oracle/oggdb/dirrpt/trail.dsc,append,megabytes 100

  ddl include mapped

table scott.*;

7、目標端(192.168.45.175)配置數據複製進程

       cd /ogg

        ./ggsci

        #配置全局參數

 GGSCI (hbase) 1> edit params ./GLOBALS

  ggschema ogg

  checkpointtable ogg.chkpnt_fafa

       #配置解析進程

GGSCI (hbase) 2> add replicat rscott,exttrail /ogg/dirdat/ha

      #編輯解析進程參數

 GGSCI (hbase) 3> edit params  rscott

       REPLICAT rscott

-- Trail file for this example is located in"AdapterExamples/trail" directory

-- Command to add REPLICAT

-- add replicat rhbase, exttrail AdapterExamples/trail/tr

TARGETDB LIBFILE libggjava.so SET property=dirprm/hbase.props

REPORTCOUNT EVERY 1 MINUTES, RATE

GROUPTRANSOPS 10000

MAP scott.*, TARGET bdtest.*;

 

8、源端(192.168.45.176)啓動抓取進程

cd  /home/oracle/ogdb

./ggsci

GGSCI (oracle) 1> start scotthb

9、 目標端(192.168.45.173)啓動複製進程

cd /home/oracle/oggdb

./ggsci

GGSCI (kafka) 1> start rscott

 

至此,整個配置過程完成,配置完成後,能夠經過在源端(192.168.45.176)中的oracle 數據庫中,進行DML操做,測試新變化的數據,是否能同步到hbase。

10、源端數據庫作測試(192.168.45.176)

sqlplus / as sysdba

SQL> Alter user scott account unlock;

SQL> conn scott/tiger

#向scott.dept表中新插入一條數據

SQL> insert into scott.deptvalues(50,'DEVELOP','SHANGHAI');

SQL> commit;

 

11、在目標端(192.168.45.175)上查看數據

Hbase shell

wKioL1gtNr3CGvdmAAGWB0sShGo297.png-wh_50

在hbase中,已經能夠查詢到新增長的數據。

 

12、在源端(192.168.45.176)修改oracle 數據. 

sqlplus / as sysdba

           SQL> update scott.dept set loc='HANGZHOU'where deptno=50;

SQL> commit;

13、在目標端(192.168.45.175) 查看數據

Hbase shell

wKioL1gtNr7SezLaAAF3HmJMYYU297.png-wh_50

發現hbase 數據對應的記錄已經相應的修改。

相關文章
相關標籤/搜索