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

news2024/12/25 23:41:51

文章目录

  • 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 ONLINE

FILE_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_segments
      WHERE 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的数据文件,都是由

.
格式组成的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的值。

BEGIN
   DBMS_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> BEGIN
   DBMS_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> BEGIN
   DBMS_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.coloradmin.cn/o/807075.html

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

相关文章

sap abap log程序

1.成果&#xff1a; 1.数据库表设计&#xff1a; 2.报表 *&---------------------------------------------------------------------* *& Report ZFUNC_LOG *&---------------------------------------------------------------------* *& *&-----…

手把手教你从0入门线段树~

1. 什么是线段树? 1.1 初探线段树 定义&#xff1a;线段树是一种用于解决区间查询问题的数据结构&#xff0c;是一种广义上的二叉搜索树。 原理&#xff1a;它将一个区间划分为多个较小的子区间&#xff0c;并为每个子区间存储一些有用的信息&#xff0c;例如最大值、最小值…

YOLOv5改进系列(16)——添加EMA注意力机制(ICASSP2023|实测涨点)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制 YOLOv5改进系列(2)——添加

android stduio 打开工程后直接报Connection refused解决

报错如下:Connection refused 解决方案: 打开gradle-wrapper.properties修改distributionUrl 将: distributionUrlhttp\://localhost/gradle/distributions/gradle-6.5-bin.zip 替换为: distributionUrlhttps\://services.gradle.org/distributions/gradle-6.5-bin.zip 错…

<C语言> 文件操作

1 文件指针 缓冲文件系统中&#xff0c;关键的概念是“文件类型指针”&#xff0c;简称“文件指针”。 每个被使用的文件都在内存中开辟了一个相应的文件信息区&#xff0c;用来存放文件的相关信息&#xff08;如文件的名 字&#xff0c;文件状态及文件当前的位置等&#xff…

windows系统之WSL 安装 Ubuntu

WSL windows10 以上才有这个wsl功能 WSL&#xff1a; windows Subsystem for Linux 是应用于Windows系统之上的Linux子系统 作用很简单&#xff0c;可以在Windows系统中获取Linux系统环境&#xff0c;并完全直连计算机硬件&#xff0c;无需要通过虚拟机虚拟硬件 Windows10的W…

MD-MTSP:斑马优化算法ZOA求解多仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、斑马优化算法ZOA 斑马优化算法&#xff08;Zebra Optimization Algorithm&#xff0c;ZOA&#xff09;Eva Trojovsk等人于2022年提出&#xff0c;其模拟斑马的觅食和对捕食者攻击的防御行为。斑马优化算法&#xff08;Zebra Optimization Algorithm&#xff0c;ZOA&#x…

海外ASO优化之应用商店本地化

大多数应用可供世界任何地方的用户使用&#xff0c;所以需要以多种不同语言来展示我们的应用。它能够包含在跨地理区域的搜索结果中&#xff0c;从而提高全球可见性和转化率。 1、关键词的研究&#xff0c;对于确定流行的本地关键词至关重要。 在本地化Google Play的应用页面时…

RTPS规范v2.5(中文版)

实时发布订阅协议 DDS互操作性有线协议 &#xff08;DDSI-RTPS&#xff09; 技术规范 V2.5 &#xff08;2022-04-01正式发布&#xff09; https://www.omg.org/spec/DDSI-RTPS/2.5/PDF   目 录 1 范围 8 2 一致性 8 3 规范性参考文献 8 4 术语和定义 9 5 标识 …

HTML5前端开发工程师的岗位职责说明(合集)

HTML5前端开发工程师的岗位职责说明1 职责 1、根据产品设计文档和视觉文件&#xff0c;利用HTML5相关技术开发移动平台的web前端页面; 2、基于HTML5.0标准进行页面制作&#xff0c;编写可复用的用户界面组件; 3、持续的优化前端体验和页面响应速度&#xff0c;并保证兼容性和…

