Oracle 11G还有新BUG?ORACLE 表空间迷案!
前段时间遇到一个奇葩的问题,在开了SR和oracle support追踪两周以后才算是有了不算完美的结果,在这里整理出来给大家分享。
1.问题描述
12/13我司某基地MES全厂停线,系统卡死不可用,通知到我排查,查看alert log看到是表空间不足


怎么可能?我系统加了自动添加数据文件的脚本和表空间使用率的脚本?邮件中没有看到报警触发啊?

如下是自动检查表空间使用率,达到阈值会自动添加数据文件的脚本
Oracle自动处理表空间不足脚本-CSDN博客
当下查询该表空间使用率,发现该表空间还剩余73GB 那为什么会报表空间不足呢?为了不耽误系统使用,我先添加了四个数据文件,来解决此问题;

如下是我检查TBS使用率的sql
SELECT t.*FROM (SELECT a.tablespace_name,a.unalloc_size,nvl(f.free_size, 0) free_size,a.used_size - nvl(f.free_size, 0) used_size,round((a.used_size - nvl(f.free_size, 0)) /(a.unalloc_size + a.used_size),2) capacityFROM (SELECT tablespace_name,round(SUM(bytes) / 1024 / 1024) free_sizeFROM dba_free_spaceGROUP BY tablespace_name) f,(SELECT tablespace_name,round(SUM(user_bytes) / 1024 / 1024) used_size,round(SUM(decode(autoextensible,'YES',decode(sign(maxbytes - user_bytes),-1,0,maxbytes - user_bytes),0)) / 1024 / 1024) unalloc_sizeFROM dba_data_filesGROUP BY tablespace_name) aWHERE 1 = 1AND a.tablespace_name = f.tablespace_name(+)) t--WHERE capacity >= 0.60--AND (unalloc_size + free_size) < 4000--AND (unalloc_size + free_size) < used_size / 2ORDER BY capacity DESC;
2.问题溯源
2.1是不是空间碎片引起的?
明明还有空间为什么会报错空间不足呢?从这个结果看该表空间只有109m是unalloc的,有73GB是free,最先的怀疑就是是不是空间碎片太多
导致无法分配出连续的8192个blocks 8k*8k=64M?

查询表空间碎片脚本如下
参考文档 Script to Detect Tablespace Fragmentation (Doc ID 1020182.6)
SET ECHO offREM NAME:TFSTSFRM.SQLREM USAGE:"@path/tfstsfgm"REM ------------------------------------------------------------------------REM REQUIREMENTS:REM SELECT ON DBA_FREE_SPACEREM ------------------------------------------------------------------------REM PURPOSE:REM The following is a script that will determine how many extentsREM of contiguous free space you have in Oracle as well as theREM total amount of free space you have in each tablespace. FromREM these results you can detect how fragmented your tablespace is.REMREM The ideal situation is to have one large free extent in yourREM tablespace. The more extents of free space there are in theREM tablespace, the more likely you will run into fragmentationREM problems. The size of the free extents is also very important.REM If you have a lot of small extents (too small for any nextREM extent size) but the total bytes of free space is large, thenREM you may want to consider defragmentation options.REM ------------------------------------------------------------------------REM DISCLAIMER:REM This script is provided for educational purposes only. It is NOTREM supported by Oracle World Wide Technical Support.REM The script has been tested and appears to work as intended.REM You should always run new scripts on a test instance initially.REM ------------------------------------------------------------------------REM Main text of script follows:create table SPACE_TEMP (TABLESPACE_NAME CHAR(30),CONTIGUOUS_BYTES NUMBER)/declarecursor query is select *from dba_free_spaceorder by tablespace_name, block_id;this_row query%rowtype;previous_row query%rowtype;total number;beginopen query;fetch query into this_row;previous_row := this_row;total := previous_row.bytes;loopfetch query into this_row;exit when query%notfound;if this_row.block_id = previous_row.block_id + previous_row.blocks thentotal := total + this_row.bytes;insert into SPACE_TEMP (tablespace_name)values (previous_row.tablespace_name);elseinsert into SPACE_TEMP values (previous_row.tablespace_name,total);total := this_row.bytes;end if;previous_row := this_row;end loop;insert into SPACE_TEMP values (previous_row.tablespace_name,total);end;./set pagesize 60set newpage 0set echo offttitle center 'Contiguous Extents Report' skip 3break on "TABLESPACE NAME" skip page duplicatespool contig_free_space.lisremcolumn "CONTIGUOUS BYTES" format 999,999,999column "COUNT" format 999column "TOTAL BYTES" format 999,999,999column "TODAY" noprint new_value new_today format a1remselect TABLESPACE_NAME "TABLESPACE NAME",CONTIGUOUS_BYTES "CONTIGUOUS BYTES"from SPACE_TEMPwhere CONTIGUOUS_BYTES is not nulland tablespace_name='TBS_MYCIM'and CONTIGUOUS_BYTES >100000000order by TABLESPACE_NAME, CONTIGUOUS_BYTES desc;select tablespace_name, count(*) "# OF EXTENTS",sum(contiguous_bytes) "TOTAL BYTES"from space_tempgroup by tablespace_name;spool offdrop table SPACE_TEMP/
我对脚本做了调整增加了file_Id 这里剔除掉新加的四个数据文件的file_id 查到该表空间原有数据文件中的连续空间,新加数据文件并不会像ASM新加磁盘似的,会对数据文件做rebalance,除非对表空间做shrik,move等动作才会释放,也就是说这些连续空间就是原来有的。
从如下的查询结果来看 可以看到很多数据文件还有很多的连续free blocks 怎么都不至于出现8k连续的blocks无法分配的情况才对;
SQL> @/home/oracle/jobs/checktbs.sql
TABLESPACE NAME FILE ID CONTIGUOUS BYTES
------------------------------ ------- ----------------
TBS_XXXXX 80 3,672,113,152
TBS_XXXXX 81 3,538,026,496
TBS_XXXXX 79 2,817,523,712
TBS_XXXXX 79 2,779,316,224
TBS_XXXXX 81 2,483,552,256
TBS_XXXXX 80 2,078,867,456
TBS_XXXXX 79 1,238,564,864
2.2 会不会是异常的sql操作
在和oracle support沟通中提到CTAS失败可能会导致被占用的空间释放,那么我们查询问题时段的sql看看都有哪些操作
检查出问题前一个小时ASH 看看有什么sqlop
select distinct sql_opname from dba_hist_active_sess_history where sample_time>to_timestamp('2024/12/13 17:00:00','yyyy/mm/dd hh24:mi:ss') and sample_time<to_timestamp('2024/12/13 18:00:00','yyyy/mm/dd hh24:mi:ss');
看到除了一个create index外并无异常

