Oracle:ORA-00600[4137]问题分析

news2024/11/20 4:34:50

背景:

        在为用户的新机房环境Oracle 19.18版本数据库检查时,发现smon进程后台日志不断出现事务恢复报错Serial Transaction recovery caught exception 30319,进一步检查发现存在事务恢复失败报ORA-00600[4137]

问题:

        smon进程后台日志不断出现事务恢复报错Serial Transaction recovery caught exception 30319

        查看发现当前数据库存在死事务XID:2043,3,15714202

select b.name useg, b.inst# instid, b.status$ status, a.ktuxeusn
 xid_usn, a.ktuxeslt xid_slot, a.ktuxesqn xid_seq, a.ktuxesiz undoblocks,
 a.ktuxesta txstatus
 from x$ktuxe a, undo$ b
 where a.ktuxecfl like '%DEAD%'
 and a.ktuxeusn = b.us#
​
USEG                               INSTID     STATUS    XID_USN   XID_SLOT    XID_SEQ UNDOBLOCKS TXSTATUS
------------------------------ ---------- ---------- ---------- ---------- ---------- ---------- ----------------
_SYSSMU2043_2627544207$                 2          3       2043          3   15714202          1 ACTIVE

        进一步检查发现是该事务xid:2043.3.15714202恢复出现报错ORA-00600-[4137]

问题分析:

        分析报错的错误信息ORA-00600: internal error code, arguments: [4137], [2043.3.15714202],错误类型4137是指在进行事务回滚或者恢复时出现undo段头的XID与undo块里面的XID不一致的情况,参数2043.3.15714202是报错的事务XID号

        分析ORA-600的trc文件信息,可以看到从block(71/928)里面解析出来的xid为0x07fb.003.00efc79a(2403,3,15714202),XID的第一位为事务所在的undo段ID:2403

        通过undo段ID:2403的段头,可以发现block(71/928)就是undo段头所在的块,即从undo段头里面解析出来的xid为0x07fb.003.00efc79a

        继续往下看trc文件里面udno段头的信息,可以看到xid:0x07fb.003.00efc79a指向的undo块地址为0x11c14fb1

        将undo块地址换成10进制11c14fb1-->297881521,查找对应的块文件号file为71,块BLOCK_ID为85937

        在trc文件里面,可以看到ORA-00600也dump出了该undo块(71/85937)的信息,undo块里面包含的xid为0x07fb.01c.00efdd31,这里undo块的xid与undo段头xid:0x07fb.003.00efc79a出现了不一致的情况

        通过dump undo block方式,从trc里面也同样可以看到出现xid不一致的情况

oradebug setmypidAlter system dump undo block '_SYSSMU2043_2627544207$' xid 2043 3 15714202;oradebug tracefile_name

        继续分析出现undo段头的XID与undo块里面的XID不一致的,通过查看SMON的trc文件,发现最早出现ORA-600[4137]的时间为2023-04-10T20:16:29

        进一步检查alert日志发现在出现ORA-600报错之前2023-04-10T20:08:45,数据库进行了主备切换的操作,进一步了解到,当晚新环境的数据库通过failover方式激活了数据库以进行应用测试工作

        综上,我们可以确认出现事务恢复失败的原因是因为数据库进行了failover方式的主备切换,导致数据库出现了undo段头的XID与undo块里面的XID不一致的问题

问题解决:

        对于undo段头的XID与undo块里面的XID不一致的问题,最好的恢复方式是通过备份重新进行恢复,但当前这个环境还是测试环境,可以选择通过重建undo表空间的方式进行恢复

        创建一个临时的undo表空间undotbs2_temp,并将报错所在的数据库节点二的默认表空间切换为undotbs2_temp

create undo tablespace undotbs2_temp datafile​ size 10G;
alter system set undo_tablespace=undotbs2_temp sid='xxxx2';

        但由于undo段_SYSSMU2043_2627544207$存在的事务没办法正常恢复,所以一直处于online状态

        尝试通过设置事件10513禁用事务恢复,重启数据库

SQL> alter system set  event ='10513 trace name context forever, level 2' sid='xxxx2' scope=spfile;
​
System altered.

