临时段的cleanup引起的enq:TT–content等待事件处理过程

文章目录

  • 1.问题描叙
  • 2.查因过程
  • 3.根因
  • 4.处理过程
    • 4.1 Mark目标segment为CORRUPT
    • 4.2 Drop目标segment
    • 4.3 释放占用的空间

1.问题描叙

接到用户抱怨无法修改表架构:
在这里插入图片描述

2.查因过程

查看当前DB活动:

Select sid,serial#,osuser,program,terminal,sql_id,blocking_session,event,p1raw,p1text,p1,p2text,p2text,p2,p3text,p3,seconds_in_wait,state 
from v$session where wait_class<>'Idle' 

output:
在这里插入图片描述
当下,DB内存在很多enq:TT–content等待事件,其中红框内是smon进程,它在等待什么呢,结合ID2的定义,猜想应该是在做空间回收
ID1/ ID2的含义如下:
id1是tablespace number,ID2表明执行中的操作类型。以下是操作类型对应代码;
0- 用以避免在drop tablespace和创建rollback segment之间发生死锁
1- 用以串行化在给定表空间上创建数据文件
2- 用以避免在TSPITR tablespace point in time recovery期间发生其他类型操作
4- 用以在创建tablespace时锁住该tablespace id
8- 用以避免在ALTER TABLESPACE期间发生死锁
16- 即16进制的0×10,用以同步 分配和回收盘区,allocation and deallocation of extents.
32+ 用在增加数据文件add datafile和创建表空间时,其中ID2为 32(十进制的)+相对文件号relative file number

先看看ID1的情况:

SELECT * FROM V$TABLESPACE WHERE TS#=15;TS# NAME                           INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---15 CES_DATA                       YES NO  YES

对应的tablespace是CES_DATA,在来看CES_DATA表空间的情况

SQL> SELECT FILE_NAME,FILE_ID,TABLESPACE_NAME,BYTES/1024/1024 SIZE_IN_MB,MAXBYTES/1024/1024 MAXBYTES_IN_MB,ONLINE_STATUS FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='CES_DATA';FILE_NAME                                   FILE_ID TABLESPACE_NAME                SIZE_IN_MB MAXBYTES_IN_MB ONLINE_
---------------------------------------- ---------- ------------------------------ ---------- -------------- -------
/u2/oradata/pcicvs01/CES_DATA09.dbf              12 CES_DATA                            27600     32767.9844 ONLINE
/u5/oradata/pcicvs01/CES_DATA.dbf                17 CES_DATA                                                 OFFLINE
/u4/oradata/pcicvs01/CES_DATA.dbf                18 CES_DATA                            10000          10000 ONLINE
/u5/oradata/pcicvs01/CES_DATA01.dbf              22 CES_DATA                            10000          10000 ONLINE
/u5/oradata/pcicvs01/CES_DATA02.dbf              24 CES_DATA                            10240          10240 ONLINE
/u5/oradata/pcicvs01/CES_DATA03.dbf              25 CES_DATA                            10000              0 ONLINE
/u5/oradata/pcicvs01/CES_DATA04.dbf              26 CES_DATA                            10000              0 ONLINE
/u5/oradata/pcicvs01/CES_DATA05.dbf              27 CES_DATA                            10240          10240 ONLINE
/u5/oradata/pcicvs01/CES_DATA06.dbf              28 CES_DATA                       32765.0625     32767.9844 ONLINE
/u5/oradata/pcicvs01/CES_DATA07.dbf              29 CES_DATA                       32766.0625     32767.9844 ONLINE
/u5/oradata/pcicvs01/CES_DATA08.dbf              30 CES_DATA                             8672          20480 ONLINEFILE_NAME                                   FILE_ID TABLESPACE_NAME                SIZE_IN_MB MAXBYTES_IN_MB ONLINE_
---------------------------------------- ---------- ------------------------------ ---------- -------------- -------
/u2/oradata/pcicvs01/CES_DATA10.dbf              31 CES_DATA                              100     32767.9844 ONLINE
/u3/oradata/pcicvs01/CES_DATA11.dbf              32 CES_DATA                              100     32767.9844 ONLINE
/u3/oradata/pcicvs01/CES_DATA12.dbf              33 CES_DATA                              100     32767.9844 ONLINE
/u4/oradata/pcicvs01/CES_DATA13.dbf              34 CES_DATA                              100     32767.9844 ONLINE

