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

Oracle19C低版本一天遭遇两BUG(ORA-04031/ORA-600)

昨天帮朋友看一个系统异常卡顿的案例,在这里分享给大家

环境:Exadata X8M  数据库版本19.11

1.系统报错信息

表象为系统卡顿,页面无法刷出,登陆到主机上看到节点1 系统等待存在大量的 cursor: pin S wait on X等待

查看两个节点的alert log 看到有大量的ORA-04031报错 

2025-04-15T14:43:53.522183+08:00
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_m000_342669.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-01000: maximum open cursors exceeded
2025-04-15T14:44:50.515707+08:00
DDE: Problem Key 'ORA 4031' was completely flood controlled (0x6)
Further messages for this problem key will be suppressed for up to 10 minutes
2025-04-15T14:46:29.968518+08:00
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_mz08_287162.trc:
ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^2798","kglseshtTable")
2025-04-15T14:46:30.005517+08:00
Process MZ08 died, see its trace filetrace file信息
Trace file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_mz08_287162.trc
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
*** 2025-04-15T14:46:29.968405+08:00 (CDB$ROOT(1))
<error barrier> at 0x7ffceea153e8 placed ksv.c@7147
ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^2798","kglseshtTable")
OPIRIP: Uncaught error 447. Error stack:*** 2025-04-15T14:46:29.969405+08:00
ORA-00447: fatal error in background process
ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^2798","kglseshtTable")

MOS新加AI搜索能力

ORA-04031涉及到的bug非常多,遇到这类问题 优先查MOS,这里简单介绍一下MOS新推出的 AI搜索能力,可以根据你提供的报错 比较精准的给出搜索结果,并根据相关性将引用的文档列出来,这个功能非常好

根据AI的提示 简单翻译一下

请注意:服务提供的信息可能存在不准确之处,应进行独立验证。本解答适用于:Oracle Database - Enterprise Edition - 版本19.3.0.0.0至19.14.0.0.0

错误消息ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^2798","kglseshtTable")表明数据库无法从共享池分配所需的共享内存。

根据《数据库错误消息》文档,该错误的成因是所需共享内存超过了当前可用量。

解决方案如下:

  1. 增加初始化参数SGA_TARGET、MEMORY_SIZE或MEMORY_TARGET的值

  2. 若无法增加上述参数,则降低DB_CACHE_SIZE的值(如已设置)

  3. 若未使用SGA_TARGET、MEMORY_SIZE或MEMORY_TARGET,则增加对应内存池的大小:

    • 共享池不足时增加SHARED_POOL_SIZE

    • IMC堆不足时增加INMEMORY_SIZE

另一份相关文档《ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^1489","kglseshtTable")》提供了更具体的错误分析。

该错误由产品缺陷引起,已在未公开的Bug 33647820中记录。解决方案为:

  1. 应用19.15或更高版本的补丁集(该问题已标记为修复)

  2. 或应用适用于您版本和平台的补丁33647820(如存在)

检查补丁冲突请使用My Oracle Support (MOS)的Patch Planner工具。若对应平台和版本无可用补丁,请联系Oracle技术支持申请修复。

2.原因

很明显这个报错是因为触发了一个为 unpublished 的Bug ,根据文档 ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^1489","kglseshtTable") (Doc ID 2923103.1)

这个报错和文档中的描述完全一致,大概猜测是数据库实例运行太久 造成的share pool imbalance,该问题在19.15被解决,19.15之前版本BUG还是挺多的,如果有条件可以考虑升级到19.20+

话说Exadata稳定性还是非常强大的,这台机器从入场至今1387天(接近四年了),没有重启过,出问题这个实例也没有重启过, 如果不是这次遭遇BUG 应该还能跑很久。

3.解决方案

根据以上MOS的信息,有一下几种处理方式

紧急处理方式,强制刷新share pool

alter system flush shared_pool;

或者重启数据库 很多内存相关的bug可以通过重启数据库来解决,毕竟打补丁现在来不及;我这里选择的处理方案是轮流重启两个节点;

然而因为这个实例已经运行了太久 shutdown用了好长时间,并有大量pid 都需要手动kill,一下报出几百个PID,还好现在AI比较强大直接将这部分log丢给deepseek,让它把pid筛选出来就好了。

