故障处理:Oracle表空间异常增长后又恢复正常的故障模拟与分析

news/2025/9/28 15:25:43/文章来源:https://www.cnblogs.com/www-htz-pw/p/19116846

我们的文章会在微信公众号IT民工的龙马人生和博客网站 ( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

今天谈谈很早之前朋友问到的一个案例,表空间使用率异常增加,新增对象都是临时字段,并且段名是很奇怪,由数字和.构成,如(11.123)这种方式。这个案例相对来说比较极端,客户采用的文件系统,并且数据文件为自动扩张,最后出现空间耗尽,数据文件无法收缩的现象。今天就好大家一起来模拟一下这种现象:

环境准备

由于是自己的环境,也为了保证后续的操作不报错,所以这里看起了归档日志强制删除的脚本。

[oracle@oracleadg sql]$ sh ./arch_delete_force_all.sh 
2025-08-23 21:46:09: Using ORACLE_SID=htz191, interval=10 seconds.
2025-08-23 21:46:09: Press Ctrl+C to stop the script.
2025-08-23 21:46:09: Starting RMAN archived log cleanup.
2025-08-23 21:46:14: Cleanup finished. Sleeping for 10 seconds.
2025-08-23 21:46:24: Starting RMAN archived log cleanup.
2025-08-23 21:46:28: Cleanup finished. Sleeping for 10 seconds.
2025-08-23 21:46:38: Starting RMAN archived log cleanup.

创建测试表

create table htz as select * from dba_objects;
多次执行下面语句
insert into htz as select * from htz;
commit;

确保测试表足够的大,下面是我环境中的htz表的大小。

SQL> @segment_size.sql
Enter Search owner Name (i.e. SCOTT|ALL) : 
Enter Search Segment Name (i.e. DEPT|ALL) : 
Enter Search Tablespace Name (i.e. DEPT|ALL) : system
Enter Display rows Name (i.e. 20) : Name                                    Total
OWNER                SEGMENT_NAME                        SEGMENT_TYPE    Partition                             size(M)
-------------------- ----------------------------------- --------------- ----------------------------------- ---------
SYS                  HTZ                                 TABLE                                                   11518
SYS                  IDL_UB1$                            TABLE                                                     398
SYS                  SYS_LOB0000022516C00008$$           LOBSEGMENT                                                192
SYS                  C_TOID_VERSION#                     CLUSTER                                                    49
SYS                  SOURCE$                             TABLE                                                      40

我这里是11G左右的大小。

确认数据库状态

SQL> @db_status.sqlflashback  Switchover           Database                                  Force
OPEN_MODE            LOG_MODE                 On         Status               Role                 PROTECTION_MODE      Loggin
-------------------- ------------------------ ---------- -------------------- -------------------- -------------------- ------
READ WRITE           ARCHIVELOG               YES        NOT ALLOWED          LOGICAL STANDBY      MAXIMUM PERFORMANCE  YES

确认表空间的容量


SQL> @db_size.sql
*******************tablespace size**************************Tablespace                                                    Size (MB)  Free (MB)     % Free     % Used
------------------------------------------------------------ ---------- ---------- ---------- ----------
TEST                                                               1024       1023        100         .1
TEMP                                                                224        190         85      15.18
UNDOTBS1                                                            995     542.75         55      45.45
UNDOTBS2                                                             25    13.1875         53      47.25
USERS                                                             18.75     2.0625         11         89
SYSAUX                                                             1140     59.625          5      94.77
SYSTEM                                                            12688    15.1875          0      99.88

取消归档日志自动删除

将前面的归档日志自动删除脚本取消执行,因为后面我们要用到归档日志文件去解析,查看logmnr中的SQL语句。

开启表空间自动扩容脚本

因为后续的操作要生成11G的表,可能出现表空间容灾不够,所以开启表空间自动扩容脚本。

[oracle@oracleadg sql]$ watch -n 2 ./tbscale -l TEST:50Every 2.0s: ./tbscale -l TEST:50                                                                                                                                                                                                        Sat Aug 23 22:13:44 2025[INFO] 2025/08/23 22:13:44 This script will connect to the database using 'sqlplus / as sysdba'. Please ensure OS authentication is configured correctly.
[INFO] 2025/08/23 22:13:44 Database status: OPEN
[INFO] 2025/08/23 22:13:44 Threshold mode: Only checking tablespaces and thresholds specified by -l
[INFO] 2025/08/23 22:13:44 ========== Processing tablespace: TEST (threshold 50.00%) ==========
[INFO] 2025/08/23 22:13:44 Tablespace [TEST] free space 48.34% < threshold 50.00%, expansion required.
[INFO] 2025/08/23 22:13:44 Underlying storage has sufficient space for tablespace [TEST] (Available 99065.52 MB >= Needed 1024 MB)
[INFO] 2025/08/23 22:13:44 Expansion SQL: ALTER TABLESPACE TEST ADD DATAFILE '/oracle/app/oracle/oradata/HTZ19TWO/datafile/TEST_14.dbf' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE 32767M;
[INFO] 2025/08/23 22:14:02 Successfully added a new datafile to tablespace [TEST].
[INFO] 2025/08/23 22:14:02 Script execution finished.

创建新表

这里要保证htz表足够的大,这样才方便后续的实验和观察,否者还没有观察到,SQL语句就执行完了。

SQL> create table htz1 tablespace test as select /*+ parallel(a 5) */ * from htz a;

确认对象大小

SQL> @segment_size.sql
Enter Search owner Name (i.e. SCOTT|ALL) :
Enter Search Segment Name (i.e. DEPT|ALL) :
Enter Search Tablespace Name (i.e. DEPT|ALL) : TEST
Enter Display rows Name (i.e. 20) :Name                                    Total
OWNER                SEGMENT_NAME                        SEGMENT_TYPE    Partition                             size(M)
-------------------- ----------------------------------- --------------- ----------------------------------- ---------
SYS                  11.130                              TEMPORARY                                                5760

这里看到生成一个临时段,对应段名为:11.130,现象跟之前朋友说的案例一模一样。

取消创建表语句

取消创建表语句的执行。

SQL> create table htz1 tablespace test as select /*+ parallel(a 5) */ * from htz a;^Ccreate table htz1 tablespace test as select /*+ parallel(a 5) */ * from htz a*
ERROR at line 1:
ORA-01013: user requested cancel of current operation

这里直接终止命令的运行。

查看表空间对象

已经没有任何对象了

SQL> @segment_size.sql
Enter Search owner Name (i.e. SCOTT|ALL) :
Enter Search Segment Name (i.e. DEPT|ALL) :
Enter Search Tablespace Name (i.e. DEPT|ALL) : TEST
Enter Display rows Name (i.e. 20) :no rows selected

表空间的使用率也降下来了。

SQL> @db_size.sql
*******************tablespace size**************************Tablespace                                                    Size (MB)  Free (MB)     % Free     % Used
------------------------------------------------------------ ---------- ---------- ---------- ----------
TEST                                                              11264      11253        100         .1
TEMP                                                                224        190         85      15.18
UNDOTBS1                                                            995     542.75         55      45.45
UNDOTBS2                                                             25    13.1875         53      47.25
USERS                                                             18.75     2.0625         11         89
SYSTEM                                                            13618   945.1875          7      93.06
SYSAUX                                                             1140    51.5625          5      95.48

上面的现象跟朋友说的一模一样了,临时段,表空间使用率增加后又恢复正常。

解析归档日志

SQL> @logmnr_arch.sql '2025-08-23 23:03:57' '2025-08-23 23:04:53' 'Y'
Starting LogMiner...
LogMiner started successfully.

这里通过脚本来解析归档日志,查询解析记录,可以得到下面这条唯一的SQL语句。

SQL_REDO
--------------------------------------------------------------------------------
update "SYS"."SEG$" set "TYPE#" = '3', "BLOCKS" = '8', "EXTENTS" = '1', "INIEXTS
" = '8', "MINEXTS" = '1', "MAXEXTS" = '2147483645', "EXTSIZE" = '128', "EXTPCT"
= '0', "USER#" = '0', "LISTS" = '0', "GROUPS" = '0', "BITMAPRANGES" = '214748364
5', "CACHEHINT" = '0', "SCANHINT" = '0', "HWMINCR" = '77446', "SPARE1" = '419456
1' where "FILE#" = '13' and "BLOCK#" = '130' and "TYPE#" = '3' and "TS#" = '6' a
nd "BLOCKS" = '8' and "EXTENTS" = '1' and "INIEXTS" = '8' and "MINEXTS" = '1' an
d "MAXEXTS" = '2147483645' and "EXTSIZE" = '128' and "EXTPCT" = '0' and "USER#"
= '0' and "LISTS" = '0' and "GROUPS" = '0' and "BITMAPRANGES" = '2147483645' and"CACHEHINT" = '0' and "SCANHINT" = '0' and "HWMINCR" = '77446' and "SPARE1" = '
4325633' and "SPARE2" IS NULL and ROWID = 'AAAAAIAABAAAMgSAAj';

前面的13.130这个名字就是由FILE#.BLOCK#构成的。

结束

到这里面我们基本演示朋友说到这个案例的现象,在这个现象背后其实有一个Oracle的基础知识就是create table as select 这种方式创建表时,Oracle是先创建临时段,临时段创建成功后,Oracle才会去做rename的操作和表定义的信息,这里可以通过去解析归档日志可以获得更多详细的信息。

------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)


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

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