不幸的是看到file_id 17的文件是offline的状态,难道是offline的文件导致smon进程无法正常回收空间? (由这是一台测试DB,不清楚谁offline了这个DB,也因为没有启用archivelog,也无法将它on起来)
带着这个疑问,我们继续看看file_id 17的文件都有什么?

SQL> SELECT segment_name, segment_type, header_file, relative_fno, header_block, bytes/POWER(1024, 2) AS "SIZE_MB"FROM dba_segmentsWHERE relative_fno=17 SEGMENT_NAME                                                           SEGMENT_TYPE       HEADER_FILE RELATIVE_FNO HEADER_BLOCK    SIZE_MB
--------------------------------------------------------------------------------- ------------------ ----------- ------------ ------------ ----------
17.767907                                                                         TEMPORARY                   17           17       767907      .0625
17.767915                                                                         TEMPORARY                   17           17       767915       .125
17.767907                                                                         TEMPORARY                   17           17       767907      .0625
17.767915                                                                         TEMPORARY                   17           17       767915       .125

从输出来看,这个被offline的数据文件,都是由"Header File ID.Header Block ID"格式组成的segment_name,而且segment_type是TEMPORARY,说明都是一些临时段
当听到术语 TEMPORARY 时,可能会在临时表空间中的尋找相關的segment,例如当连接表或执行不适合内存的排序操作时。
但这样的segment也可能存在于永久表空间中。 当执行以下操作之一时,就会创建这样的段。
ALTER TABLE … MOVE
CREATE TABLE … AS SELECT
CREATE INDEX …
ALTER INDEX … REBUILD
在这些操作期间,会创建一个 TEMPORARY 段。 当操作意外终止时,这些段不会被清除。

3.根因

在这里,原因就很清楚了,有人意外offline了file_id为17的数据文件,导致文件内事先存在的临时段没有被清除,当用户视图修改段结构时,等待smon进程清除临时段后释放在tablespace上的lock
看一下oracle对TT锁的描叙:

SQL> select * from v$lock_type where type='TT';TYPE                 NAME                           ID1_TAG                        ID2_TAG                        IS_ DESCRIPTION
-------------------- ------------------------------ ------------------------------ ------------------------------ --- ------------------------------------------------------------
TT                   Tablespace                     tablespace ID                  operation                      NO  Serializes DDL operations on tablespaces

4.处理过程

4.1 Mark目标segment为CORRUPT

PL/SQL 包 DBMS_SPACE_ADMIN 用于手动清理 TEMPORARY 段。 在第一步中,需要将段17.767907 标记为CORRUPT。 结合RELATIVE_FNO的值。

BEGINDBMS_SPACE_ADMIN.SEGMENT_CORRUPT(tablespace_name => 'CESUSER', header_relative_file => 17, header_block => 767907,corrupt_option => DBMS_SPACE_ADMIN.SEGMENT_MARK_CORRUPT);
END;
/

4.2 Drop目标segment

将段标记为损坏后,可以将其删除。

SQL> BEGINDBMS_SPACE_ADMIN.SEGMENT_DROP_CORRUPT(tablespace_name => 'CES_DATA', header_relative_file => 17, header_block => 767907);
END;
/

4.3 释放占用的空间

此时该段被删除,但其占用的空间在DBA_FREE_SPACE中不可见。

SQL> SELECT SUM(bytes)/POWER(1024,3) AS "FREE_SPACE" FROM dba_free_space WHERE tablespace_name = 'CES_DATA';FREE_SPACE
----------
192.136215

最后,需要重建表空间的位图。

SQL> BEGINDBMS_SPACE_ADMIN.TABLESPACE_REBUILD_BITMAPS(tablespace_name => 'USERS');
END;
/

现在,可用空间随着删除段的大小而增加。

