Oracle-ORA-00600:[ktspffbmb:objdchk_kcbnew_3]

问题背景:

        应用执行存储过程报错ORA-00600: 内部错误代码, 参数: [ktspffbmb:objdchk_kcbnew_3], [0], [3303775], [4], [], [], [], [], [], [], [], [],导致过程无法正常执行

ORA-00600: 内部错误代码, 参数: [ktspffbmb:objdchk_kcbnew_3], [0], [3303775], [4], [], [], [], [], [], [], [], []Tue Aug 01 09:35:33 2023
Errors in file /u01/app/oracle/diag/rdbms/test/test/trace/test_ora_190479.trc  (incident=1346011):
ORA-00600: , : [ktspfmdb:objdchk_kcbnew_3], [1], [3303763], [4], [], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/test/test/incident/incdir_1346011/test_ora_190479_i1346011.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.

问题分析:

        通过600的错误函数代码ktspffbmb:objdchk_kcbnew_3以及当前数据库的版本11.2.0.4以及补丁版本,在Oracle的mos官网查到了疑似Bug 16862882 

 

de62c0fbb2561ace46b7385fab73c6e3.png

        Bug的触发场景以及原因如下

        1 对象被drop删除操作进入到回收站,这时对象块会从缓冲区被刷出

        2 同时被删除的对象发生了事务恢复,恢复操作会将L1 BMB(ASSM自动段存储空间管理的L1位图块)带入缓冲区并进行修改

        3 回收站的对象被清理(人为清理或者由于表空间不够导致回收站对象被清空复用),该操作不会刷新相关对象的块

        4 清理的块被重新分配给新的会话对象使用,此时可能会发生该报错ORA-600 [ktspffbmb:objdchk_kcbnew_3],由于缓存区的块检验失败

 

39da683feba4fb734414eb9f3f2f6738.png

        简单来说就是该bug会导致回收站被清空的对象,在复用时出现缓存区的块出现校验失败的问题并抛出ORA-00600的报错

        接下来查看报错的trc文件以及alert日志,确认是否匹配该bug

        查看trc里面的call stack函数堆栈信息,可以看到当前的会话在执行dml操作,报错的位置在函数kcbnew[CACHE_RCV],cache_rcv为cache recovery,推测是在对缓存的块进行检查校验时发生问题

 

8713ead09582a39f647488a6be784658.png

        查看报错的块里面对象为data_object_id:3303616,object_id:92000,flags为block_written_once

 

b2599e8dc0badae1d224e9f7e33caf98.png

        块里面的对象已经被删除无法查询到

 

9aba72f017e2a58ec6873bc56ede92d8.png

        trc里面的redo dump,可以看到对象复用的操作Object reuse: tsn=10 objd=3303616,可以que'd当前的块应该为复用的块,被分配给新会话使用

 

1d780c055852311c22e55bbbcf74e326.jpeg

        查看块里面的事务信息,存在未处理完的事务XID:0x0019.01b.0067e081分别对应25号回滚段,27号slot以及6807681序列

 

dcd05de8027b9ab822e6e4b47cba68d2.png

  • ---- = transaction is active, or committed pending cleanout

  • C--- = transaction has been committed and locks cleaned out

  • -B-- = this undo record contains the undo for this ITL entry

  • --U- = transaction committed (maybe long ago); SCN is an upper bound

  • ---T = transaction was still active at block cleanout SCN

        从事务表x$ktuxe以及smon的trc日志,我们可以确认块里面的XID:0x0019.01b.0067e081为回滚的死事务

 

9938ad2dde3d925ad3aaeecfcdc6f4f3.png

 

fb6c14216aeac3a573a72a750e7eb4af.png

        查看alert日志,可以看到记录到了事务回滚之前有一个drop table的操作,没有加purge所以这个操作会进入到回收站

 

5229a0804cb8efdae1357b4e67fa42e2.png

        分析到这里,我们可以基本确认当前问题场景问题匹配Bug 16862882 

        1 会话执行了drop table test_B07,操作没有加purge对象进入到回收站,此时对象块会从缓冲区被刷出

        2 删除之后,该对象的块发生了事务回滚操作XID:0x0019.01b.0067e081,恢复操作会将L1块带入缓冲区并进行修改

        3 回收站的对象由于表空间不够导致对象被从回收站清空复用,该操作不会刷新相关对象的块

        4 清理的块被重新分配给新的会话对象使用,在对缓存的块进行检查校验时发生报错ORA-600 [ktspffbmb:objdchk_kcbnew_3]