Godot 4 插件 - Utility AI 研究

今天看到一个视频教学 Godot4 | 实现简单AI | Utility AI 插件_哔哩哔哩_bilibili 就看了一下。吸引我的不是插件&#xff0c;是AI这两个字母。这AI与Godot怎么结合&#xff1f;感觉还是离线使用&#xff0c;值得一看。 视频时间不长&#xff0c;15分钟左右&#xff0c;看得…

无涯教程-jQuery - Highlight方法函数

Highlight 效果可以与effect()方法一起使用。这将以特定的颜色突出显示元素的背景&#xff0c;默认为黄色(yellow)。 Highlight - 语法 selector.effect( "highlight", {arguments}, speed ); 这是所有参数的描述- color - 高亮显示颜色。默认值为"#fff…

比memcpy还要快的内存拷贝,了解一下

前言 朋友们有想过居然还有比memcpy更快的内存拷贝吗&#xff1f; 讲道理&#xff0c;在这之前我没想到过&#xff0c;我也一直觉得memcpy就是最快的内存拷贝方法了。 也不知道老板最近是咋了&#xff0c;天天开会都强调&#xff1a;“我们最近的目标就一个字&#xff0c;性能优…

CompletableFuture生产中使用问题

CompletableFuture生产中使用问题 1 背景2 测试3 原因4. 总结 1 背景 接到一个任务,需要优化下单接口,查看完业务逻辑后发现有一些可以并行或异步查询的地方,于是采用CompletableFuture来做异步优化,提高接口响应速度,伪代码如下 //查询用户信息CompletableFuture<JSONObj…

认识 springboot 并了解它的创建过程 - 1

前言 本篇介绍什么是SpringBoot, SpringBoot项目如何创建&#xff0c;认识创建SpringBoot项目的目录&#xff0c;了解SpringBoo特点如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言1.什么是springboot?2.为什么…

投影仪离线语音识别芯片ic方案,高识别率识别IC,WTK6900H-B-24SS

随着智能科技的不断演进&#xff0c;人工智能已经深入到我们的生活中的方方面面。投影仪作为现代影音娱乐与商务展示的得力工具&#xff0c;为了进一步提升用户与产品的交互体验&#xff0c;深圳唯创知音最新推出WTK6900H-B-24SS离线语音识别芯片IC方案。这项创新技术使得投影仪…

入侵检测——恶意软件、病毒、防病毒、反病毒技术

目录 1. 什么是恶意软件&#xff1f; 2. 恶意软件有哪些特征&#xff1f; 3. 恶意软件的可分为那几类&#xff1f; 3.1.1按照传播方式分类&#xff1a; 3.1.2按照功能分类&#xff1a; 4. 恶意软件的免杀技术有哪些&#xff1f; 5. 反病毒技术有哪些&#xff1f; 5…

左神算法之中级提升(6)

目录 【案例1】 【题目描述】 【思路解析】 【代码实现】 【案例2】 【题目描述】 【思路解析】 【代码实现】 【案例3】 【题目描述】 【思路解析】 【代码实现】 【案例4】 【题目描述】 2018年美团面试题 【思路解析】 【代码实现】 【案例5】 【题目描述】 …

Service Mesh之Istio部署bookinfo

给istio部署插件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 rootk8s-master01:/usr/local# cd istio rootk8s-master01:/usr/local/istio# ls samples/addons/ extras grafana.yaml jaeger.yaml kiali.yaml prometheus.yaml RE…

AMD技术泄露?CPU加密技术面临新的危机

许多AMD CPU中的破解加密、泄露密码的漏洞可能需要几个月才能修复。 “Zenbleed”漏洞影响了所有基于Zen 2架构的Ryzen、Threadripper和EPYC处理器。 技术泄露情况 谷歌零项目安全团队成员Tavis Ormandy称&#xff0c;许多AMD新一代消费级、工作站和服务器处理器最近被曝出漏…