大数据云时代,数据上云ETL已成了最基础,最根本,最必须的一个步骤。目前数据传输迁移的工具非常多,比如dataX,DTS,kettle等等。为了保证云上存储空间的有效利用和数据的整体唯一性,就没必要每天都上一份全量,故几乎所有数据上云的策略都是全量加增量的模式:即第一次上一份全量,后续每天只上增量,这样前一天的全量加上今天的增量就是今天的全量。
由此增量采集的工具选择和安装配置就显得尤为重要,这里我们说一下大数据增量采集OGG&Adapter的安装部署与相关配置

1. 简介

Oracle Golden Gate是Oracle旗下一款支持异构平台之间高级复制技术,是Oracle力推一种HA高可用产品,简称“OGG”,可以实现Active-Active 双业务中心架构

1.1. 目的

本文档描述OGG的相关配置和实际操作教程,旨在能够初步了解掌握OGG的原理使用和运维。

1.2. 定义、业务术语、缩略语

Oracle Golden Gate有源端和目标端,源端捕获日志发送到目标端应用,这个过程分为六步骤
·  捕获:实时捕获交易日志(已提交数据),包含DML和DDL,并可根据规则进行过滤
·  队列:把捕获的日志数据加载入队列(写入trail文件),这是可选项,为了提高安全性,怕网络传丢了。 也可以不入队列,直接从redo buffer传递给目标端
·  数据泵:将trail文件广播到不同的目标端
·  网络:从源网络压缩加密后传送到目的网络
·  接收队列:接收从源端传过来的trail文件
·  交付:把trail文件内容转换成SQL语句在目标库执行 双向复制:在把另一端重新配置成源端,即可实现双向复制,这就是Active-Active双业务中心
Golden Gate进程
·  Manager进程:这是GG全局主进程,它是GG守护进程统筹全局,它可以启动、监控、终止Golden Gate的其它进程,收集错误报告及事件,分配数据存储空间,发布阀值告警等,在源端和目标端有且只有一个Manager进程。
·  Extract进程:运行在源端的进程,实时捕获交易数据,可以直接在redo buffer捕获传递到目标端,也可以在redo buffer捕获先写入trail队列在传递到目标端。非Oracle库支持从数据表捕获数据。
·  Pump进程:运行在源端的进程,将源端产生的本地trail文件广播到不同的目标端,pump进程本质是extract进程的一种特殊形式,如果不使用trail文件,那么extract进程在捕获完交易日志后直接传递到目标端,生成远程trail文件。
·  Collector进程:运行在目标端的进程,专门接收从源端传过来的trail文件日志生成队列。
·  Delivery进程:运行在目标端的进程,通常我们也把它叫做replicat进程,是数据传递的最后一站,负责读取远程trail文件内容,解析为SQL语句在目标库上执行。

1.3. 原理特点

·  实时数据复制
·  异构平台数据同步
·  支持断点续传,不影响系统连续运行
·  高性能,属于轻量级软件
·  保证数据引用完整性和事物一致性
·  整合ETL Tools Message Service
·  灵活拓扑结构 1:1 1:N N:1 N:N 双向复制
·  复制冲突检测和解决
·  支持数据压缩和加密
·  TCP/IP WAN LAN
·  根据事务大小和数量自动管理内存
·  支持多活业务中心
·  以交易数据为单位复制,保证交易一致性
·  支持数据过滤和转换,可自定义基于表和行的过滤规则,实时在异构环境下转换数据

2. 安装使用

2.1. 下载安装

配置

       源端数据库192.168.1.111  实例名orcl   (IP非真实IP)目标数据库192.168.1.111  实例名orcl

安装OGG
需要下载两个文件,源端安装OGG,目标端安装Adapter
安装包下载
http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html
然后解压安装,选择静默安装

2.1.1. 源端安装

源端配置/response/oggcore.rsp文件

有两个需要注意的地方
INSTALL_OPTION=ORA11g --oracle版本是多少就填多少
UNIX_GROUP_NAME=oinstall --这个组名需要填对,可以通过ll命令查看文件夹属性组名,否则会报错,还有每次重新安装时都要把以前生成的文件全部del掉,不然会报错
静默安装步骤:
./runInstaller -silent -responseFile {YOUR_OGG_INSTALL_FILE_PATH}/response/oggcore.rsp
具体操作参见
https://help.aliyun.com/document_detail/28294.html?spm=5176.doc28291.6.593.mdVnrX

2.1.2. 目标端安装

目标端安装比较方便,解压Adapter出来即可。记得把整个文件夹目录以及包含文件的用户和组调成oracle用户下的,方便使用