PDBPRO(6):Active process 279643 user 'grid' program 'oracle@test.com.cn', waiting for 'SQL*Net message from client'
PDBPRO(6):
PDBPRO(6):Active process 124660 user 'grid' program 'oracle@test.com.cn', waiting for 'SQL*Net message from client'
PDBPRO(6):
PDBPRO(6):Active process 246421 user 'grid' program 'oracle@test.com.cn', waiting for 'SQL*Net message from client'
PDBPRO(6):
PDBPRO(6):Active process 224818 user 'grid' program 'oracle@test.com.cn', waiting for 'read by other session'
PDBPRO(6):
PDBPRO(6):Active process 124650 user 'grid' program 'oracle@test.com.cn', waiting for 'SQL*Net message from client'
PDBPRO(6):

4.重启再遇到BUG

节点2重启正常,但是在节点1重启时发现只能mount 无法OPEN 关键部分报错如下

ALTER DATABASE OPEN /* db agent *//* {0:4:346} */2025-04-15T19:47:52.586367+08:00
CTWR started with pid=89, OS id=33744
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_ctwr_33744.trc  (incident=246935) (PDBNAME=CDB$ROOT):
ORA-04031: unable to allocate 52011112 bytes of shared memory ("large pool","unknown object","large pool","CTWR dba buffer")
Incident details in: /u01/app/oracle/diag/rdbms/test1/test11/incident/incdir_246935/test11_ctwr_33744_i246935.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
2025-04-15T19:47:53.513579+08:00
ORA-04031 heap dump being written to trace file /u01/app/oracle/diag/rdbms/test1/test11/incident/incdir_246935/test11_ctwr_33744_i246935.trc
2025-04-15T19:47:54.106979+08:00
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_ctwr_33744.trc  (incident=246936) (PDBNAME=CDB$ROOT):
ORA-00600: internal error code, arguments: [krcpasb_initial_alloc_failure], [3250176], [], [], [], [], [], [], [], [], [], []
ORA-04031: unable to allocate 52011112 bytes of shared memory ("large pool","unknown object","large pool","CTWR dba buffer")
Incident details in: /u01/app/oracle/diag/rdbms/test1/test11/incident/incdir_246936/test11_ctwr_33744_i246936.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
2025-04-15T19:47:54.598420+08:00
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_ctwr_33744.trc:
ORA-00600: internal error code, arguments: [krcpasb_initial_alloc_failure], [3250176], [], [], [], [], [], [], [], [], [], []
ORA-04031: unable to allocate 52011112 bytes of shared memory ("large pool","unknown object","large pool","CTWR dba buffer")
2025-04-15T19:47:54.598589+08:00
The change tracking error 600.
2025-04-15T19:47:54.598742+08:00
Stopping background process CTWR
2025-04-15T19:47:54.599120+08:00
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_ctwr_33744.trc:
ORA-00600: internal error code, arguments: [krcpasb_initial_alloc_failure], [3250176], [], [], [], [], [], [], [], [], [], []
ORA-04031: unable to allocate 52011112 bytes of shared memory ("large pool","unknown object","large pool","CTWR dba buffer")
2025-04-15T19:47:54.600494+08:00
Dumping diagnostic data in directory=[cdmp_20250415194754], requested by (instance=1, osid=33744 (CTWR)), summary=[incident=246936].
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_ctwr_33744.trc  (incident=246937) (PDBNAME=CDB$ROOT):
ORA-487 [] [] [] [] [] [] [] [] [] [] [] []
Incident details in: /u01/app/oracle/diag/rdbms/test1/test11/incident/incdir_246937/test11_ctwr_33744_i246937.trc

错误发生在启动 CTWR(Change Tracking Writer)进程时,最终导致 实例终止(instance crash)

 4.1 CTWR 进程启动失败

CTWR 是 Change Tracking Writer,用于实现 增量备份变更跟踪(Block Change Tracking) 功能。它启动时尝试在 large pool 中分配大块内存失败,引发了 ORA-4031:

"large pool", "CTWR dba buffer"

4.2 ORA-00600 + ORA-4031 的组合说明这是一个严重的系统级错误 

  • ORA-00600 [krcpasb_initial_alloc_failure] 是 内部内存分配失败

  • 错误位置在 Oracle kernel 模块 krcp* 系列,属于 change tracking 内部模块

  • 后续的 进程中止、系统状态转储、实例终止 都是级联故障结果

4.3是否命中 Oracle 官方 Bug?

查MOS 很快找到和这个报错和BUG  Bug 32428097 高度一致!

Bug 32428097 - ORA-600 [krcpasb_initial_alloc_failure] during CTWR startup

