当Oracle数据库服务和监听服务启动完成以后,执行如下命令,如果成功,表示服务OK
SQL> select instance_name AS “SID”,host_name,version from v$instance;
SID
HOST_NAME
VERSION
orcl
server01
11.2.0.1.0
>
> 使用工具:`DBeave`数据库客户端,连接Oracle数据库
>
>
>
![1615774285905](https://img-blog.csdnimg.cn/img_convert/c173dbdddae2bbf428d686f6d9ec1b59.png)
>
> 创建Oracle数据库连接,填写上述配置信息,测试连接是否成功过
>
>
>
![1615774455827](https://img-blog.csdnimg.cn/img_convert/3f904e684a8029be17b59ae978d03faf.png)
>
> 连接到Oracle数据库,打开表,查看数据
>
>
>
![1615774525332](https://img-blog.csdnimg.cn/img_convert/29d634f2e75560200135a786cd260d2b.png)
### 06-[掌握]-OGG 数据同步之功能概述
>
> 针对整个物流项目来说,数据采集属于`实时增量采集`数据,只要业务数据一旦产生,就立即将业务数据获取,进行ETL转换,存储到存储引擎中(比如Kudu数据库和Es索引等)。
>
>
> * 1)、业务数据量比较多,快速存储
> * 2)、实时性业务分析统计,快速分析
>
>
> 使用OGG中间件(框架)实时采集Oracle数据库表的数据,同步到Kafka分布式消息队列中。
>
>
> OGG 是一种基于`日志`的结构化数据复制软件,它通过`解析源数据库在线日志:online log或归档日志:archive log`获得数据的`增删改`变化(数据量只有日志的四分之一左右);
>
>
>
![1612320791630](https://img-blog.csdnimg.cn/img_convert/4fc202e706d0c54d0f33732903056cc1.png)
>
> OGG 能够实现大量交易数据的实时捕捉,变换和投递,实现源数据库与目标数据库的数据同步,保持最少10ms的数据延迟。
>
>
>
![1615776620433](https://img-blog.csdnimg.cn/img_convert/bbfe1e6cdf72f7ea1fffe84672e6b6f8.png)
>
> 应用场景:主要三个方面
>
>
> * 高可用(HA:High Availability)容灾
> * 数据库迁移、升级(支持跨版本、异构数据库、零宕机时间、亚秒级恢复)
> * 实时数据集成(支持异构数据库、多源数据库)
>
>
>
![1615776882220](https://img-blog.csdnimg.cn/img_convert/77630e2789695db71148b059b893a272.png)
### 07-[掌握]-OGG 数据同步之基本原理及架构
>
> Oracle GoldenGate 实现原理是通过抽取源端的redo log 或者 archive log ,然后通过TCP/IP投递到目标端,最后解析还原应用到目标端,使目标端实现 同源端数据同步。
>
>
> 详细OGG如何数据同步,基本原理和架构:
>
>
> * 1)、源端(SRC):获取Oracle数据表数据,从日志文件获取
> + 管理者:`MGR(Manger)`
> + 第一、进程:`Extract提取`进程,获取日志数据文件
> + 第二、本地缓存:`Local TrailFile`,将日志文件数据存储到本地TrailFile文件中,缓存
> + 第三、进程:(可选)`Pump进程`,将本地Local TrailFile发送给目标端
> * 2)、目标端(DST):发送数据到目标,如Topic
> + 管理者:`MGR(Manger)`
> + 第一、进程:`Collect进程`,接收源端pump进程发送的数据,新版添加进程
> + 第二、远程缓存:RemoteTrailFile,目标端接收到数据文件以后,进行缓存
> + 第三、进程:`Replicat进程`,复制进程,解析RemoteTrailFile文件,转换JSON格式,发送到Kafka
>
>
>
![1612321610205](https://img-blog.csdnimg.cn/img_convert/0916a150eb5afa36b34961eaf7e81a10.png)
>
> OGG采集数据时,完整结构如上如所示:分为源端SRC和目标端DST,都有自己管理进程MGR。
>
>
>
![1615777550837](https://img-blog.csdnimg.cn/img_convert/b5100f3b0e830c6024ca55bed19f675c.png)
>
> Extract 进程用来捕获数据源,有三种类型:
>
>
> * 1)、initial load:加载整张表的数据,属于批量加载
> * 2)、恢复日志/事务日志:恢复数据库表的数据
> * 3)、捕获模型,实时监控日志文件,已有数据,立即捕获
>
>
>
![1615777650890](https://img-blog.csdnimg.cn/img_convert/09852f4b8954d1371f80304306211135.png)
>
> `Data pump` 是Extract的辅助可选组件,如果不配置Data pump,Extract将捕获的数据直接发给目标机器上的Collector进程。
>
>
>
### 08-[理解]-OGG 数据同步之拓扑结构及支持环境
>
> OGG架构和原理,发现架构划分比较细(分工比较细),OGG在实际项目中,使用时,常见拓扑结构和支持环境,以后如果考虑使用OGG实时同步数据时参考。
>
>
> Oracle数据库配置集群Cluster,称为Oracle RAC(Real Application Cluster
>
>
>
![1615778086744](https://img-blog.csdnimg.cn/img_convert/c217ad88e505a21df1fd4f284f6f76b0.png)
>
> 由此可见,GoldenGate TDM的复制模式非常灵活,用户可以根据自己的需求选择特定的复制方式,并根据系统扩展对复制进行扩展。
>
>
> 源和目标的操作系统和数据库可以进行任意的组合。
>
>
>
![1615778445595](https://img-blog.csdnimg.cn/img_convert/cec8e85720ca5f2135da661d0fa744ef.png)
>
> 目前来说,如果企业项目使用OGG进行数据同步时,通常还是SRC为:Oracle数据库,DST:Oracle数据库或Kafka消息队列。
>
>
>
### 09-[掌握]-OGG 数据同步之测试环境准备
>
> 如何配置OGG实现实时数据同步到Kafka,无需掌握步骤,比较繁琐,让DBA完成。
>
>
>
![1615779520603](https://img-blog.csdnimg.cn/img_convert/b69b7c74ae62ead9f6ec8bb861be55a5.png)
>
> 提供虚拟机【`node1.itcast.cn`】中Docker 容器【myoracle】已经安装完`OGG(源端和目标端)`,只需要启动OGG的源端SRC服务和目标端DST服务即可。
>
>
> * 1)、源端SRC
> + Manager管理(`mgr`)、`Extract`进程、LocalTrail、`Pump`进程
> * 2)、目标端DST
> + Manager管理(`mgr`)、Remote Trail 、复制进程`Replicat`
>
>
>
![1612324623208](https://img-blog.csdnimg.cn/img_convert/4fcfac8cf76dac2fa7cae060028e0dc2.png)
>
> 由于使用OGG实时采集Oracle数据库表数据(日志文件),将数据同步到Kafka消息对象,所以首先启动Kafka服务(先启动Zookeeper服务),打开提供【`node2.itcast.cn`】,使用CM界面启动ZK和Kafka服务。
>
>
>
![1615779939494](https://img-blog.csdnimg.cn/img_convert/b6e21fe47243f28e0d60255471eb3031.png)
>
> 启动OGG配置服务,分为源端和目标端,参考提供【启动命令:Oracle数据库和OGG服务.txt】,具体命令;
>
>
>
============= 切换到 oracle 账号,并且启动Oracle数据库 =============
第一步:启动源端mgr进程
[root@node1 ~]# docker exec -it myoracle /bin/bash
[root@server01 oracle]# su - oracle
Last login: Mon Mar 15 02:06:07 UTC 2021 on pts/1
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US): No such file or directory
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US): No such file or directory
[oracle@server01 ~]$ cd
O
G
G
S
R
C
H
O
M
E
[
o
r
a
c
l
e
@
s
e
r
v
e
r
01
s
r
c
]
OGG_SRC_HOME [oracle@server01 src]
OGGSRCHOME[oracle@server01src] ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21
Copyright © 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (server01) 1> start mgr
Manager started.
GGSCI (server01) 2> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT ABENDED EXTKAFKA 00:00:00 4598:05:35
EXTRACT ABENDED PUKAFKA 00:00:00 4598:05:31
第二步:启动目标端mgr进程
[root@node1 ~]# docker exec -it myoracle /bin/bash
[root@server01 oracle]# su - oracle
Last login: Mon Mar 15 03:48:01 UTC 2021 on pts/0
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US): No such file or directory
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US): No such file or directory
[oracle@server01 ~]$ cd
O
G
G
T
G
R
H
O
M
E
[
o
r
a
c
l
e
@
s
e
r
v
e
r
01
t
g
r
]
OGG_TGR_HOME [oracle@server01 tgr]
OGGTGRHOME[oracle@server01tgr] ./ggsci
start mgrOracle GoldenGate for Big Data
Version 12.3.1.1.1
Oracle GoldenGate Command Interpreter
Version 12.3.0.1.0 OGGCORE_OGGADP.12.3.0.1.0GA_PLATFORMS_170828.1608
Linux, x64, 64bit (optimized), Generic on Aug 28 2017 17:13:45
Operating system character set identified as US-ASCII.
Copyright © 1995, 2017, Oracle and/or its affiliates. All rights reserved.
GGSCI (server01) 2> start mgr
Manager started.
GGSCI (server01) 3> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT ABENDED REKAFKA 00:00:00 4598:06:12
第三步:启动源端extract进程
GGSCI (server01) 3> start EXTKAFKA
Sending START request to MANAGER …
EXTRACT EXTKAFKA starting
第四步:启动源端pump进程
GGSCI (server01) 4> start PUKAFKA
Sending START request to MANAGER …
EXTRACT PUKAFKA starting
GGSCI (server01) 5> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXTKAFKA 4598:08:10 00:00:00
EXTRACT RUNNING PUKAFKA 00:00:00 4598:07:38
第五步:启动目标端replicate进程
GGSCI (server01) 4> start REKAFKA
Sending START request to MANAGER …
REPLICAT REKAFKA starting
GGSCI (server01) 7> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REKAFKA 00:00:00 00:00:08
>
> 使用KafkaTool工具连接Kafka集群,查看Topic信息和数据
>
>
>
![1615780362820](https://img-blog.csdnimg.cn/img_convert/89ea812873f461cfd30056a29f4380da.png)
### 10-[掌握]-OGG 数据同步之物流数据同步Kafka
>
> 采用OGG中间件将Oracle数据库表的数据实时同步到Kafka消息队列中:
>
>
> * 1)、源端 :Oracle数据库【itcast】
> * 2)、采集工具:OGG,分为SRC和DST
> * 3)、目标端:Kafka 消息队列【logistics】
>
>
> 测试:向Oracle数据库某张表中插入insert、更新update及删除delete操作,查看Kafka Topic中数据
>
>
> 目前OGG11版本,延迟性相对较大,在2s左右,需要进行合理化调参配置,到OGG12版本,很快。
>
>
>
* 1)、插入数据测试
– 插入数据INSERT
INSERT INTO ITCAST.“tbl_company”(“id”, “company_name”, “city_id”, “company_number”, “company_addr”, “company_addr_gis”, “company_tel”, “is_sub_company”, “state”, “cdt”, “udt”, “remark”)VALUES(11, ‘广州码农速递邮箱公司’, 440100, NULL, ‘广州校区’, ‘117.28177895734918_31.842711680531399’, NULL, 1, 1, TO_DATE(‘2020-06-13 15:24:51’,‘yyyy-mm-dd hh24:mi:ss’), TO_DATE(‘2020-06-13 15:24:51’,‘yyyy-mm-dd hh24:mi:ss’), NULL);
>
> 同步至Kafka Topic中JSON数据
>
>
>
{
“table”: “ITCAST.tbl_company”,
“op_type”: “I”,
“op_ts”: “2021-03-15 03:57:07.000306”,
“current_ts”: “2021-03-15T03:57:20.578000”,
“pos”: “00000000150000001245”,
“after”: {
“id”: 11,
“company_name”: “广州码农速递邮箱公司”,
“city_id”: 440100,
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
“after”: {
“id”: 11,
“company_name”: “广州码农速递邮箱公司”,
“city_id”: 440100,
[外链图片转存中…(img-raxWXsjJ-1714524608522)]
[外链图片转存中…(img-xYppoULm-1714524608523)]
[外链图片转存中…(img-Weyg9ADF-1714524608523)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新