2.2. 双端配置

2.2.1. 源端数据库配置

以dba身份进入数据库:sqlplus / as sysdba#创建独立的表空间,这个路径根据自己安装的oracle路径填写
create tablespace ATMV datafile '/home/oracle/app/ATMV.dbf' size 1000m autoextend on next 50m maxsize unlimited;#创建ogg_test(可自行设定)用户,密码为ogg_test(可自行设定),也可以不用创建新用户,但是一定要给使用OGG的用户赋予OGG需要使用的权限
create user ogg_test identified by ogg_test default tablespace ATMV;
#给ogg用户赋予权限以便ogg正常使用(有些权限在9i里没有)
GRANT CREATE SESSION ,ALTER SESSION , RESOURCE,CONNECT,SELECT ANY DICTIONARY,SELECT ANY TRANSACTION TO OGG_TEST;
GRANT FLASHBACK ANY TABLE,SELECT ANY TABLE TO OGG_TEST;
GRANT EXECUTE ON dbms_flashback to OGG_TEST;
#检查附加日志情况,若是返回YES则代表日志已开启最小补全日志,若不是YES,则执行下面的步骤,执行完之后要重新确认都返回YES(部分日志情况9i没有)
Select SUPPLEMENTAL_LOG_DATA_MIN, SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_UI, SUPPLEMENTAL_LOG_DATA_FK, SUPPLEMENTAL_LOG_DATA_ALL from v$database;
#增加数据库附加日志,可以指示数据库在日志中添加额外信息到日志流中,以支持基于日志的工具如ogg,帮助ogg目标端分析识别修改的数据
alter database add supplemental log data;
alter database add supplemental log data (primary key, unique,foreign key) columns;
#全字段模式,开启补全日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
#开启数据库强制日志模式,无论什么操作都进行redo的写入,一些nologging的操作也会写如日志
alter database force logging;
#添加主键附加日志
alter table sys.seq$ add supplemental log data (primary key) columns;
#执行marker_setup.sql 脚本,会让你填写用户名,这些脚本在ogg源端安装文件夹里
@marker_setup.sql
@ddl_setup.sql
@role_setup.sql
#执行脚本,开启DDL trigger
@ddl_enable.sql
#执行优化脚本
@ddl_pin ogg_test
#安装sequence support序列支持
@sequence.sql
#赋予角色权限
GRANT GGS_GGSUSER_ROLE to OGG_TEST;

2.2.2. 源端mgr配置

通过./ggsci 进入命令行模式
创建必须目录GGSCI>create subdirs
源端配置要配置好mgr(进程管理),extract(抽取进程)和pump(投递进程)
· 配置mgr
GGSCI> edit params mgr

PORT 7839  --端口号可以随意配置,本机传本机端口号要不同
DYNAMICPORTLIST  7840-8000     --允许的端口数量
AUTORESTART ER *, RETRIES 5, WAITMINUTES 3  --每隔x分钟自动开启进程
PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7
--trail文件推送位置,设置使用过后的trail文件的保留时间
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45   --必选的三个参数,出现report,info等的时间

· 启动mgr: start mgr
运行日志在dirrpt文件夹下
· 查看mgr状态:info mgr
· 查看mgr配置:view params mgr

2.2.3. 源端extract配置

· 配置并增加进程extract (用核心征管库举例HX)
GGSCI> add ext hxnl,tranlog, begin now --如果是9i则需要指定thread 1,thread 2
GGSCI> add extract ./dirdat/no , extract hxnl
GGSCI> edit params hxnl

extract hxnl
SETENV (ORACLE_SID="xxx")
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
Userid xxx,PASSWORD xxx     --这三个与源端数据库相同
REPORT AT 01:59
REPORTROLLOVER AT 02:00   --设定切换一个日志的时间和间隔
CACHEMGR, CACHESIZE 256MB --用于控制存放未提交事务的虚拟内存
EXTTRAIL ./dirdat/no
NUMFILES 3000
EOFDELAYCSECS 30 --读到日志文件末尾时的休眠时间,缩小增强实时性
GETTRUNCATES   --复制TRUNCATE操作
TRANLOGOPTIONS DBLOGREADER   --指定在解析数据库日志时所需要的特殊参数,本例指定登陆人
DYNAMICRESOLUTION         --动态处理解决
BR BRINTERVAL 2H , BRDIR BR --进程从恢复到其停止的时间点并恢复正常处理所需要的时间设定了一个时间上限
GETUPDATEBEFORES   --得到修改之前的值
NOCOMPRESSDELETES  --参数可以记录所有列删除值
TABLEEXCLUDE *.MLOG*;
TABLE  ogg_test.*;

