Oracle GoldenGate 状态监控及自启动脚本分享

76660143a1e3090287129f626008a8a0.gif

作者 | JiekeXu

来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)

如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)

大家好,我是 JiekeXu,江湖人称“强哥”,很高兴又和大家见面了,今天和大家一起来看看 GoldenGate 状态监控及自启动脚本,欢迎点击上方蓝字“JiekeXu DBA之路”关注我的公众号,标星或置顶,更多干货第一时间到达!

前  言

在这篇文章开始之前,先跟大家推荐一位 PG 大佬公众号,一直深耕 PostgreSQL 多年,混迹于各大互联网公司和各种大会,也属于数据库老司机,云计算泥石流,开源 RDS —— Pigsty 大本营,感兴趣的朋友可以关注下。

Oracle GoldenGate 是一款强大的数据同步软件,支持 1000 多种数据平台组合,本文旨在分享 Linux 平台下从 Oracle 19c 到 kafka 的数据复制。

源端:Oracle  19c,补丁 19.15,OGG 版本为 Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
目标端:Oracle GoldenGate for Big Data Version 12.3.2.1.1 (Build 005) Version 12.3.0.1.2 OGGCORE_OGGADP.12.3.0.1.2_PLATFORMS_180712.2305

搭建过程可参考本文《使用 OGG12.3 同步 Oracle 部分表到 Kafka》。

bccf6889091708954633117aa1942a12.png

————————————————————————————
微信公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————

b829f61f3c85ffd39f21cdf45001d21b.png

正  文

之前同事通过 Zabbix 监控并告警 OGG 的状态和延迟情况,并通过机器人告警到微信群,虽然不知道是怎么操作的,但使用着也是非常的方便,基本满足生产需求。可测试环境也没那么重视,但有时候主机断电或者莫名的重启了,Oracle 单机数据库一般都配置了开机自启动,RAC 默认情况下也会自启动,但是 OGG 则没有正常启动,这就导致了测试环境的归档已经删除了,但是 OGG 还没有启动捕获这部分日志,那么在 Integrated Redo 集成模式下就只能重建 OGG 了,经典模式还有招跳过这部分归档。

6e390bc59fa5cc31166586068c90c2c2.png

fbb8b86cae954fde7de3b14bafbedd25.png

首先我们通过命令行交互式 ggsci PARAMFILE mon_ogg.par 检查进程状态,那么我们需要编辑 mon_ogg.par 文件,将“info all” 写入到此文件,这样执行此命令我们就可以查看到 MANAGER 和 EXTRACT 进程的状态了。

op-rac2:/ogg19c(jiekexu2)$ ggsci PARAMFILE $OGG_HOME/mon_ogg.par


Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Linux, x64, 64bit (optimized), Oracle 19c on Oct 17 2019 21:16:29
Operating system character set identified as US-ASCII.


Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.




GGSCI (op-rac2) 1> info all




Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                           
EXTRACT     RUNNING     DPE1        00:00:00      00:00:02    
EXTRACT     RUNNING     EXT1        00:00:04      00:00:01

55e5f7f395fa3ab3650606a02c5bcc6c.png

这样如果 MANAGER 进程没有启动,我们可以将其过滤出来,用以判断执行启动 mgr 命令。然后我们将 “start MGR” 写入到一个新文件  start_ogg.par,然后通过命令行 ggsci PARAMFILE start_ogg.par 启动 MANAGER 进程。

op-rac2:/ogg19c(jiekexu2)$ $OGG_HOME/ggsci PARAMFILE $OGG_HOME/mon_ogg.par | grep  MANAGER | awk '{print $2}'
RUNNING

接下来我们判断 EXTRACT 进程,如果有异常状态的,不是 “RUNNNING” 状态,我们则将其追加写到 start_ogg.par 文件,如果此文件不为空,用以启动  EXTRACT 进程,当执行完后,我们需要清空 start_ogg.par 文件。

ggsci PARAMFILE mon_ogg.par | grep -v "RUNNING" | grep EXTRACT | awk '{print "start " $3}' >> start_ogg.par


ggsci PARAMFILE start_ogg.par


echo /dev/null > start_ogg.par

然后我们通过操作系统级别的定时任务部署这个脚本,当数据库启动后每隔 5 分钟执行这个任务脚本即可,这里没有使用 /etc/rc.local 的原因是因为 /etc/rc.local 里数据库开启自启动和 OGG 开机自启动不是很好判断顺序,比如数据库还没有正常启动则 OGG 先启动无法连接到数据库,进而 OGG 无法正常启动,考虑到这一点,则将自启动加到 crontab 里,定时去执行即可。如果各位大佬还有更好的办法,欢迎一起交流学习。

最后附整个脚本,你只需要修改脚本中  OGG_HOME 的路径即可。

op-rac2:/ogg19c(jiekexu2)$ more /home/oracle/monitor_ogg.sh
#!/bin/bash 


source /home/oracle/.bash_profile


# print date
date


# export OGG_HOME  ----> you need edit OGG_HOME PATH 
OGG_HOME=/ogg19c




# create ogg monitor command file
echo "info all" > $OGG_HOME/mon_ogg.par


manager_status=$($OGG_HOME/ggsci PARAMFILE $OGG_HOME/mon_ogg.par | grep  MANAGER | awk '{print $2}')  
  
# MANAGER status?
if [ "$manager_status" != "RUNNING" ]; then  
    echo "MANAGER is not running. Starting MANAGER..."  
    echo "start MGR"  >> $OGG_HOME/start_ogg.par  
else  
    echo "MANAGER is running."  
fi 