相关文章

C# Avalonia 15- Animation- CachingTest

C# Avalonia 15- Animation- CachingTestCachingTest.axaml代码<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http:/…

Oracle故障分析:lsnrctl start启动监听很慢(AIX平台)

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。Oracle故障分…

银川做淘宝网站的可以上传网站的免费空间

在Gurobi中&#xff0c;你可以使用model.status来获取求解过程中的模型状态。可以使用了model.status来检查模型是否找到最优解。模型状态是一个Gurobi的常量&#xff0c;表示了求解过程中的不同状态。 以下是一些常见的模型状态&#xff1a; GRB.OPTIMAL: 最优解被找到。GRB…

网站建设自主开发的三种方式wordpress 小视频插件

以下实验是利用逍遥模拟器搭建的简易计算器页面 对现有功能说明&#xff1a;可实现双目运算和开方单目运算&#xff1b; 待改进&#xff1a;需要实现表达式的计算&#xff1b;以及负数参与运算&#xff1b; //XML代码<?xml version"1.0" encoding"utf-8&q…

事务和Spring常用注解的总结

1. 事务事务的概念: 事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作 要么同时成功,要么同时失败。 事务操作步骤:事务控制主要三步操…

男男床上爱做 网站重庆seo网络推广关键词

武器库篇之Git的分支使用(三十九) Git分支是一种用于在项目中并行开发和管理代码的功能。分支允许开发人员在不干扰主要代码的情况下创建新的代码版本&#xff0c;以便尝试新功能、修复错误或独立开发功能。一般正常情况下&#xff0c;开发人员开发一个软件&#xff0c;会有两…