2.2.4. 源端pump配置

· 配置并增加投递进程phxnl
GGSCI> add ext phxnl,exttrailsource ./dirdat/no
GGSCI> add rmttrail ./dirdat/no , extract phxnl
GGSCI> edit params phxnl

extract phxnl
SETENV (ORACLE_SID="xxx")
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
Userid xxx,PASSWORD xxx
REPORT AT 01:59
REPORTROLLOVER AT 02:00
CACHEMGR, CACHESIZE 256MB
FLUSHCSECS 30   --冲刷时间设定
NUMFILES 3000
EOFDELAYCSECS 30
RMTHOST xx.xx.xx.xxx,MGRPORT xxxx
RMTTRAIL ./dirdat/no
GETTRUNCATES
PASSTHRU   --必选参数,让OGG以直通模式运行,不必再从数据库查找表定义,故此参数要求双端的表名称,表结构必须一致
DYNAMICRESOLUTION
GETUPDATEBEFORES
NOCOMPRESSDELETES
TABLEEXCLUDE *.MLOG*;
TABLE  ogg_test.*;

2.2.5. 生成def表定义文件

· 编辑defgen
GGSCI> edit params defgen

DEFSFILE ./dirdef/ogg.def
USERID ogg, PASSWORD ogg
table ogg_test.*;
在shell中执行如下命令,生成ogg.def,并把这个ogg.def 拷贝到目标端dirdef下
./defgen paramfile ./dirprm/defgen.prm

2.2.6. 目标端配置并开启

· 解压Ada文件并运行./ggsci
GGSCI>create subdirs
· 配置mgr
GGSCI> edit param mgr

