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

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.lryc.cn/news/112524.html

相关文章:

  • SPINN:基于设备和云的神经网络协同递进推理
  • 数据结构-二叉树
  • Open3D 进阶(4)高斯混合点云聚类
  • 计算机组成和IO
  • STM32CUBUMX配置RS485 modbus STM32(从机)亲测可用
  • 系统设计类题目汇总
  • css滚动条样式指南
  • vue子组件修改父组件传递的变量(自定义日期时间组件,时间间隔为15分钟或者一个小时)
  • 【PyTorch】nn.Conv2d函数详解
  • 数智保险 创新未来 | GBASE南大通用亮相中国保险科技应用高峰论坛
  • 分布式天梯图算法在 Redis 图数据库中的应用
  • 观察者模式——对象间的联动
  • 【雕爷学编程】Arduino动手做(189)---特别苗条,使用微波传感器控制的纤细小车
  • 机器学习基础算法及其实现
  • docker安装MinIO
  • 第5章 运算符、表达式和语句
  • 24考研数据结构-图的存储结构邻接矩阵
  • 在线推算两个日期相差天数的计算器
  • Spring源码解析(七):bean后置处理器AutowiredAnnotationBeanPostProcessor
  • 【C#学习笔记】引用类型(1)
  • STM32CubeMX+VSCODE+EIDE+RT-THREAD 工程创建
  • java中javamail发送带附件的邮件实现方法
  • Stable Diffusion高阶技能(2)-稳定扩散百态:解密AI绘画工具「SD WebUI」的提示词高级使用策略
  • 【果树农药喷洒机器人】Part2:机器人变量喷药系统硬件选型
  • 解决vite+vue3项目npm装包失败
  • Rust之错误处理
  • docker compose快速编排
  • java.io.File类的使用
  • TypeScript技能总结(三)
  • python绿色版运行程序,python 绿色版免安装