说明

  • Oracle 19.x 在使用 change tracking 时,CTWR 在启动期间分配内存失败,触发 ORA-04031 + ORA-00600 + 实例崩溃。

  • 这是 Oracle 确认的回归问题(Regression Bug)在19.13修复。

  • 常见于:

    • 大量数据变更(如恢复、测试环境还原)

    • large pool 不足

    • 某些版本升级后首次启用 change tracking

4.4解决方案

暂时关闭block change track

ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

5.总结

截止至2025年4月16日 Oracle19C已经更新至19.27,我认为至少在未来五年内,19c仍然会是主力版本;当然拉如果没有遭遇BUG,理论上可以不打补丁的,但是为了系统的稳定,仍然建议将19C升级至19.20+ (保守点19.15+)

附录oracle各版本支持时间线。

参考文档:

ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^1489","kglseshtTable") (Doc ID 2923103.1)

Bug 32428097 - BCT: CTWR crashes during "_bct_public_dba_buffer_size" reset with ORA-00600 [krcpasb_initial_alloc_failure] & ORA-4031 (Doc ID 32428097.8)

Release Schedule of Current Database Releases (Doc ID 742060.1)

相关文章:

Oracle19C低版本一天遭遇两BUG(ORA-04031/ORA-600)

昨天帮朋友看一个系统异常卡顿的案例&#xff0c;在这里分享给大家 环境&#xff1a;Exadata X8M 数据库版本19.11 1.系统报错信息 表象为系统卡顿&#xff0c;页面无法刷出&#xff0c;登陆到主机上看到节点1 系统等待存在大量的 cursor: pin S wait on X等待 查看两个节…...

golang处理时间的包time一次性全面了解

本文旨在对官方time包有个全面学习了解。不钻抠细节&#xff0c;但又有全面了解&#xff0c;重点介绍常用的内容&#xff0c;一些低频的可能这辈子可能都用不上。主打一个花最少时间办最大事。 Duration对象: 两个time实例经过的时间,以长度为int64的纳秒来计数。 常见的durati…...

C++学习:六个月从基础到就业——面向对象编程:重载运算符(下)

C学习&#xff1a;六个月从基础到就业——面向对象编程&#xff1a;重载运算符&#xff08;下&#xff09; 本文是我C学习之旅系列的第十三篇技术文章&#xff0c;是面向对象编程中运算符重载主题的下篇。本篇文章将继续深入探讨高级运算符重载技术、特殊运算符、常见应用场景和…...

【网络安全】谁入侵了我的调制解调器?(二)

文章目录 针对 TR-069 协议 REST API 的攻击思路攻击百万台调制解调器意外发现 Cox 后端 API 的授权绕过漏洞确认我们能够进入任何人的设备访问和更新任何Cox商业客户账户通过泄露的加密密钥覆盖任何人的设备设置执行对任何调制解调器的命令影响最后想说阅读本文前,请先行浏览…...

【4.1.-4.20学习周报】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract一、方法介绍1.1HippoRAG 1.2HippoRAG2二、实验2.1实验概况2.2实验代码2.3实验结果 总结 摘要 本博客介绍了论文《From RAG to Memory: Non-Parametri…...

MySQL 临时表介绍

在 MySQL 数据库中&#xff0c;临时表是一种特殊类型的表&#xff0c;它在数据库会话期间存在&#xff0c;会话结束时自动删除。临时表为处理特定的、临时性的数据操作任务提供了一种高效且便捷的方式。 一、临时表的创建 使用CREATE TEMPORARY TABLE语句来创建临时表。其语法…...

Rust : 关于*const () 与type erase

*const () 可以替代泛型&#xff0c;更加灵活。下面举了两个完全不一样的数据结构Foo和Bar&#xff1b;以及不同的函数&#xff0c;来说明。 一、 代码 trait Work {fn process(&self); } struct Foo(String);impl Work for Foo {fn process(&self) {println!("p…...

python学习—合并多个word文档

系列文章目录 python学习—合并TXT文本文件 python学习—统计嵌套文件夹内的文件数量并建立索引表格 python学习—查找指定目录下的指定类型文件 python学习—年会不能停&#xff0c;游戏抽签抽奖 python学习—循环语句-控制流 python学习—合并多个Excel工作簿表格文件 pytho…...

Java LinkedList深度解析:双向链表的实现艺术与实战指南

在Java集合框架中,LinkedList以其独特的双向链表结构和灵活的操作特性,成为处理动态数据的重要工具。本文将从底层实现、核心方法、性能优化到企业级应用场景,全方位解析这一经典数据结构的设计哲学与实战技巧。 一、LinkedList的设计定位与核心特性 1. 双向链表的本质 Lin…...