PORT 7809 -- 端口号可以随意配置
dynamicportlist 8100-8200
autorestart er *, retries 5, waitminutes 3
purgeoldextracts ./dirdat/*,usecheckpoints, minkeepdays 10
LAGREPORTHOURS 5
LAGINFOMINUTES 10
LAGCRITICALMINUTES 15

· 配置接收进程

GGSCI> edit param rhxnl
EXTRACT rhxnl
SOURCEDEFS ./dirdef/ogg.def
CUSEREXIT ./flatfilewriter.so CUSEREXIT PASSTHRU INCLUDEUPDATEBEFORES, PARAMS "./dirprm/rhxnl.properties"
TABLE ogg_test.*;

· 添加进程:ADD EXTRACT rhxnl, EXTTRAILSOURCE ./dirdat/no
· 把源端生成的ogg.def 拷贝到目标端dirdef文件夹下
· 把目标端下这个文件/AdapterExamples/file-writer/ ffue.properties拷贝到目标端dirprm文件夹下,或者从别处复制一个.properties文件
· 启动mgr:start mgr
· 启动进程:start rhxnl
当看到mgr 和ffwriter状态都是running时,说明目标端配置完成,现在可以去调整源端进行测试

2.2.7. 源端进程开启

GGSCI> start extract
GGSCI> start pump
通过info all 查看进程状态,若进程显示running则正常运行,若是ABENDING 或者STOPPED则代表启动错误
通过view report *(*是进程名)来查看运行日志,空格到最后会有报错日志

这个报错已经说得很清楚了可以通过下面命令来解决
GGSCI>ADD EXTRAIL ./dirdat/st , extract pump
至于ERROR OGG-10668 ABENDING 这个错误是代表着配置有错误,即只要有错误配置这个ERROR就会出现,所以不用管它,只需更改好正确配置,错误标志就会消失
在.properties文件里配置的一定要在目标端建立好,譬如log存放日志(mkdir log),trail文件存放位置(一般在dirdat下,如果不建好文件夹,源端找不到目标文件夹,则trail文件无法传过来,源端投递进程会无法开启)以及生成的dsv文件夹存放目录(一般在dirout文件夹下)
当配置的pump和extract进程都显示RUNNING时,即代表源端,目标端都已准备好

2.3. 测试OGG

· 在pl/sql里插入ogg.test表一行数据,并点击提交commit

· 然后在目标端dirout文件夹下就可以看到有文件传进来,文件是由时间戳来命名的

· Strings/cat/more/vim等命令查看该dsv文件,即可得到更改讯息事件id,事件类型,发生时间,表,表数据等,其中事件类型有三类(I:insert,D:delete, U:update,K:pk update record),这个文件也可以通过datax配置path路径上云
tips:主键表涉及到主键变更的在dsv文件中都是K标识,非主键变化是U标识,非主键表任何字段变化都是K,字段值不变化是U
· GoldenGate File Adapter提供了两个文件,用来生成数据文件。其中properties中有多个文件格式控制属性,通过设置这些属性,即可以控制生成文件的格式,它的文件属性如下:

dsvwriter.includecolnames=false
是否在字段值前放置字段名称,缺省为false
dsvwriter.files.onepertable=true
每个表格各生成一个文件,还是所有数据放入一个文件,缺省为true
dsvwriter.files.data.rootdir=./dirout
数据文件输出目录
dsvwriter.files.data.ext=_data.dsv
已就绪的数据文件扩展名
dsvwriter.files.data.tmpext=_data.dsv.temp
处理中的数据文件
dsvwriter.files.data.rollover.time=1800
数据文件由“处理中”切换为“就绪”的最大时间(秒)
dsvwriter.files.data.rollover.size=104857600
数据文件由“处理中”切换为“就绪”的最大文件尺寸(KB)
dsvwriter.files.data.norecords.timeout=1800
当无记录写入时,最多等待时间(秒)即切换数据文件为“就绪”,缺省120秒
dsvwriter.files.rolloveronshutdown=true
当本属性为true时,如果Extract进程停止,则所有空白“处理中”文件被删除,所有有数据的“处理中”文件切换为“就绪”文件。当本属性为false时,如果Extract进程停止,则所有空白“处理中”文件被删除,所有有数据的“处理中”文件状态不变。
dsvwriter.dsv.fielddelim.chars=|
数据文件中的字段分隔符
dsvwriter.dsv.linedelim.chars=\n
数据文件中的行终结符号
dsvwriter.dsv.quotes.chars="
数据文件中的引号符号
dsvwriter.dsv.quotes.escaped.chars=""
数据文件中的escape符号
dsvwriter.metacols=opcode,timestamp
数据文件中每行数据之前的元数据:
Opcode - I,U与D代表Insert, Update和Delete Timestamp - 记录的提交时间戳
dsvwriter.metacols.opcode.insert.chars=I
数据文件中代表Insert操作的字符
dsvwriter.metacols.opcode.update.chars=U
数据文件中代表Update操作的字符
dsvwriter.metacols.opcode.delete.chars=D
数据文件中代表Delete操作的字符
dsvwriter.files.formatstring=pump_%s_%t_%d_%05n
数据文件名字格式:  %s - schema %t - table %d - timestamp  %05n - 5位序号

2.4. 备注

GGSCI 常用的操作有

源端添加抽取进程
add extract dznolob, tranlog,begin now
add exttrail ./dirdat/no,extract dznolob,megabytes 100
edit params dznolob
源端添加投递进程
add extract pdzlob,exttrailsource ./dirdat/no --读取抽取位置
add rmttrail ./dirdat/no,extract pdzlob   --传送到目标文件位置
edit params dznolob
目标端添加接收进程
add extract dznolob,exttrailsource ./dirdat/dz/no
改变目标端读取的检查点
ALTER EXTRACT 进程名, EXTSEQNO 299, EXTRBA 231719936
--299是日志序号,rba推荐是0,info ext看截断点也行
常用的语句
./ggsci     ./logdump       进入到交互模式和日志模式
info all      delete进程名     view report 进程名
dirdat存储传过来的日志
dirprm存放配置信息
dirrpt存放日志,一般是最新的十个,如需更久的日志,可进入到logdump
生成def文件
GGSCI> edit params defgen
DEFSFILE ./dirdef/test.def
USERID ogg, PASSWORD ogg
table OGG.*;

➢ 在 shell中执行如下命令,生成 中执行如下命令,生成 ogg.def,并把这个 ,并把这个 ogg.def 拷贝到目标 拷贝到目标 端 dirdef下

./defgen paramfile ./dirprm/test.prm
进入日志模式,可查看trail文件

./logdump

>ghdr on
>detail on
>detail data
>usertoken on
>OPEN ./dirdat/no000000006   --打开一个trail文件
>n    --开始下一步即展现
>pos 2239       --指定该trail文件里的某个RBA
>env      --查看环境变量
>show  x    --展示xxx

大数据增量采集OGGAdapter的安装部署与相关配置相关推荐

  1. 微软OpenPai平台部署安装(kubernetes 大数据和深度学习平台安装部署)

    (1)特别注意,机器配置必须16/32核 64G内存,曾经在虚拟机上安装部署8核/28G内存走不出来.哪怕修改pod文件memory配置 (2)另外遇到镜像下载不出来建议先下载到本地 (3)操作系统u ...

  2. 【大数据实验1】cloudstack安装部署(小白式傻瓜教学)

    cloudstack安装部署 0 说明 1 Prerequisites 先决条件 2 Environment 环境 2.0 先看看有没有KVM 2.1 Operating System 操作系统 2. ...

  3. 大数据介绍及集群安装

    大数据介绍及集群安装 第一部分 <大数据概述> 传统数据如何处理? 什么是大数据? 传统数据与大数据的对比 大数据的特点? 大数据前/后服务器系统安装部署区别是什么?. 大数据生态系统以及 ...

  4. 大数据应用导论 Chapter02 | 大数据的采集与清洗

      大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  5. 审计大数据综合分析采集管理系统软件平台

    审计大数据综合分析采集管理系统软件平台 华盛恒辉审计管理系统集数据远程报送.智能入库.数据处理.综合查询.数据授权和分发等功能于--体,大大提升了数据管理的科学性.规范性使审计机关大量积累的各类被审计 ...

  6. 商圈分析如何大数据软件采集相关要素

    商圈分析如何大数据软件采集相关要素 商圈是在商业集聚的基础上逐步形成与发展起来的,商圈就是有一定辐射范围的商业集聚地.随着商业集聚地的辐射范围不断扩大,容量不断变大,商业网点不断增加,业态业种不断完善 ...

  7. CDH大数据平台搭建之JDK安装

    CHD大数据平台搭建之JDK安装 一.安装JDK 1.下载JDK 2.安装JDK 3.检查是否安装成功 一.安装JDK 1.下载JDK 1.JDK8官网下载 2.提供百度网盘供大家下载,提取码:cdh ...

  8. 学习编程第一章 `大数据应用` linux系统jdk安装

    学习编程第三章 大数据应用 linux系统jdk安装 下载jdk 下载网址: https://www.oracle.com/technetwork/java/javase/downloads/java ...

  9. 大数据导论(三:大数据的采集及预处理)

    1.大数据采集 1.1 大数据采集概念 数据采集(DAQ)又称数据获取,通过RFID射频数据.传感器数据.社交网络数据.移动互联网数据等方式获得各种类型的结构化.半结构化及非结构化的海量数据. 1.2 ...

最新文章

  1. 用GPU拯救世界:英伟达斯坦福呼吁玩家捐献算力,投入新冠病毒相关蛋白质分布式计算...
  2. 利用JavaScript在ASP.NET中动态生成系统菜单
  3. “unauthorized: authentication required” -- openshift3.9 docker push 报错
  4. iOS开发UI篇—核心动画(UIView封装动画)
  5. TensorFlow工作笔记001---Centos7.3下安装TensorFlow最新版本,基于python2.7.5的,没有编译TensorFlow的源码
  6. 关于armhf (hard-float ABI for ARM)
  7. ❤️大佬都在学什么?Python爬虫分析C站大佬收藏夹,跟着大佬一起学, 你就是下一个大佬❤️!
  8. HBase Shell 命令私藏
  9. 计算机如何恢复记事本,如何使用电脑桌面便签恢复误删除了的记事本数据内容?...
  10. 五子棋AI算法(二)
  11. 水经注地图发布服务中件间功能简介
  12. BMVC 2020 开幕,196篇论文73篇开源~
  13. 南科大副教授“跳槽”到深圳中学引热议!大学老师不香了吗?
  14. 用ps魔棒工具选区域和改变区域颜色
  15. 台式计算机排行榜2018,CPU天梯图性能排行榜 台式电脑CPU天梯图2018年4月最新版...
  16. fatal: does not appear to a git repository
  17. 树莓派的学习(一)——实验前的准备
  18. 【问题解决】HOST_JUJU_LOCK_PERMISSION 。。
  19. SKY85728-11低噪声放大器skyworks 高度集成 5 GHz前端模块(FEM)
  20. 你真的能解释工厂模式吗?不屑解释工厂模式的大牛不是真牛

热门文章

  1. 【攻破html系列——第五天】表格标签和列表标签
  2. Python爬虫(使用代理)
  3. 大三末之初级前端面试(二)
  4. 视频|《8问》星云链徐义吉:我想成为大师,而不是大佬
  5. 单目标优化:蜣螂优化算法(Dung beetle optimizer,DBO)
  6. Python利用openpyxl来操作Excel
  7. 我们的心情,你能体会吗,Ms. Phoebe?
  8. jBuild一闪而过
  9. Arduino双控开关
  10. 前端工程化-VSCode插件集成脚手架和组件库