达梦数据库宕机问题分析及处理

news2024/11/5 12:34:02

官方宕机原因排查
官方故障诊断排除
相关概念
在这里插入图片描述

达梦数据库宕机往往会产生core文件,解读core文件是分析宕机原因的主要手段,类似oracle的diag.trc或system dump转储文件,记录数据库线程状态、sql语句等。
首选的排查方向可以从内存溢出、磁盘空间、许可过期、异常SQL(没错业务sql导致宕机)等方面着手,例如查操作系统日志、磁盘空间、sa文件、数据库日志等做初筛。

core文件位置可以看

cat  /proc/sys/kernel/core_pattern

听说数据库连不上,先看看主机是否重启过

[dmdba@db1 dm]$  w
 15:56:36 up 165 days,  1:59,  3 users,  load average: 0.02, 0.02, 0.04
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1      105月23 165days  6:42m  6:42m /usr/libexec/Xorg -core -noreset :0 -seat seat0 -auth /run/lightdm/root/:0 -nolisten tcp vt1 -novtswitch
root     pts/0     1210月24 16days  0.11s  0.06s -bash
dmdba    pts/1     15:19    1.00s  3.22s  0.00s w

连续运行165天,主机近期没重启
查看数据库日志

ls -l /dm/dmdbms/log/dm_DMSERVER_202410.log
2024-10-30 15:59:43.377 [INFO] database P0000598124 T0000000000000598149  checkpoint begin, used_space[30720], free_space[536832000]...
2024-10-30 15:59:43.381 [INFO] database P0000598124 T0000000000000598149  ckpt2_log_adjust: full_status: 160, ptx_reserved: 0
2024-10-30 15:59:43.382 [INFO] database P0000598124 T0000000000000598149  ckpt2_log_adjust: ckpt_lsn(949526222), ckpt_fil(0), ckpt_off(218334208), cur_lsn(949526222), l_next_seq(4
5367593), g_next_seq(45367593), cur_free(218334208), total_space(536862720), used_space(0), free_space(536862720), n_ep(1)
2024-10-30 15:59:43.382 [INFO] database P0000598124 T0000000000000598149  checkpoint end, 0 pages flushed, used_space[0], free_space[536862720].
2024-10-30 16:02:43.496 [INFO] database P0000598124 T0000000000000598193  checkpoint requested by CKPT_INTERVAL, rlog free space[536832000], used space[30720]
2024-10-30 16:02:43.496 [INFO] database P0000598124 T0000000000000598193  checkpoint generate by ckpt_interval
2024-10-30 16:02:43.496 [INFO] database P0000598124 T0000000000000598149  checkpoint begin, used_space[30720], free_space[536832000]...
2024-10-30 16:02:43.502 [INFO] database P0000598124 T0000000000000598149  ckpt2_log_adjust: full_status: 160, ptx_reserved: 0
2024-10-30 16:02:43.502 [INFO] database P0000598124 T0000000000000598149  ckpt2_log_adjust: ckpt_lsn(949526282), ckpt_fil(0), ckpt_off(218364928), cur_lsn(949526282), l_next_seq(4
5367653), g_next_seq(45367653), cur_free(218364928), total_space(536862720), used_space(0), free_space(536862720), n_ep(1)
2024-10-30 16:02:43.502 [INFO] database P0000598124 T0000000000000598149  checkpoint end, 0 pages flushed, used_space[0], free_space[536862720].
2024-10-30 16:03:17.582 [INFO] database P0000598124 T0000000000001077553  socket_err_should_retry errno:104
2024-10-30 16:03:17.582 [INFO] database P0000598124 T0000000000001077554  socket_err_should_retry errno:104
2024-10-30 16:03:17.615 [FATAL] database P0000598124 T0000000000001077554  Server page check error! ts_id(1) file_id(0) page_no(34748) page_type(0) index_id(0)
2024-10-30 16:03:17.615 [FATAL] database P0000598124 T0000000000001077554  System Halt!
2024-10-30 16:03:17.615 [FATAL] database P0000598124 T0000000000001077554  [for dem]SYSTEM SHUTDOWN ABORT.
2024-10-30 16:03:17.615 [FATAL] database P0000598124 T0000000000001077554  Server page check error!
2024-10-30 16:03:17.615 [FATAL] database P0000598124 T0000000000001077554  code = -1, dm_sys_halt now!!!
2024-10-30 16:03:17.615 [INFO] database P0000598124 T0000000000001077554  total 2 rfil opened!
[dmdba@db1 log]$

的确发生致命错误,解读一下P0000598124 代表数据库进程号是598124,意义不大,但后面的T0000000000001077554代表线程1077554号,很重要。