c#内存泄露的原因和解决办法

内存泄漏的原因 不正确的对象引用&#xff1a;最常见的原因是对象不再需要时未被垃圾回收器回收。例如&#xff0c;如果一个对象被一个不再使用的变量引用&#xff0c;它将不会被垃圾回收。事件订阅者未取消&#xff1a;如果订阅了一个事件但没有在对象不再需要时取消订阅&…...

android如何在生产环境中做到详实的日志收集而不影响性能?

在Android应用的生命周期中,日志收集贯穿于开发、测试到生产环境的每一个阶段。特别是在生产环境中,当应用部署到成千上万的用户设备上时,开发者无法直接访问用户的运行环境,也无法像在开发阶段那样通过调试工具实时查看代码执行情况。这时,日志就成为连接开发者与用户设备…...

MySQL安装实战:从零开始搭建你的数据库环境

MySQL作为全球最流行的开源关系型数据库&#xff0c;是开发者、运维人员及数据管理者的核心工具之一。本文将通过多平台安装指南、关键配置解析及常见问题排查三个维度&#xff0c;手把手带你完成MySQL环境搭建。 一、多平台安装指南 1. Linux系统&#xff08;以Ubuntu为例&am…...

[Python] UV工具入门使用指南——小试牛刀

背景 MCP开发使用到了uv&#xff0c;简单记录一下&#xff1a; 为什么MCP更推荐使用uv进行环境管理&#xff1f; MCP 依赖的 Python 环境可能包含多个模块&#xff0c;uv 通过 pyproject.toml 提供更高效的管理方式&#xff0c;并且可以避免 pip 的一些依赖冲突问题。…...

PclSharp ——pcl的c#nuget包

简介&#xff1a; NuGet Gallery | PclSharp 1.8.1.20180820-beta07 下载.NET Framework 4.5.2 Developer Pack&#xff1a; 下载 .NET Framework 4.5.2 Developer Pack Offline Installer 离线安装nupkg&#xff1a; nupkg是visual studio 的NuGet Package的一个包文件 安…...

多任务响应1(Qt)

多任务响应1 1. 架构概述2. 代码示例3. 说明 当系统的一些任务都是同一个对象产生&#xff0c;但需要交由不同对象进行响应。 比如&#xff1a;系统有多个按键&#xff0c;这些按键的共用一个槽函数&#xff0c;但不同的按键对应不同的功能响应。 推荐采用命令模式分散响应的思…...

1. k8s的简介

Kubernetes&#xff08;k8s&#xff09;简介 1. 产生背景 随着云计算和微服务架构的兴起&#xff0c;传统的单体应用逐渐被拆分为多个小型、松耦合的服务&#xff08;微服务&#xff09;。这种架构虽然提升了开发灵活性和可维护性&#xff0c;但也带来了新的挑战&#xff1a;…...

单片机 | 基于51单片机的倾角测量系统设计

以下是一个基于51单片机的倾角测量系统设计详解,包含原理、公式和完整代码: 一、系统原理 核心器件:MPU6050(集成3轴加速度计+陀螺仪) 主控芯片:STC89C52RC(51单片机) 显示模块:LCD1602液晶 工作原理: 通过MPU6050采集XYZ三轴加速度数据,利用重力加速度分量计算俯仰…...

div(HTML标准元素)和view(微信小程序专用组件)的主要区别体

div&#xff08;HTML标准元素&#xff09;和view&#xff08;微信小程序专用组件&#xff09;的主要区别体现在以下方面&#xff1a; 一、应用场景与开发框架 ‌适用平台不同‌ div是HTML/CSS开发中通用的块级元素&#xff0c;用于Web页面布局‌&#xff1b;view是微信小程序专…...

MGR实现mysql高可用性

一。MGR和PXC的区别 1. PXC的消息广播机制是在节点间循环的&#xff0c;需要所有节点都确认消息&#xff0c;因此只要有一个节点故障&#xff0c;则会导致整个PXC都发生故障。而MGR则是多数派投票模式&#xff0c;个别少数派节点故障时&#xff0c;一般不影响整体的可用性。这…...

新型多机器人协作运输系统,轻松应对复杂路面

受到鱼类、鸟类和蚂蚁等微小生物体协作操纵的启发&#xff0c;研究人员开发了多机器人协作运输系统&#xff08;Multirobot Cooperative Transportation Systems&#xff0c;MRCTS&#xff09;运输单个机器人无法处理的重型超大物体&#xff0c;可用于搜救行动、灾难响应、军事…...