​        重启数据库之后,看见undo段_SYSSMU2043_2627544207$的状态变为PARTLY AVAILABLE,这种情况下,依然不能进行undo的重建

 

        只能通过隐含参数_corrupted_rollback_segments忽略该回滚段

alter system set "_corrupted_rollback_segments"='_SYSSMU2043_2627544207$' scope=spfile;

        设置参数后再一次重启数据库,undo段_SYSSMU2043_2627544207$成功忽略,这次终于可以对undo表空间进行重建

--查询不到undo端_SYSSMU2043_2627544207$的信息
SQL> select segment_name,tablespace_name,status
  2  from dba_rollback_segs
  3  where tablespace_name='UNDOTBS2' and status='_SYSSMU2043_2627544207$';
​
no rows selected
--重建undo表空间
SQL> drop tablespace UNDOTBS2 including contents and datafiles;
​
SQL> create undo tablespace UNDOTBS2 datafile size 30g;
SQL> alter tablespace UNDOTBS2 add datafile size 30g;

        重建undo表空间之后,问题得以解决,smon进程的trc日志不再输出事务恢复失败的信息,死事务的信息也查询不到。

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

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

相关文章

【对比】文心一言对飚ChatGPT实操对比体验

前言 🍊缘由 百度【文心一言】体验申请通过 本狗中午干饭时,天降短信,告知可以体验文心一言,苦等一个月的实操终于到来。心中这好奇的对比心理油然而生,到底是老美的【ChatGPT】厉害,还是咱度娘的【文心一…

地下污水厂智能照明控制应用

摘要:结合某地下污水厂项目,从结构、系统组成、系统功能、控制要求、场景模式等方面介绍了地下污水厂智能照明控制系统,探索了一套适用于地下污水厂的智能照明控制策略,以确保地下污水厂正常运行的照明需求。 关键词:智能照明控制系统;地下污…

苦熬10年,国产操作系统“归零”,新操作系统上新,跟Excel很像

苦熬10余年,国产操作系统自主研发 说到国内自主研发的操作系统,经验最丰富的品牌,当然是麒麟OS. 从诞生到发展,历经10多年的努力,麒麟os逐渐成为了国内自主研发操作系统领域中的一颗耀眼的明珠。麒麟OS不仅推出了许多…

Java基础(十)字符串相关类

1 字符串相关类之不可变字符序列:String 1.1 String的特性 java.lang.String 类代表字符串。Java程序中所有的字符串文字(例如"hello" )都可以看作是实现此类的实例。 字符串是常量,用双引号引起来表示。它们的值在创…

​如何恢复回收站清空的文件?

清空回收站后可以恢复删除的文件吗? 你是否遇到过清空回收站后才意识到某些文件不应删除的情况。发生这种情况时,许多人会感到恐慌,并且想知道是否有可能恢复回收站清空的文件。 事实上,你不必为此担心。当用户清空回收站时&a…

一种大于2GB ONNX模型onnxsim优化方法

大于2GB模型onnxsim优化很耗时,容易挂掉,而且需要特别大的系统内存。 这里提出一种比较简单的优化大于2GB ONNX模型的方法: 基本思路是 把卷积和矩阵乘的权重(参数量大于某个阈值)替换为ConstantOfShape&#xff0c…

GB/T 28181-2022 新版差异笔记

GB/T 28181-2022 新版差异笔记 文章目录 GB/T 28181-2022 新版差异笔记更改了标准范围删除部分术语和定义增加PTZ缩略语更改SIP监控域互联结构图更改了“联网系统通讯协议结构图”增加了媒体流数据传输的RTP时间戳要求增加了对H.265、AAC的支持更改了SDP协议的引用更改了与其他…

Vue中生成二维码组件——vue-qr——插件市场

最近在重构一个老系统,老系统用的是vueelementUi的框架,现在要更新为vueantdesign的框架模式。 下面记录一下用到的插件: 1.Vue中生成二维码组件——vue-qr vue-qr官网链接:https://www.npmjs.com/package/vue-qr 1.1 安装vue-…