再看Server page check error! ts_id(1) file_id(0) page_no(34748) page_type(0) index_id(0),又提供了丰富的信息。ts_id=1代表表空间序号
在这里插入图片描述
1就是回滚表空间
file_id=0代表ROLL表空间中第1个文件
在这里插入图片描述
page_no=34748代表文件中第34748页上的对象,具体是什么呢?可以通过工具来定位,很简单

获取页对象id:SF_PAGE_GET_SEGID()

获取页类型:SF_PAGE_GET_PAGE_TYPE(
ts_id int,
file_id int,
page_no int
)
SQL> select sf_page_get_page_type(1,0,0);

行号     sf_page_get_page_type(1,0,0)
---------- ----------------------------
1          FSM_PAGE_GROUP_HDR
SQL> select sf_page_get_page_type(1, 0, 34748);

如果定位到索引损坏,删除重建即可。如果无法进一步定位,可以先简单看看关联sql,毕竟堆栈分析难度更大。
这时要用到dmrdc了(我猜是:达梦 read core)
./dmrdc sfile=core-dm_sql_thd-598124-4
在这里插入图片描述
等待10几秒会在当前目录下生成一个文件core-dm_sql_thd-598124-4_tmp,这里记录着读取的相关sql,可以直接cat看内容

!#%&*^$@[1077554]:(case when (A.advanced_pay_amt = 0 or 
  A.advanced_pay_amt is null) then '2'
           else '1'
           end
   ) as FloorFlag,
   (case when(A.bill_range_start 
   is null and A.bill_range_end is null)
      then concat(A.bill_no,'1')
      else concat(concat(A.bill_no, 
	  lpad(concat(A.bill_range_start, ''), 12, 0),
	  lpad(concat(A.bill_range_end, ''), 12, 0)),'1')
      end
    ) as loanAccount,
   A.acpt_brch_no as OPNOD,
   A.bill_money * A.bail_pcet as INTR1,
   ''
    from ABC_XX_BB A,YYYY_DETAIL B
    where A.BATCH_ID=B.ID and bill_no in 
	('123','345','456')

看来有些不完整,还是比较菜。
启用蛮力处理core文件

strings core123 > /tmp/a.log

获取到完整的sql后再从业务角度尝试改写或优化。

如果担心还存在其他问题,还可以用dmdbchk校验数据文件一致性。需要在关库状态下才能执行检查。
在这里插入图片描述

发现问题后首要还是尝试先启动数据库,但是启动异常
在这里插入图片描述
这时就需要先忽略一致性检查,设置参数PSEG_RECV=0,启动后再恢复为默认值3。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2232570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring ai 入门 之 结构化输出 - 把大模型llm返回的内容转换成java bean

目录 ​编辑 将AI非结构化文本转换为特定格式数据的应用场景说明 Spring AI 介绍 :为Java开发者打造的AI应用开发框架 Qwen 介绍 : 一个国内领先的开源大模型 Spring AI Alibaba框架介绍 : 一个国内最好的spring ai实现 使用spring ai …

HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac

寻找模拟器 背景: 运行的是h5,模拟器是网易MuMu。 首先检查一下是否配置dab环境,adb version 配置一下hbuilderX的adb: 将命令输出的路径配置到hbuilderx里面去,然后重启下HbuilderX。 开始安装基座…一直安装不…

使用Docker Compose构建多容器应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Docker Compose构建多容器应用 引言 Docker Compose 简介 安装 Docker Compose 创建基本配置 运行多容器应用 查看服务状态 …

react-router与react-router-dom的区别

写法上的区别: 写法1: import {Swtich, Route, Router, HashHistory, Link} from react-router-dom;写法2: import {Switch, Route, Router} from react-router; import {HashHistory, Link} from react-router-dom;react-router实现了路由的核心功能 react-router-…

Python 字符串类型中 ``split(“\n“)`` 与 ``splitlines()`` 方法的一些区别

最近在以 self.__print("#" * 20 "\n") 调用自己写的 __print 接口时发现打印的时候 "\n" 没有打出来,进而发现了 split("\n") 与 splitlines() 方法的一些区别。 一个是参数上,split 需要传递一个字符串作为…

Java Iterator 实现杨辉三角

一、问题描述 杨辉三角定义如下: 1/ \1 1/ \ / \1 2 1/ \ / \ / \1 3 3 1/ \ / \ / \ / \1 4 6 4 1/ \ / \ / \ / \ / \ 1 5 10 10 5 1 把每一行看做一个list,试写一个 Iterator,不断输出下一行的 list&#xf…

Spark 的介绍与搭建:从理论到实践

