篇首语:本文由编程笔记#小编为大家整理,主要介绍了Goldengate抽取ORACLE 数据 到 Hbase相关的知识,希望对你有一定的参考价值。
1、 软件版本说明:
Goldengate 12c 12.2.0.1 forOracle (源端 )
Goldengate 12c 12.2.0.1 for Bigdata ( 目标端)
Oracle 11g 11.2.0.4.0 (注oracle 数据库必须是11.2.0.4之后的版本,之前的oracle 数据库版本不支持ogg 12c )
HBase 1.1.2
Java 1.8.0_91
2、 机器IP 说明
源端IP地址(192.168.45.176)安装 Oracle 11g 11.2.0.4 , Goldengate 12c
目标端 IP地址(192.168.45.175),安装 hbase,Goldengate 12c ,软件安装
hbase已采用ambari 进行安装,安装过程不作详细说明,在此主要说明下各软件的安装目录,以及使用的端口。
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
3、 源端(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.176)OGG 目录,配置数据初始化。
# cd /home/oracle/oggdb
#进入ogg
[[email protected] 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.*;
4、 目标 端的配置。(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
[[email protected] 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.*;
5、 源端(192.168.45.176)
cd /home/oracle/oggdb
./ggsci
#启动fafainie 进程
GGSCI (oracle) 1> start fafainih
#查看进程的执行情况
GGSCI (oracle) 2> view report fafainih
6、 目标端(192.168.45.175)
cd /ogg
#启动复制进程
./replicat paramfile ./dirprm/irhbase.prm reportfile ./dirrpt/irhbase.rpt -p INITIALDATALOAD
#进入hbase 环境
Hbase shell
#查看表中的数据
发现表中的数据已经存在,说明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
在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
发现hbase 数据对应的记录已经相应的修改。