SQL> SELECT SUM(bytes)/POWER(1024,3) AS "FREE_SPACE"FROM dba_free_space WHERE tablespace_name = 'CES_DATA';FREE_SPACE
----------
250.273469

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

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

相关文章

计算机视觉:图像质量评价指标之 PSNR 和 SSIM

1. PSNR (Peak Signal-to-Noise Ratio) 峰值信噪比 由上可见&#xff0c;PSNR相对MSE多了一个峰值&#xff0c;MSE是绝对误差&#xff0c;再加上峰值是一个相对误差指标 一般地&#xff0c;针对 uint8 数据&#xff0c;最大像素值为 255,&#xff1b;针对浮点型数据&#xff…

基于注解手写Spring的IOC(上)

一、思路 先要从当前类出发找到对应包下的所有类文件&#xff0c;再从这些类中筛选出类上有MyComponent注解的类&#xff1b;把它们都装入Map中&#xff0c;同时类属性完成MyValue的赋值操作。 二、具体实现 测试类结构&#xff1a; 测试类&#xff1a;myse、mycontor、BigSt…

ElasticSearch基础篇-条件查询与映射

ElasticSearch基础篇二 条件查询 GET http://10.192.193.98:9200/shopping/_search?qtitle:小米手机q:代表查询条件 响应结果 {"took": 772,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped…

深入理解BeanDefinition和Spring Beans

深入理解BeanDefinition和Spring Beans 引言 在Spring框架中&#xff0c;BeanDefinition和Spring Beans是非常重要的概念。BeanDefinition定义了Spring Bean的元数据&#xff0c;而Spring Beans是应用程序中的对象实例。理解BeanDefinition和Spring Beans的概念和使用方法对于…

2023牛客暑期多校-J-Qu‘est-ce Que C‘est?(DP)

题意&#xff1a; 给定长度为n的数列,要求每个数都在的范围&#xff0c;且任意长度大于等于2的区间和都大于等于0&#xff0c;问方案数。。 思路&#xff1a; 首先要看出是dp题&#xff0c;用来表示遍历到第i位且后缀和最小为x的可行方案数&#xff08;此时的后缀可以只有最…

IT技术面试必备:如何做好IT类技术面试?

博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1f466;&#x1f3fb; 《java 面试题大全》 &#x1f369;惟余辈才疏学浅&#xff0c;临摹之作或有不妥之处&#xff0c;还请读者海涵指正。☕&#x1f36d; 《MYSQL从入门到精通》数据库是开发者必会基础之…

oracle建立自动增长字段

oracle数据库与其他的数据库不太一样&#xff0c;比如在mysql里自动增长只要设定“auto_increment”即可。可是在oracle里就没有这种配置了。以oracle11g为例&#xff0c;建立自动增长的字段。操作如下&#xff1a; --创建表 create table USERINFO ( ID NUMBER , …

【Linux】多线程的补充

1 线程安全的单例模式 1.1 什么是单例模式 单例模式是一种 "经典的, 常用的, 常考的" 设计模式. 1.2 什么是设计模式 IT行业这么火, 涌入的人很多. 俗话说林子大了啥鸟都有. 大佬和菜鸡们两极分化的越来越严重. 为了让菜鸡们不太拖大佬的后腿, 于是大佬们针对一些…

开发经验分享之:import引入包和@Autowired注入类有什么区别

大家好&#xff0c;我是三叔&#xff0c;很高兴这期又和大家见面了&#xff0c;一个奋斗在互联网的打工人。 import 和 Autowired 想必大家在 Java 开发中使用频率最多的关键字之一了把&#xff0c;这篇博客将解释这两个概念的区别和作用&#xff0c;帮助你更好地理解它们在Ja…

如何开发一套苹果cms前端模板

本文运用了苹果cms官网的模板开发教程&#xff0c;开发了一套苹果cms的前端模板&#xff0c;感兴趣的同学可以去github下载使用。 什么是模板 模板是网站的主题外观&#xff0c;也被称为主题或皮肤。通过使用不同的模板&#xff0c;网站的前台可以以不同的样式展示。这就像人们…

04-导数判断凹(concave)凸(convex)性_导数用于泰勒展开