ssh做电商 网站wordpress百度分享

用户的数据一般都是存储于数据库&#xff0c;数据库的数据是落在磁盘上的&#xff0c;磁盘的读写速度可以说是计算机里最慢的硬件了。 当用户的请求&#xff0c;都访问数据库的话&#xff0c;请求数量一上来&#xff0c;数据库很容易就奔溃的了&#xff0c;所以为了避免用户直…

安徽专业做网站的大公司上海市工程咨询协会

在c的学习中&#xff0c;我们经常被应该如何使用指针和引用这个问题所困扰&#xff0c;那么我这里给大家说一下在我的学习过程中对指针和引用的理解&#xff0c;和它们之间的区别&#xff0c;希望各位朋友给出不同的意见并且指出我在学习中的一些错误首先我们来聊一下指针&…

开网站的是啥公司婚礼策划网站模板中文

准备工作&#xff1a; 项目/可执行文件名&#xff1a;QTAppName 打包项目存放的文件名&#xff1a;pack&#xff08;这个文件名无所谓&#xff09; 脚本名&#xff1a; copylib.sh&#xff08;类似ldd命令&#xff09;&#xff1a;用于将.so库文件的依赖项复制并放入自动生…

太原论坛建站模板正定网站建设制作公司

概念&#xff1a; 参考&#xff1a;Accelerating Large Language Models with Mixed-Precision Techniques - Lightning AI 3种数量类型表示的数据范围不一样&#xff0c;以float32为例其中有1个符号位&#xff0c;8位表示指数&#xff0c;23位表示尾数 标准训练推理是用的fl…