检查系统当时的ddl log 没有看到有create index记录,考虑到我是用的的 after ddl trigger来记录ddl日志,也就是说如果失败了是不被记录到的。

检查问题create index的ASH,发现只被捕获到一个snap(10s)是一个schedule相关的后台进程,这么短时间不太可能占用这么大空间。
select sample_time,sql_id,session_id,session_type,sql_opname,program from dba_hist_active_sess_history
where sample_time>to_timestamp('2024/12/13 17:00:00','yyyy/mm/dd hh24:mi:ss')
and sample_time<to_timestamp('2024/12/13 18:00:00','yyyy/mm/dd hh24:mi:ss')
and sql_opname='CREATE INDEX';

后续又和oracle support 系统梳理了问题时间的ASH的sql记录,考虑到被insert extend的blocks即使rollback 也不会被释放,也没有查询到类似有CTAS(create table as)等异常操作
PS:如果CTAS失败是无法使用logminer挖掘查询到了的
3.结论
在经过和oracle support沟通了两周,经过印度工程师,大连工程师以及oracle 内部讨论给出的最终答复就是未知BUG;Oracle 11.2.0.4虽然上线了超过11年,依然是目前市场主流版本之一,从这个版本上市以来我也已经维护了很多很多套11G的库,确实从来没有遇到过这种问题,以现有已经查询到的数据无法得到逻辑自洽的合理解释,如果各位网友还有什么排查思路也请留言!