Simulation Extractable Versions of Groth’s zk-SNARK Revisited学习笔记

1. 引言 等人2020年论文《Simulation Extractable Versions of Groth’s zk-SNARK Revisited》,开源代码实现见: https://github.com/Baghery/ABPR22(Rust,基于arkworks开发。使用了Multi-Scalar Multiplication (MSM)技术来优化…

json模块和pickle模块

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 json和pickle模块 json模块序列化与反序列化json模块中的方法 pickle模块 专栏:《python从…

IT运维:Windows常用的命令行客户端

对于IT运维人员来说,和命令打交道是必不可少的事情,拥有一个好用的CMD命令行工具,对提升效率是非常有必要的,今天给大家分享Windows常用的命令行客户端,希望对大家能有所帮助! 1、PowerShell PowerShell是W…

4月21日作业

#include <iostream> #include <cstring> using namespace std; //定义类 class myString { private: char *str; int size; public: //无参构造 myString():size(32) { str new char[size]; strcpy(str,""); cout << "无参构造&qu…

Windows Server 2012 R2 部署.net6网站

之前部署在Windows Server 2016上很正常没有什么问题 但是在2012 R2上部署失败&#xff08;503&#xff09;&#xff0c;网上搜查后&#xff0c;发现要按照下面的顺序配置服务器 安装Windows操作系统布丁 Download Windows Server 2012 R2 更新 (KB2919355) from Official M…

搭建Serv-U FTP服务器共享文件并外网远程访问「无公网IP」

文章目录 1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装 3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 转载自内网穿透工具的文章&#xff1a;使用Serv-U搭建FTP服务器并公网访问【内网穿透】 1. 前言…

pycharml利用ddddocr和selenium识别验证码并登录

文章目录 1OCR2 ddddocr3使用案例4 常见问题代码详情获得XPATH方法 1OCR OCR (Optical Character Recognition&#xff0c;光学字符识别)&#xff0c;是指电子设备(例如扫描仪或 数码相机)检查纸上打印的字符&#xff0c;通过检测暗、亮的模式确定其形状&#xff0c;然后用字符…

Excel数据分列的详细用法

Excel数据分列的详细用法 数据分列常见功能有日期格式的转换&#xff0c;有规律的数据分列&#xff0c;固定宽度的数据分列&#xff0c;读书屋办公教程网这篇文章将详细讲解Excel快速填充及文本与数值的互换。 软件演示版本&#xff1a;Microsoft Excel2019 快速填充 如下图表…

Dialect及Operation详解

参考资料&#xff1a; [MLIR] Dialect及Operation详解 - 知乎 (zhihu.com) 2. Dialect 及Operation 2.1Dialect 2.1.1Dialect 是什么&#xff1f; 从源程序到目标程序&#xff0c;要经过一系列的抽象以及分析&#xff0c;通过 Lowering Pass 来实现从一个IR到另一个IR的转换。…

力扣刷题——双数之和

很多人去力扣刷题都是数组的第一题&#xff0c;也就是双数之和&#xff0c;相信这也是很多人劝退题目&#xff0c;甚至对自己学过的知识产生了怀疑&#xff0c;这真的是我学完C语言&#xff0c;Java&#xff0c;Python或C之后能做出来的题目吗&#xff1f;直接劝退了很多人&…

使用 Lombok 的 @Accessors(chain=true) 的注意事项

前言 大家在日常开发中想必都有使用过 Lombok 的 Accessors(chaintrue) 注解吧&#xff0c;这个确实有时候会让我们的get/set方法变的非常的便捷&#xff0c;但是从中又隐藏了一些注意细节&#xff0c;我们一起来看看。 注解介绍 Accessors(chaintrue) 在我们的实体类或者对…

curl检测网页的用法

一般网页状态为200都是正常的&#xff0c;还有一种情况是网页做了跳转&#xff0c;这种情况下网页状态码为301&#xff0c;http的head里会有lcation记录跳转的地址 这个方法不太好用&#xff0c;取出来的值后面会带回车键值可以将值输出到文本里就会看到末尾有带回车键值&…