物流项目中Oracle 数据库的使用及OGG是如何同步_oracle ogg数据同步

[root@node1 ~]# docker start myoracle
myoracle

[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb7a41433712 kungkk/oracle11g_centos7:latest “/bin/bash” 9 months ago Up 11 seconds 0.0.0.0:1521->1521/tcp myoracle

[root@node1 ~]# docker exec -it myoracle /bin/bash

2) 启动Oracle数据库服务

[root@node1 ~]# docker exec -it myoracle /bin/bash
[root@server01 oracle]# su - oracle
Last login: Mon Aug 31 09:00:22 UTC 2020 on pts/2
-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 ~]$
[oracle@server01 ~]$ which sqlplus
/u01/app/oracle/product/11.2.0/bin/sqlplus
[oracle@server01 ~]$
[oracle@server01 ~]$ sqlplus “/as sysdba”

SQL*Plus: Release 11.2.0.1.0 Production on Mon Mar 15 02:03:24 2021

Copyright © 1982, 2009, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 1202556928 bytes
Fixed Size 2212816 bytes
Variable Size 654314544 bytes
Database Buffers 536870912 bytes
Redo Buffers 9158656 bytes
Database mounted.
Database opened.

3) 启动Oracle监听服务

[root@node1 ~]# docker exec -it myoracle /bin/bash
[root@server01 oracle]# su - oracle
Last login: Mon Mar 15 02:02:42 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 ~]$
[oracle@server01 ~]$ cd O R A C L E H O M E / b i n [ o r a c l e @ s e r v e r 01 b i n ] ORACLE_HOME/bin [oracle@server01 bin] ORACLEHOME/bin[oracle@server01bin]
[oracle@server01 bin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 15-MAR-2021 02:06:40

Copyright © 1991, 2009, Oracle. All rights reserved.

Starting /u01/app/oracle/product/11.2.0//bin/tnslsnr: please wait…

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/server01/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=server01)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER

Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 15-MAR-2021 02:06:42
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/server01/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=server01)(PORT=1521)))
The listener supports no services
The command completed successfully

当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进程

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

0:00:00
EXTRACT RUNNING PUKAFKA 00:00:00 4598:07:38

第五步:启动目标端replicate进程

[外链图片转存中…(img-kPT4ggYa-1714524642389)]
[外链图片转存中…(img-XrhotsjM-1714524642389)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值