# create file start_ogg.par  
$OGG_HOME/ggsci PARAMFILE $OGG_HOME/mon_ogg.par | grep -v "RUNNING" | grep EXTRACT | awk '{print "start " $3}' >> $OGG_HOME/start_ogg.par  
  
# check start_ogg.par is null or not null?  
if [ -s $OGG_HOME/start_ogg.par ]; then  
    echo "start_ogg.par is not null,please exec this file..."  
    # if this file is not null,exec $OGG_HOME/ggsci PARAMFILE start_ogg.par  
    $OGG_HOME/ggsci PARAMFILE start_ogg.par
else  
    echo "start_ogg.par is null,No need to execute this command!"  
fi


> $OGG_HOME/start_ogg.par


###crontab### */5 * * * * /bin/bash /home/oracle/monitor_ogg.sh >> /home/oracle/start_ogg.log 2>&1

附 目标端 REPLICAT 进程监控自启动脚本

more  /home/oracle/monitor_ogg.sh
#!/bin/bash


source /home/oracle/.bash_profile
export JAVA_HOME=/home/oracle/java/jdk1.8.0_181
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/server:$LD_LIBRARY_PATH


#print date
date


# export OGG_HOME   ----> you need edit OGG_HOME PATH 
OGG_HOME=/soft 


# create ogg monitor command file
echo "info all" > $OGG_HOME/mon_ogg.par  


manager_status=$($OGG_HOME/ggsci PARAMFILE $OGG_HOME/mon_ogg.par | grep  MANAGER | awk '{print $2}')  
  
# MANAGER status?
if [ "$manager_status" != "RUNNING" ]; then  
    echo "MANAGER is not running. Starting MANAGER..."  
    echo "start MGR"  >> $OGG_HOME/start_ogg.par  
else  
    echo "MANAGER is running."  
fi 


# create file start_ogg.par  
$OGG_HOME/ggsci PARAMFILE $OGG_HOME/mon_ogg.par | grep -v "RUNNING" | grep REPLICAT | awk '{print "start " $3}' >> $OGG_HOME/start_ogg.par
  
# check start_ogg.par is null or not null?  
if [ -s $OGG_HOME/start_ogg.par ]; then  
    echo "start_ogg.par is not null,please exec this file..."  
    # if this file is not null,exec $OGG_HOME/ggsci PARAMFILE start_ogg.par  
    $OGG_HOME/ggsci PARAMFILE $OGG_HOME/start_ogg.par  
else  
    echo "start_ogg.par is null,No need to execute this command!"  
fi


> $OGG_HOME/start_ogg.par

868fb103af412041dd67612f59ccf396.png

全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

欢迎关注我公众号【JiekeXu DBA之路】,第一时间一起学习新知识!以下四个地址可以找到我,其他地址均属于盗版侵权爬取我的文章,而且代码格式、图片等均有错乱,不方便阅读,欢迎来我公众号或者墨天轮地址关注我,第一时间收获最新消息。

欢迎关注我的公众号【JiekeXu DBA之路】,第一时间一起学习新知识!————————————————————————————
公众号:JiekeXu DBA之路
CSDN :https://blog.csdn.net/JiekeXu
墨天轮:https://www.modb.pro/u/4347
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————

9ab4054985bcec927fe8d9a902b8d016.gif

分享几个数据库备份脚本

一文搞懂 Oracle 统计信息

   

我的 Oracle ACE 心路历程

Oracle 主流版本不同架构下的静默安装指南

   

关机重启导致 ASM 磁盘丢失数据库无法启动

Oracle SQL 性能分析(SPA)原理与实战演练

   

Oracle 11g 升级到 19c 需要关注的几个问题

Windows 10 环境下 MySQL 8.0.33 安装指南

SQL 大全(四)|数据库迁移升级时常用 SQL 语句

OGG|使用 OGG19c 迁移 Oracle11g 到 19C(第二版)

Oracle 大数据量导出工具——sqluldr2 的安装与使用

从国产数据库调研报告中你都能了解哪些信息及我的总结建议

使用数据泵利用 rowid 分片导出导入 lob 大表及最佳实践

在归档模式下直接 rm dbf 数据文件并重启数据库还有救吗?

相关推荐

  1. ubuntu开机启动脚本

    2024-03-26 09:40:04       31 阅读
  2. 开机启动脚本配置

    2024-03-26 09:40:04       8 阅读
  3. Docker 更新容器状态 开启/关闭 开机启动

    2024-03-26 09:40:04       41 阅读
  4. Flink集群启动脚本分析

    2024-03-26 09:40:04       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-26 09:40:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-26 09:40:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-26 09:40:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-26 09:40:04       20 阅读

热门阅读

  1. 大模型日报2024-03-25

    2024-03-26 09:40:04       19 阅读
  2. 每个字符最多出现两次的最长子字符串(c++实现)

    2024-03-26 09:40:04       18 阅读
  3. 基于深度学习的图像分类方法

    2024-03-26 09:40:04       21 阅读
  4. Android SO加固技术及其破解方法探讨

    2024-03-26 09:40:04       16 阅读
  5. Android中View和ViewGroup有什么区别和联系

    2024-03-26 09:40:04       19 阅读
  6. Git本地更新仓库改动

    2024-03-26 09:40:04       19 阅读
  7. 取消uniapp的scroll-view滚动条

    2024-03-26 09:40:04       16 阅读
  8. 二进制王国【蓝桥杯算法双周赛】

    2024-03-26 09:40:04       20 阅读
  9. 鲁棒的设计

    2024-03-26 09:40:04       15 阅读