导数与函数凹凸性的关系 函数的二阶导数是和函数的凹凸性是有关系的&#xff0c;凹凸性怎么定义的&#xff1f; 先来做简单的回顾&#xff0c;更多的会在最优化方法里面给大家讲&#xff0c;这里先记住凸函数是向下凸的&#xff0c; 反正就是凹的&#xff0c;是否是凸函数可以…

秒级体验本地调试远程 k8s 中的服务

点击上方蓝色字体&#xff0c;选择“设为星标” 回复”云原生“获取基础架构实践 背景 在这个以k8s为云os的时代&#xff0c;程序员在日常的开发过程中&#xff0c;肯定会遇到各种问题&#xff0c;比如&#xff1a;本地开发完&#xff0c;需要部署到远程k8s集群&#xff0c;本地…

【设计模式】详解观察者模式

文章目录 1、简介2、观察者模式简单实现抽象主题&#xff08;Subject&#xff09;具体主题&#xff08;ConcreteSubject&#xff09;抽象观察者&#xff08;Observer&#xff09;具体观察者&#xff08;ConcrereObserver&#xff09;测试&#xff1a; 观察者设计模式优缺点观察…

01Mysql查询语句题型总结

#第三章 SELECT课后练习 # 1.查询员工12个月的工资总和&#xff0c;并起别名为ANNUAL SALARY SELECT employee_id,last_name,salary * 12 "ANNUAL SALARY" FROM employees; #加奖金的情况 SELECT employee_id,last_name,salary * 12 *(1 IFNULL(commission_pct,0)) …

音视频(关于视频的封装,由mp4->mov)

(20条消息) FFmpeg Visual studio 开发环境搭建_HW140701的博客-CSDN博客 1.封装格式&#xff1a;AVI&#xff0c;MP4&#xff0c;ASF AVI&#xff1a;压缩标准可以任意选 FLV,ts:直播等使用的流媒体 mp4:既是封装又是压缩 #pragma comment(lib,"avcodec.lib") …

十八章:用于弱监督语义分割的自监督等变注意力机制

0.摘要 图像级弱监督语义分割是一个具有挑战性的问题&#xff0c;近年来得到了深入研究。大多数先进的解决方案利用类激活图&#xff08;CAM&#xff09;。然而&#xff0c;由于全监督和弱监督之间存在差距&#xff0c;CAM几乎无法用作对象掩码。在本文中&#xff0c;我们提出了…

深度优先搜索|79, 695,212

深度优先搜索|79. 单词搜索, 695. 岛屿的最大面积, 212. 单词搜索 II 单词搜索岛屿的最大面积单词搜索II 单词搜索 用的是深度优先搜索&#xff0c;这种判断类型的回溯我就一直不知道要怎么回退&#xff0c;然后勉强写了一个。 这里还有一个注意事项就是&#xff0c;走到最后一…

[JAVAee]定时器

目录 定时器的含义 定时器的使用 定时器的解析 ①TaskQueue ​②TimerThread ③Timer 定时器的模拟实现 ①创建Task自定义类型 ②创建TimerThread类 ③Timer类 完整代码 定时器的含义 从名字上看,就是我们通俗理解的那个定时器.设置一定的时间,并在一定的时间后发生…

安卓抓包神奇黄鸟HttpCanary安装配置及使用教程

1、下载安装包 黄鸟抓包下载地址 2、安装下载的apk 3、证书安装问题 vivo手机我安装时打开黄鸟app&#xff0c;会直接弹出&#xff0c;直接安装即可 其他手机&#xff0c;需要去系统设置中安装 3.1 搜索 证书&#xff0c;选择CA证书 3.2 进行本人操作验证 3.3 安装HttpCa…

黄东旭:The Future of Database,掀开 TiDB Serverless 的引擎盖

在 PingCAP 用户峰会 2023 上&#xff0c; PingCAP 联合创始人兼 CTO 黄东旭 分享了“The Future of Database”为主题的演讲&#xff0c; 介绍了 TiDB Serverless 作为未来一代数据库的核心设计理念。黄东旭 通过分享个人经历和示例&#xff0c;强调了数据库的服务化而非服务化…