汇编获取二进制

文章目录 AT&Tasm Intel AT&T mov_test.s mov $0,%r8dgcc -c mov_test.s 输出 mov_test.o,objdump -D mov_test.o 查看 mov_test.o: mov_test.o: file format elf64-x86-64Disassembly of section .text:0000000000000000 <.text>:0: 41 b8 00 00 00 00 …...

【秣厉科技】LabVIEW工具包——OpenCV 教程(19):拾遗 - imgproc 基础操作(上)

文章目录 前言imgproc 基础操作&#xff08;上&#xff09;1. 颜色空间2. 直方图3. 二值化4. 腐蚀、膨胀、开闭运算5. 梯度与轮廓6. 简易绘图7. 重映射 总结 前言 需要下载安装OpenCV工具包的朋友&#xff0c;请前往 此处 &#xff1b;系统要求&#xff1a;Windows系统&#x…...

学习笔记:金融经济学 第3讲

学习笔记&#xff1a;金融经济学 第3讲 注&#xff1a;A本金&#xff0c;n时间&#xff08;比如年&#xff09;&#xff0c;r利率一、 计算习惯1. 单息&#xff08;新产生的利息不算进本金重新计算利息&#xff0c;收款额A(1nr) &#xff09;2. 复利(新产生的利息算进本金重新计…...

NVIDIA RTX™ GPU 低成本启动零售 AI 场景开发

零售行业正在探索应用 AI 升级客户体验&#xff0c;同时优化内部流程。面对多重应用场景以及成本优化压力&#xff0c;团队可采用成本相对可控的方案&#xff0c;来应对多重场景的前期项目预演和落地&#xff0c;避免短期内大规模投入造成的资源浪费。 客户体验 AI 场景的研究…...

【网络】IP层的重要知识

目录 1.IP层的作用 2.主机和节点 3.网络层和数据链路层的关系 4.路由控制 4.1.路由控制的过程 4.2. IP地址与路由控制 4.3.路由控制表的聚合 4.4.静态路由和动态路由 4.5.动态路由的基础 5.数据链路的抽象化 5.1.数据链路不同&#xff0c;MTU则相异 5.2.路径MTU发…...

数理逻辑(Mathematical Logic)综论与跨学科应用

李升伟 整理 数理逻辑&#xff08;Mathematical Logic&#xff09;是现代逻辑学与数学交叉的核心学科&#xff0c;以严格的数学方法研究逻辑推理的形式与规律。其发展深刻影响了数学基础、计算机科学、语言哲学等领域。以下从多个维度综论数理逻辑&#xff1a; 1. 核心分支 命…...

OpenCV 模板匹配方法详解

文章目录 1. 什么是模板匹配&#xff1f;2. 模板匹配的原理2.1数学表达 3. OpenCV 实现模板匹配3.1基本步骤 4. 模板匹配的局限性5. 总结 1. 什么是模板匹配&#xff1f; 模板匹配&#xff08;Template Matching&#xff09;是计算机视觉中的一种基础技术&#xff0c;用于在目…...

一键解锁Landsat 9地表温度计算!ENVI与ArcGIS Pro全流程详解(无需NASA大气校正)

为什么选择Landsat 9的L2SP数据&#xff1f; 之前&#xff1a;《ArcGIS与ENVI——基于landsat与Modis影像的遥感技术的生态环境质量评价》&#xff0c;基于Landsat前期的产品计算温度反演数据需要一系列复杂的步骤。 现在&#xff1a; Landsat 8-9的Collection 2 Level-2&…...

RK3588的linux下实现HDMI输出分辨率及帧率的裁剪

bug反馈&#xff1a;客户现场反馈hdmi接显示屏出现概率性闪黑屏&#xff0c;排除线材&#xff0c;显示屏及GND等外部因素后&#xff0c;提出尝试降低hdmi的输出分辨率和帧率对比测试看看。 Step1&#xff1a;先直接在linux的sdk中找到板卡编译生成后的dts找到hdmi节点 然后找到…...

XR技术赋能艺术展演|我的宇宙推动东方美学体验化

本次广州展览现场引入我的宇宙XR体验模块&#xff0c;通过空间计算与动作捕捉技术&#xff0c;让观众在潮玩艺术氛围中体验虚拟互动&#xff0c;打造“看得懂也玩得动”的展演新场景。 作为科技与文化融合的推动者&#xff0c;我的宇宙正在以“体验科技”为媒介&#xff0c;为潮…...