首页 > 数据库 >坏块处理postgresql

坏块处理postgresql

时间:2023-11-08 14:02:27浏览次数:42  
标签:toast postgresql 处理 pg statistic 坏块 geo select

问题概述

现场实施发来求救,简单查询数据表报错,  业务应用出现异常

select * from middXXXXX.t_geo_mv_xxxxxegment_var;
 ERROR: missing chuunk number 0 for toast value 142340922 in pg_toast_2619

问题原因

此报错信息一般为数据库中有坏块导致 。

https://www.postgresql.org/message-id/[email protected]

解决方案

定位坏块数据,删除坏块数据,从备份还原坏块数据。

查询出哪个表存在坏块:

select relname from pg_class where reltoastrelid = (select oid from pg_class where relname = 'pg_toast_2619');
   relname    
--------------
 pg_statistic

查询出是存储统计信息的表  pg_statistic出现坏块。直接查询该表验证

select * from pg_statistic 
 >ERROR:missing chunk number 0 for toast value 14230922 in pg_toast_2619

和现场实施反馈的错误一致。 因为是统计信息,并不是业务数据,决定删除在坏块中的数据。表修复后再收集该表统计信息

select  * from  pg_statistic  limit 20000;
select  * from  pg_statistic  limit 20000 offset 20000  ; 
select  * from  pg_statistic  limit 20000 offset 40000  ; 
select  * from  pg_statistic  limit 20000 offset 60000  ; 
....依次执行,进行坏块定位

表修复后再收集该表统计信息

select * from pg_statistic  limit 22000 offset  23000;
  >ERROR:missing chunk number 0 for toast value 14230922 in pg_toast_2619
  --其他范围并没用异常

删除出现在坏块的数据

delete from   pg_statistic  where ctid in (   select ctid from  pg_statistic  limit 23000 offset 24000 )

删除后验证

select * from  pg_statistic ;--- 未报错
select * from  middXXXXX.t_geo_mv_xxxxxegment_var;--- 查询之前报错的表,并未再次报错

至此,问题解决。解决之后收集该表统计信息。

如果是业务表。

select  * from   t_geo_xxxxx;
  >ERROR:missing chunk number 0 for toast value 30270345 in pg_toast_47238
....依次执行,进行坏块定位

1 先定位坏块

select  * from   t_geo_xxxxx where obj_id= '26dx45cd.....'
  >ERROR:missing chunk number 0 for toast value 30270345 in pg_toast_47238
select  * from   t_geo_xxxxx where  obj_id= '26dx45cd.....'
---并未报错 证明该条数据再坏块中

2 删除在坏块中的数据

delete from  t_geo_xxxxx   where  obj_id= '26dx45cd.....'

3 从备份表中恢复该条数据( 可以从业务角度评估,该条数据是否可以忽略)

insert into t_geo_xxxxx  
selete  *  from  t_geo_xxxxx_bak   where  obj_id= '26dx45cd.....'

标签:toast,postgresql,处理,pg,statistic,坏块,geo,select
From: https://blog.51cto.com/u_13482808/8250193

相关文章

  • 无涯教程-批处理 - String length函数
    在DOS脚本中,没有定义用于查找字符串长度的长度函数,有一些自定义函数可用于相同的功能,以下是一个自定义函数的示例,用于查看字符串的长度。@echooffsetstr=HelloWorldcall:strLenstrstrlenechoStringis%strlen%characterslongexit/b:strLensetlocalenablede......
  • 无涯教程-批处理 - String Interpolation函数
    在DOS脚本中,可以使用set命令完成字符串插值,并在使用set命令时将数字定义的变量或任何其他文字排成一行。以下示例显示了如何也可以使用数字值进行字符串插值。@echooffSETa=HelloSETb=LearnfkSET/Ad=50SETc=%a%and%b%%d%echo%c%上面的命令产生以下输出。H......
  • SQL Server 事务处理 回滚事务
     创建表:SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[t1]([Id][int]NOTNULL,[c1][nvarchar](50)NULL,[c2][datetime]NULL,CONSTRAINT[PK_Table1]PRIMARYKEYCLUSTERED([Id]ASC)WITH(PAD_INDEX=OFF,S......
  • 软件测试|Selenium 自动化处理授权框、登录框和握手框
    简介Selenium是一个广泛用于自动化web浏览器操作的工具,可以用于模拟用户在浏览器中的交互。在自动化测试和网页数据抓取中,经常会遇到需要处理授权框、登录框和握手框的情况。在本文中,我们将详细介绍如何使用Selenium处理这些常见的弹出框,并提供示例代码。弹框分类在web自动化......
  • 带您了解 O2OA 流程中的人工活动处理方式
    这次咱们来介绍O2OA(翱途)开发平台流程引擎中的人工活动的处理方式和逻辑,O2OA(翱途) 主要采用拖拽可视化开发的方式完成流程的设计和配置,不需要过多的代码编写,业务人员可以直接进行修改操作。例如,咱们做一个“报销申请”流程,红色框框里的都是人工处理活动。 人工活动......
  • Node.js如何处理多个请求?
    Node.js如何处理多个请求?前言在计算机科学领域,关于并发和并行的概念经常被提及。然而,这两个术语常常被混为一谈,导致很多人对它们的理解存在着很多混淆。本文小编将通过对并发和并行的深入解析,帮助读者更好地理解它们之间的不同特点和应用场景。同时,文章还将介绍Node.js如何高效......
  • 倾斜摄影三维模型的根节点合并的并行处理技术分析
    倾斜摄影三维模型的根节点合并的并行处理技术分析 倾斜摄影三维模型的根节点合并是指将多个倾斜摄影拍摄得到的三维模型中的根节点进行合并,以减少模型大小和复杂度。在处理大规模的倾斜摄影数据时,传统的串行处理方法效率较低,因此需要使用并行处理技术来加速根节点合并的过程。......
  • 基于select进行并发处理
    目录处理流程服务端代码处理流程创建监听的套接字lfd=socket();将监听的套接字和本地的IP和端口绑定bind()给监听的套接字设置监听listen()创建一个文件描述符集合fd_set,用于存储需要检测读事件的所有的文件描述符通过FD_ZERO()初始化通过FD_SET()将监听的文......
  • 无涯教程-批处理 - TREE函数
    此批处理命令以任意级别的递归或深度显示当前目录所有子目录的树。TREE-语法TreeTREE-示例@echoofftree上面的命令将显示当前目录的树结构,以下是输出示例。FolderPATHlistingforvolumeWindows8_OSVolumeserialnumberisE41C-6F43C:.├───newdir├─......
  • Java异常处理
    三.Java异常处理(1)什么是异常?异常就是代表程序出现的问题。Java会将异常封装成一个异常对象,抛给JVM虚拟机,JVM虚拟机会将程序暂停再将异常对象打印出来。(2)异常的体系所有异常都继承了Throwable类。Error:代表的系统级别错误(属于严重问题),一般开发人员用不到,属于是sun公司自己用......