目录 一、分布式的思想 (一)存储 (二)计算 二、Spark 简介 (一)发展历程 (二)Spark 能做什么? (三)spark 的组成部分 (四&…

Linux操作系统 ------(3.文本编译器Vim)

目录 1.前言 2.本章学习目标 3.vim的三种工作模式 3.1一般模式‌ 3.2编辑模式‌ 3.3命令行模式‌ 4.运行vim 5.vim 不同工作模式下的常见命令 6.一般模式下的功能键 6.1移动光标类 6.2删除、复制和粘贴类 6.3查找替换类 7.从一般模式进入编辑模式 8.命令行模式下的…

RocketMQ的消息类型

RocketMQ的消息类型 文章目录 RocketMQ的消息类型一、顺序消息二、广播消息应用场景:示例代码:实现思路:注意点: 三、延时消息应用场景:核心方法: 四、批量消息应用场景:示例代码:注…

Selective Generation for Language Models 语言模型的选择性生成

生成式语言模型(Generative Language Models, GLMs)在文本生成任务中取得了显著进展。然而,生成内容的“幻觉”现象,即生成内容与事实或真实语义不符的问题,仍是GLMs在实际应用中的一个重大挑战。为了解决这一问题&…

git clone,用https还是ssh

前言 在使用Git去克隆项目时,会遇到https和ssh等形式,这两种又有何种区别呢,本文将重点讨论在具体使用中的问题。 注:第一次使用Git 时,需要先设置全局用户名和邮箱,否则后续使用命令时会报错,也是提醒先添…

最新整理:Selenium自动化测试面试题

1.selenium中如何判断元素是否存在? find_elements查找到的元素个数为0,find_element报错意味着元素不存在 2.如何判断元素是否出现? 判断元素是否出现,存在两种情况,一种是该元素压根就没有,自然不会出现;另外一种是有这样的…

业绩代码查询实战——php

一、一级代码显示职员 foreach($data_职员信息 as $key > $value){//$where_查询分类$where_查询通用;//$dat分类one $业绩提成->where($where_查询分类)->order("CreateDate desc")->select();if($value[haschildname]0 && $value[key] !"…

如何彻底删除gitbash中所有的命令记录、以及彻底删除Windows powerShell或者cmd中的所有命令记录

文章目录 1. 文章引言2. 彻底删除gitbash中所有的命令记录3. 彻底删除Windows powerShell或者cmd中的所有命令记录1. 文章引言 有时,我们使用外部电脑从gitbash中下载代码,假设使用history -c命令: 可以清除当前弹框的历史记录,但也无法彻底删除命令记录。打开gitbash后,通…

工作管理实战指南:利用Jira、Confluence等Atlassian工具打破信息孤岛,增强团队协作【含免费指南】

如果工作场所存在超级反派,其中之一可能会被命名为“信息孤岛”,因为它们能够对公司的生产力和协作造成严重破坏。当公司决定使用太多互不关联的工具来完成工作时,“信息孤岛”就会出现,导致团队需要耗费大量时间才能就某件事情达…

OceanBase V4.3.3,首个面向实时分析场景的GA版本发布

在10月23日举办的 OceanBase年度发布会 上,我们怀着激动之情,正式向大家宣布了 OceanBase 4.3.3 GA 版的正式发布,这也是OceanBase 为实时分析(AP)场景打造的首个GA版本。 2024 年初,我们推出了 4.3.0 版本…

最新最全面的JAVA面试题免费下载

面对求职市场的激烈竞争,掌握全面且深入的Java知识已成为每一位Java开发者必不可少的技能。《2023最新版Java面试八股文》是一份精心整理的面试准备资料,旨在帮助广大开发者系统复习,从容应对Java及相关技术栈的面试挑战。这份文档不仅汇聚了…

Spring Security 框架篇-深入了解 Spring Security 的授权核心功能(RBAC 权限模型、自定义异常处理器、校验权限方法)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 权限系统 1.1 引入 1.2 RBAC 权限模型 1.3 数据库设计 2.0 Spring Security 核心功能-授权 2.1 思路分析 2.2 编写 SQL 语句 2.3 将用户权限进行封装 2.4 获取用户…

博捷芯MIP专机:精密划片技术的革新者

BJX8160 精密划片机作为MINI行业的专用机,凭借其全自动上下料、高精度高速度um级无膜切割以及兼容多种上下料方式等特点,成为了工厂无人值守自动化的理想选择。同时,MIP专机作为博捷芯的独创产品,展现了博捷芯在精密划片机领域的领…

【嵌入式】STM32中的SPI通信

SPI是由摩托罗拉公司开发的一种通用数据总线,其中由四根通信线,支持总线挂载多设备(一主多从),是一种同步全双工的协议。主要是实现主控芯片和外挂芯片之间的交流。这样可以使得STM32可以访问并控制各种外部芯片。本文…