问题修复:

        1 通过安装小补丁16862882进行修复,但目前在官网查看的只有基于11.2.0.4以及11.2.0.4.19 exadata database版本的补丁,所以通过安装补丁方式修复,存在补丁资源获取问题

 

6c162faf67fd114a01ea6f26f376c77e.png

        2 这是一个缓存块的校验问题,可以通过刷新数据库实例的块缓存buffer cache规避该问题

alter system flush buffer_cache

        3 Bug触发机制还与回收站的对象使用有关,可以尝试在drop table时通过加purge,不让对象进入回收站规避该问题的发生

 

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

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

相关文章

结构体和 Json 相互转换(序列化反序列化)

关于 JSON 数据 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也 易于机器解析和生成。RESTfull Api 接口中返回的数据都是 json 数据。 Json 的基本格式如下: { "a": "Hello", "b": "…

机器视觉赛道持续火热,深眸科技坚持工业AI视觉切入更多应用领域

随着深度学习等算法的突破、算力的不断提升以及海量数据的持续积累,人工智能逐渐从学术界向工业界落地。而机器视觉作为人工智能领域中一个正在快速发展的分支,广泛应用于工业制造的识别、检测、测量、定位等场景,相较于人眼,在精…

学习才是测试猿的永动力!超详细的 pytest 钩子函数 之初始钩子和引导钩子来啦

前 言 前几篇文章介绍了 pytest 点的基本使用,学完前面几篇的内容基本上就可以满足工作中编写用例和进行自动化测试的需求。从这篇文章开始会陆续给大家介绍 pytest 中的钩子函数,插件开发等等。仔细去看过 pytest 文档的小伙伴,应该都有发现…

Visual Studio 2022的MFC框架——应用程序向导

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Visual Studio 2022开发工具下的MFC框架知识。 MFC(Microsoft Foundation Class,微软基础类库)是微软为了简化程序员的开发工作所开发的一套C类的集合&#xf…

RabbitMQ的安装

RabbitMQ的安装 1、Windows环境下的RabbitMQ安装步骤 使用的版本:otp_win64_23.2 rabbitmq-server-3.8.16 版本说明:https://www.rabbitmq.com/which-erlang.html#compatibility-matrix 1.1 下载并安装erlang RabbitMQ 服务端代码是使用并发式语言…

【vim 学习系列文章 4 - vim与系统剪切板之间的交互】

文章目录 背景1.1.1 vim支持clipboard 检查1.1.2 vim的寄存器 上篇文章:【vim 学习系列文章 3 - vim 选中、删除、复制、修改引号或括号内的内容】 背景 从vim中拷贝些文字去其它地方粘贴,都需要用鼠标选中vim的文字后,Ctrlc、Ctrlv&#x…

怎么绘制汤姆索亚历险记思维导图?掌握这几个绘制步骤就可以

怎么绘制汤姆索亚历险记思维导图?如果你正在为学习汤姆索亚历险记而感到困惑,或者你想要更好地理解小说中的人物关系、情节和舞台背景,那么一个清晰的思维导图就可以帮助你梳理思路。那么下面就给大家介绍一下绘制步骤。 在进行思维导图绘制的…

docker容器监控:Cadvisor +Prometheus+Grafana的安装部署

目录 Cadvisor PrometheusGrafana的安装部署 一、安装docker: 1、安装docker-ce 2、阿里云镜像加速器 3、下载组件镜像 4、创建自定义网络 二、部署Cadvisor 1、被监控主机上部署Cadvisor容器 2、访问cAdvisor页面 三、安装prometheus 1、部署Prometheus…

Clion开发Stm32之存储模块(W25Q64)驱动编写

前言 涵盖之前文章: Clion开发STM32之HAL库SPI封装(基础库) W25Q64驱动 头文件 #ifndef F1XX_TEMPLATE_MODULE_W25Q64_H #define F1XX_TEMPLATE_MODULE_W25Q64_H#include "sys_core.h" /* Private typedef ---------------------------------------------------…

LNMP搭建

LNMP:目前成熟的企业网站的应用模式之一,指的是一套协同工作的系统和相关软件 能够提供静态页面服务,也可以提供动态web服务。 这是一个缩写 L linux系统,操作系统。 N nginx网站服务,也可也理解为前端&#xff0c…

c++画出分割图像,水平线和垂直线

1、pca 找到图像某个区域的垂直线&#xff0c;并画出来 // 1、 斑块的框 血管二值化图&#xff0c;pca 找到垂直血管壁的直线, 还是根据斑块找主轴方向吧// Step 1: 提取斑块左右范围内的血管像素点坐标&#xff0c;std::vector<cv::Point> points;for (int y 0; y <…

公文校对要点:确保准确性和规范性

公文校对是确保文档准确性和规范性的重要步骤。以下是公文校对的要点&#xff1a; 1.拼写和语法检查&#xff1a;仔细检查文档中的拼写错误和语法错误。确保词语的正确拼写&#xff0c;并使用正确的语法结构和标点符号。 2.信息准确性&#xff1a;核对文档中的事实和数据&#…

MySQL流程控制(二十八)

二八佳人体似酥&#xff0c;腰悬利剑斩愚夫&#xff0c;虽然不见人头落,暗里教君骨髓枯。 上一章简单介绍了MySQL变量(二十七) ,如果没有看过,请观看上一章 一. 定义条件与处理程序 定义条件是事先定义程序执行过程中可能遇到的问题&#xff0c;处理程序定义了在遇到问题时应…

广州VR制作 | 利用VR元宇宙平台开展林地管理培训的优势

在林业领域&#xff0c;实地调查是获取准确数据和深入了解森林生态的重要手段。然而&#xff0c;传统的实地调查方法存在诸多问题&#xff0c;如时间成本高、人力物力投入大、安全风险高等。为了解决这些教学痛点&#xff0c;我们引入了虚拟现实(VR)技术&#xff0c;通过虚拟林…

低代码平台:初创公司的理想选择

对于初创公司而言&#xff0c;时间和资源是宝贵的。他们需要快速构建和部署应用程序&#xff0c;以满足业务需求&#xff0c;提高效率&#xff0c;并保持竞争优势。在这个背景下&#xff0c;低代码平台成为了初创公司的一个理想选择。而Zoho Creator作为一款出色的低代码平台&a…

Linux ARM64架构 动态替换 altinstructions

文章目录 简介一、altinstructions节1.1 .altinstructions1.2 .rela.altinstructions 二、内核模块重定位源码分析参考资料 简介 在内核开发中&#xff0c;有时需要对内核代码进行修补&#xff0c;以解决bug、优化性能或引入新功能。替代指令&#xff08;altinstructions&…

Connection reset原因分析及解决思路

Connection reset原因分析及解决思路 我们在开发过程中经常会出现Connection reset问题&#xff0c;包括http调用&#xff0c;数据库连接等场景。出现Connection reset的原因很多&#xff0c;本文从tcp层面简单介绍下Connection reset出现的原因和问题&#xff0c;以及在实际开…

宏观上看Spring创建对象的过程

宏观上看Spring创建对象的过程 对于对象而言&#xff0c;可以分为简单对象和复杂对象&#xff1b; 简单对象 简单对象指可以直接new的对象&#xff1b; Spring在创建这些对象时&#xff0c;是基于反射来完成的。复杂对象 复杂对象指不能直接new的对象。 比如&#xff1a;要得到…

运行 Jmeter 文件生成 HTML 测试报告,我选择 ANT 工具

概述 ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具&#xff0c;大多用于 Java 环境中的软件开发。 在与 Jmeter 生成的 jmx 文件配合使用中&#xff0c;ant 会完成jmx计划的执行和生成jtl文件&#xff0c;并将jtl文件转化为html页面进行查看。 还可…

Django架构图

1. Django 简介 基本介绍 Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架 使用 Django&#xff0c;只要很少的代码&#xff0c;Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容&#xff0c;并进一步开发出全功能的 Web 服务 Django 本身…