在 Linux 中安装和配置 NTP 服务器和 NTP 客户端

NTP(Network Time Protocol)是一种用于同步计算机时钟的协议,基于客户端-服务器模型,它通过交换数据包来保持网络中设备时间的一致性。NTP 协议的工作原理是通过与已知的、精准的时间源同步(如 GPS、原子钟或通…

网站建设招标方案宁波seo网络推广咨询价格

致伤工具的推断一直是法医工作中的热点和难点。由于作用位置、作用方式的不同&#xff0c;相同的致伤工具在人体组织上会形成不同的损伤形态&#xff0c;不同的致伤工具也可能形成相同的损伤形态。致伤工具品种繁多、形态各异&#xff0c;但大致可分为两类&#xff1a;锐器&…

网站建设中的图片网站建设中建站广告html单页面

Packet Tracer – 配置动态 NAT 拓扑图 目标 第 1 部分&#xff1a;配置动态 NAT 第 2 部分&#xff1a;验证 NAT 实施 第 1 部分&#xff1a; 配置动态 NAT 步骤 1&#xff1a; 配置允许的流量。 在 R2 上&#xff0c;为 ACL 1 配置一个语句以允许属于 172.16.0.…

Redis 高可用篇 - 实践

Redis 高可用篇 - 实践2025-09-28 14:53 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font…

自身网站的建设和推广力度不足做网站在浏览器预览怎么出现了状况

在公司内网的一个虚拟机上搭建了httpsd服务&#xff0c;准备作为内部小伙伴们的文件站&#xff0c;但是搭建好之后发现别的小伙伴是无法访问我机器的。 于是寻找一下原因&#xff0c;排查步骤如下&#xff1a; 1.netstat -lnp 和 ps aux 先看下端口和 服务情况 发现均正常 2.…

多站点wordpress简数采集器网站建设策划书的主要内容

代码参考《妙趣横生的算法.C语言实现》 文章目录前言1、图的概念2、图的存储形式1、邻接矩阵&#xff1a;2、邻接表3、代码定义邻接表3、图的创建4、深度优先搜索DFS5、广度优先搜索BFS6、实例分析前言 本章总结&#xff1a;图的概念、图的存储形式、邻接表定义、图的创建、图…

网站搜索排名高怎么做湖州服装网站建设

文章目录 Matplotlib与可视化分析简单图形的绘制pylot的高级功能添加图例与注释 Matplotlib与可视化分析 我们之前对数据的处理与分析&#xff0c;其实最终还是要利用可视化工具进行更加直观的输出 我们开业通过 pip install matplotlib命令来安装对应的模块 简单图形的绘制…

大连网站制作.net外贸app网站开发

我们知道在网易博客可以用html时&#xff0c;是否把代码直接加入到摸板中&#xff0c;但是效果却不是很好。那是因为没有对代码进行很好的排列&#xff0c;现在我说一下用table来排列&#xff0c;可以很好的把特效显示出来。在html语法中table(即表格)是不可少的部分&#xff0…

静态网站如何建设市场推广专员

文章目录 前言一、进程&#xff0c;线程&#xff0c;程序 区分二、创建子进程三、创建多个进程1. 获取进程号2. 循环创建多个进程 四、进程工具。1. ps 查看当前进程.2. kill 进程终止. 总结 前言 在计算机科学中&#xff0c;进程&#xff08;Process&#xff09;、线程&#…

东南亚日本股票数据API对接文档

概述 本文档详细说明如何对接StockTV全球股票API中的日本股票数据。日本股票市场是全球重要金融市场之一,包含东京证券交易所(TSE)等多个交易所。 认证方式 所有API请求都需要在URL参数中包含API Key: key=您的API密…