当前位置: 首页 > ops >正文

OGG 更新表频繁导致进程中断,见鬼了?非也!

大家好,这里是 DBA学习之路,专注于提升数据库运维效率。

目录

  • 前言
  • 问题描述
  • 问题分析
  • 解决方案
  • 后续

前言

最近几周一直遇到一个 OGG 问题,有一张表已更新就会中断 OGG 同步进程,本文记录一下分析过程以及解决方案。

问题描述

昨天下午,客户说 OGG 又停了(OGG 版本是 19.1.0.4,源端和目标端同版本,都是 19.20):

ogg 又停了,源端到目标端的 XZ3WFP 链路,可以查一下原因吗?

连上环境看了下,确实目标端复制链路处理 ABENDED 状态:

查看目标端 ggserr.log 日志(日志路径一般在 $OGG_HOME 目录下):

日志里没有看到明显报错信息。

问题分析

简单查看了下每次链路 ABENDED,报错的内容都是因为 update 语句导致,源端都是正常抽取状态,目标端复制进程异常终止。

关于 ggserr.log 日志中报错信息,查看官方针对这个错误代码的定义:

OGG-01296: Error mapping from {0} to {1}
The mapping of the specified source and target tables failed.Examine the accompanying messages that provide details about the mapping failure, and resolve the problem based on those messages.

查看目标端 discardfile 文件(日志路径一般在 $OGG_HOME/dirrpt 目录下):

看报错是缺列 ID,ID 是这张表的主键,检查了一下源端和目标端的表结构以及主键,发现没有区别,两端保持一致:

SQL> select owner, constraint_name, constraint_type, status, validated from dba_constraints where owner='XXXXXXX' and TABLE_NAME = 'XXXXX';

源端和目标端均存在主键,按理来说应该没有问题。问了一下客户,这张表是最近新建的表,检查一下源端的抽取链路参数:

有设置参数 ddloptions addtrandata report 参数,按理来说应该可以自动添加 trandata,检查一下源端 trandata 是否正常(一般是手动添加完 trandata 用 dba_log_groups 视图查看):

但是通过参数自动添加需要使用下方方式查看:

检查发现没有添加 trandata 记录,在 ggsci 中检查表是否添加 trandata:

确实没有添加 trandata,这就很奇怪,不过先处理问题要紧。

解决方案

之前每次遇到这个问题,为了紧急恢复同步,都是使用跳过当前事务的方式恢复:

这里也是先紧急修复了,然后手动添加 trandata:

添加完之后再次检查视图:

可以查看记录,这次是添加成功了,后续请客户再次执行 update 操作:

复制链路没有中断,数据正常同步,问题解决。

后续

后续问了客户建表的操作,客户反馈:

  1. 第一次建表忘记添加主键,所以添加成功后,删掉了这张表;
  2. 重建表,设置 ID 为主键。

之前每次对这张表进行 update 操作,都会导致复制链路中断。

等后面有时间了可以做一下测试~

http://www.xdnf.cn/news/6843.html

相关文章:

  • Halcon算子应用和技巧14
  • Kotlin与Java无缝融合:企业级开发的高效组合
  • Spring Boot 项目的计算机专业论文参考文献
  • 深度学习(第3章——亚像素卷积和可形变卷积)
  • Mysql 8.0.32 union all 创建视图后中文模糊查询失效
  • CF803G Periodic RMQ Problem Solution
  • shell脚本之条件判断,循环控制,exit详解
  • 系统架构设计(八):三层架构
  • Java 原生网络编程(BIO | NIO | Reactor 模式)
  • Redlock算法和底层源码分析
  • 【背包dp-----分组背包】------(标准的分组背包【可以不装满的 最大价值】)
  • 基于STM32的INA226电压电流检测仪
  • 全栈项目搭建指南:Nuxt.js + Node.js + MongoDB
  • 阿里巴巴视觉生成大模型1.2.1版本深度部署指南
  • PyQt5 的使用
  • 系统架构设计(六):面向对象设计
  • ChatGPT + DeepSeek 联合润色的 Prompt 模板指令合集,用来润色SCI论文太香了!
  • W5500使用ioLibrary库创建TCP客户端
  • 使用 Vue Tour 封装一个统一的页面引导组件
  • 为 Spring Boot 应用程序构建 CI/CD 流水线
  • 【Linux】共享内存
  • LeetCode 33. 搜索旋转排序数组:二分查找的边界艺术
  • 创建型模式
  • python 自动化教程
  • 布隆过滤器和布谷鸟过滤器
  • Python 在黎曼几何中的应用
  • OGGMA 21c 微服务 (MySQL) 安装避坑指南
  • .NET Core 中 Swagger 配置详解:常用配置与实战技巧
  • 技术测评:小型单文件加密工具的功能解析
  • 线性回归策略