此次故障造成了2小时的生产停滞,这种情况领导一定会追根溯源,如果没有原厂技术支持,那肯定是没有办法交代,所以在之前的文章“谁是DBA圈里最大的背锅侠”就提到,原厂才是DBA圈里最大的背锅侠,当然了如果是BUG这个锅被的也不冤;如果这个问题是我自己来追,没有追到最终的原因,我只能说我查不到原因?老板会怀疑你的能力,如果原厂说这个未知BUG,那这就是结论!
谁是DBA圈里最大的背锅侠?_uncorrected hardware memery error in user-access a-CSDN博客
相关文章:
Oracle 11G还有新BUG?ORACLE 表空间迷案!
前段时间遇到一个奇葩的问题,在开了SR和oracle support追踪两周以后才算是有了不算完美的结果,在这里整理出来给大家分享。 1.问题描述 12/13我司某基地MES全厂停线,系统卡死不可用,通知到我排查,查看alert log看到是…...
java实现预览服务器文件,不进行下载,并增加水印效果
通过文件路径获取文件,对不同类型的文件进行不同处理,将Word文件转成pdf文件预览,并早呢更加水印,暂不支持Excel文件,如果浏览器不支持PDF文件预览需要下载插件。文中currentUser.getUserid(),即为增加的水…...
SAP月结、年结前重点检查事项(后勤与财务模块)
文章目录 一、PP生产模块相关的事务检查二、SD销售模块相关的事务检查:三、MM物料管理模块相关的事务检查四、FICO财务模块相关的事务检查五、年结前若干注意事项【SAP系统PP模块研究】 #SAP #生产订单 #月结 #年结 一、PP生产模块相关的事务检查 1、月末盘点后,生产用料的…...
MYSQL 高阶语句
目录 1、排列查询 2、区间判断 3、对结果进行分组查询 4、limit和distinct 5、设置别名 通配符 6、子查询 7、exists语句,判断子查询的结果是否为空 8、视图表 9、连接查询 1. 内连接 2. 左连接 3. 右连接 create table info ( id int primary key, name…...
VS Code中怎样查看某分支的提交历史记录
VsCode中无法直接查看某分支的提交记录,需借助插件才行,常见的插件如果git history只能查看某页面的改动记录,无法查看某分支的整体提交记录,我们可以安装GIT Graph插件来解决这个问题 1.在 VSCode的插件库中搜索 GIT Graph安装&a…...
知识库搭建实战一、(基于 Qianwen 大模型的知识库搭建)
基于 Qianwen 大模型的知识库开发规划 基础环境搭建可以参考文章:基础环境搭建 在构建智能应用时,知识库是一个重要的基础模块。以下将基于 Qianwen 大模型,详细介绍构建一个标准知识库的设计思路及其实现步骤。 知识库的核心功能模块 知识库开发的核心功能模块主要包括…...
ctr方法下载的镜像能用docker save进行保存吗?
ctr 和 docker 是两个不同的容器运行时工具,它们使用的镜像存储格式是兼容的(都是 OCI 标准镜像),但它们的镜像管理方式和存储路径不同。因此,直接使用 docker save 保存 ctr 拉取的镜像可能会遇到问题。 关键点 ctr 和 docker 的镜像存储位置不同: ctr(containerd)的镜…...
win32汇编环境下,窗口程序中生成listview列表控件及显示
;运行效果 ;抄下面源码在radasm里面,可以直接编译运行。重要部分加了备注。 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&…...
运维之网络安全抓包—— WireShark 和 tcpdump
为什么要抓包?何为抓包? 抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。为什么要抓包?因为在处理 IP网络…...
【复刻】数字化转型是否赋能企业新质生产力发展?(2015-2023年)
参照赵国庆(2024)的做法,对来自产业经济评论《企业数字化转型是否赋能企业新质生产力发展——基于中国上市企业的微观证据》一文中的基准回归部分进行复刻基于2015-2023年中国A股上市公司数据,实证分析企业数字化转型对新质生产力…...
【数据仓库】spark大数据处理框架
文章目录 概述架构spark 架构角色下载安装启动pyspark启动spark-sehll启动spark-sqlspark-submit经验 概述 Spark是一个性能优异的集群计算框架,广泛应用于大数据领域。类似Hadoop,但对Hadoop做了优化,计算任务的中间结果可以存储在内存中&a…...
2 秒杀系统架构
第一步 思考面临的问题和业务场景 秒杀系统面临的问题: 短时间内并发非常高,如果按照秒杀的并发做相应的承载会造成大量资源的浪费。第二解决超卖的问题。 第二步 思考目前的处境和解决方案 因为秒杀系统属于短时间内的高并发问题,我们不可能使用那么…...
UNI-APP_i18n国际化引入
官方文档:https://uniapp.dcloud.net.cn/tutorial/i18n.html vue2中使用 1. 新建文件 locale/index.js import en from ./en.json import zhHans from ./zh-Hans.json import zhHant from ./zh-Hant.json const messages {en,zh-Hans: zhHans,zh-Hant: zhHant }…...
【详解】AndroidWebView的加载超时处理
Android WebView的加载超时处理 在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页。然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题。为了提升用户体验,我们需要对WebView的加载超时…...
RedisDesktopManager新版本不再支持SSH连接远程redis后
背景 RedisDesktopManager(又名RDM)是一个用于Windows、Linux和MacOS的快速开源Redis数据库管理应用程序。这几天从新下载RedisDesktopManager最新版本,结果发现新版本开始不支持SSH连接远程redis了。 解决方案 第一种 根据网上有效的信息,可以回退版…...
开源 SOAP over UDP
简介 看到有人想要实现两个 EXE 之间的互动。这可以采用 RPC 的方式嘛。 Delphi 现成的 RPC 框架,比如 WebService,比如 DataSnap; 当然,github 上面还有第三方开源的 XMLRPC 等等。 为啥要搞一个 UDP Delphi 的 WebService …...
Levenshtein 距离的原理与应用
引言 在文本处理和自然语言处理(NLP)中,衡量两个字符串相似度是一项重要任务。Levenshtein 距离(也称编辑距离)是一种常见的算法,用于计算将一个字符串转换为另一个字符串所需的最少编辑操作次数。这些操作…...
解决json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
前言 作者在读取json文件的时候出现上述报错,起初以为是自己json文件有问题,但借助在线工具查看后发现没问题,就卡住了,在debug的过程中发现了json文件读取的一个小坑,在此分享一下 解决过程 原代码 with open(anno…...
hive中的四种排序类型
1、Order by 全局排序 ASC(ascend): 升序(默认) DESC(descend): 降序 注意 :只有一个 Reducer,即使我们在设置set reducer的数量为多个,但是在执行了order by语句之后,当前此次的运算还是只有…...
Spring-AI讲解
Spring-AI langchain(python) langchain4j 官网: https://spring.io/projects/spring-ai#learn 整合chatgpt 前置准备 open-ai-key: https://api.xty.app/register?affPuZD https://xiaoai.plus/ https://eylink.cn/ 或者淘宝搜: open ai key魔法…...
前端自动化部署终极指南:从CI/CD到容器化的完整流程
前端自动化部署终极指南:从CI/CD到容器化的完整流程 【免费下载链接】all-of-frontend 你想知道的前端内容都在这 项目地址: https://gitcode.com/gh_mirrors/al/all-of-frontend GitHub 加速计划(all-of-frontend)是一个全面的前端学…...
基于GEC6818的智能车库管理系统设计与优化
1. 项目概述与背景智能车库管理系统是当前城市停车管理领域的重要技术革新方向。传统停车场普遍存在人工收费效率低、排队时间长、管理成本高等痛点。我们基于GEC6818嵌入式开发板开发的这套系统,通过整合车牌识别、RFID支付、数据库管理等技术模块,实现…...
从噪声数据中提取系统矩阵(对应论文式3)
控制顶刊IEEE TAC热点论文复现,前V章案例复现,内容包括数据驱动状态反馈控制和LQR控制,可应用于具有噪声的数据和非线性系统,附参考论文及详细代码注释对应到文中公式,易于掌握理解,需要代码最近在复现TAC上…...
RoBERTa 微调:防过拟合终极调参手册
🛡️ RoBERTa 微调:防过拟合终极调参手册核心逻辑:在数据量有限(~2.6k)的情况下,通过限制模型容量(冻结/Dropout)和平滑优化过程(Weight Decay/Label Smoothingÿ…...
干货 | SpringBoot 缓存实战:击穿、穿透、雪崩 通俗解决方案(附可落地代码)
一、前言做 Java 后端开发,只要用了 Redis 缓存,缓存击穿、缓存穿透、缓存雪崩这三个坑绕不开。面试必问、线上必踩。本文不讲晦涩底层源码,用大白话讲原理 SpringBoot 可直接复制的实战代码,新手能看懂,项目能直接上…...
【数据结构与算法】第24篇:哈夫曼树与哈夫曼编码
一、基本概念1.1 带权路径长度在二叉树中:路径长度:从一个节点到另一个节点经过的边数带权路径长度(WPL):所有叶子节点的权重 路径长度 之和示例:text叶子节点:A(7), B(5), C(2), D(4)普通树:15/ \7 8/…...
光储并网直流微电网仿真模型(matlab/simulink,2018),包含: 1.MPPT模块
光储并网直流微电网仿真模型(matlab/simulink,2018),包含: 1.MPPT模块,实现光伏输入最大功率跟踪; 2.储能电池模块; 3.超级电容模块; 控制策略简介: 糸统使用…...
AI赋能3D打印:颠覆性技术如何重塑制造业
AI 结合3D打印的论文 目录 AI 结合3D打印的论文 论文1:《LLM-3D Print: Large Language Models To Monitor and Control 3D Printing》 待解决的核心问题 核心创新点 具体解决方法 实验验证与效果 论文2:《AdditiveLLM2: A Multi-modal Large Language Model for Additive M…...
技术赋能B端拓客:号码核验行业的迭代与价值升级
2026年,数字经济高质量发展进入深水区,B端市场的竞争逻辑已从“规模制胜”转向“效能突围”,拓客环节的精细化、高效化成为企业构建核心竞争力的关键。号码核验作为B端拓客的前置基础性环节,直接关联线索质量、人力效能与拓客投入…...
Comsol光子晶体光纤模式分析之FSM Mode计算
Comsol光子晶体光纤模式分析,fsm mode计算在光学领域,光子晶体光纤以其独特的光学特性吸引着众多研究者的目光。而在对光子晶体光纤进行深入研究时,模式分析是至关重要的一环,其中FSM(Full Vectorial Finite Element M…...
