首页 > 数据库 >17.Oracle查询表空间大小很慢一则

17.Oracle查询表空间大小很慢一则

时间:2023-07-20 15:00:38浏览次数:52  
标签:1024 STATS name 17 free 查询 tablespace Oracle total

使用如下 SQL 查看表空间使用率时竟然需要 1~2 分钟才可以查看结果,两套数据库数据库也就百 GB 级别,为何会这么慢呢?

SELECT a.tablespace_name,round(total/1024/1024/1024) "Total g", 
round(free/1024/1024/1024) "Free g",ROUND((total-free)/total,4)*100 "USED%" 
FROM (SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACE 
GROUP BY tablespace_name ) a, 
(SELECT tablespace_name,SUM(bytes) total FROM DBA_DATA_FILES 
GROUP BY tablespace_name) b 
WHERE a.tablespace_name=b.tablespace_name 
ORDER BY 4;

查看执行计划:

SYS@testogg> explain plan for SELECT a.tablespace_name,round(total/1024/1024/1024) "Total g", round(free/1024/1024/1024) "Free g",ROUND((total-free)/total,4)*100 "USED%" FROM (SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACE GROUP BY tablespace_name ) a, (SELECT tablespace_name,SUM(bytes) total FROM DBA_DATA_FILES GROUP BY tablespace_name) b WHERE a.tablespace_name=b.tablespace_name ORDER BY 4;

Explained.
Elapsed: 00:00:00.68
SYS@testogg> select * from table(dbms_xplan.display());

DBA_FREE_SPACE 视图慢

set auto on
seleclt count(*) from dba_free_space;

由上图看出,主要访问了这几个系统表 FET$、TS$、RECYCLEBIN$、X$KTFBUE、UET$ 以及 NEW_LOST_wRITE_EXTENTS$,每一个都是有可能引起慢的原因,我们来收集一下统计信息看看

收集统计信息

 

收集系统统计信息:
exec dbms_stats.GATHER_SYSTEM_STATS;

收集动态性能视图基表的统计信息:
exec dbms_stats.GATHER_FIXED_OBJECTS_STATS;

收集数据字典的统计信息:
exec dbms_stats.GATHER_DICTIONARY_STATS;

收集用户的统计信息:
exec DBMS_STATS.GATHER_SCHEMA_STATS(ownname => ‘SYS’)

收集表统计信息:
exec DBMS_STATS.GATHER_TABLE_STATS(ownname => ‘SYS’,taname=>‘TS$’,CASCADE=>true)

 ....

参考:https://mp.weixin.qq.com/s/HsDlc17OOCJc4JxEpcAJ2A

标签:1024,STATS,name,17,free,查询,tablespace,Oracle,total
From: https://www.cnblogs.com/zmc60/p/17568431.html

相关文章

  • oracle trim函数除去空格
    官网语法图TRIM([{{LEADING|TRAILING|BOTH}[trim_character]|trim_character}FROM]trim_source)leading:开头字符trailing:结尾字符both:开头和结尾字符trim_character:去除的字符trim_source:修剪源......
  • myBatis 流式查询,大数据量查询
    myBatis-plus/myBatis流式查询,大数据量查询myBatis这个开源框架的好处就不再赘述,myBatis-plus则更是myBatis的增强工具,框架给我提供很多查询数据方式,非常方便,这里就介绍一下流式查询,也就是游标的方式去查询。我们在完成工作的途中会遇到大数据量的查询,比如大量数据的导出等等......
  • mysql查询数据库重复数据
    查询重复领取的优惠券//查询8888888用户优惠券状态为未使用且数量大于2的用户领取过的优惠券SELECTdiscount_coupon_id,count(discount_coupon_id)ascFROM`faith_user_discount_coupon`whereuser_id='88888888'and`status`='1'GROUPBYdiscount_coupon_idhavingc>......
  • NET EF 参数化查询(LIKE / IN)
    原始数据:1.拼接SQL:容易注入2.参数化查询:2.1.等于+Like:2.2.等于+Like+ IN:2.2.1.结果:类似的参数传递,但是结果为02.2.2.分析:通过SQLServerProfile得到运行sql,发现IN的参数被处理成了一个字符串,类似于:WHERE[Key]IN('''01'',''11'',''21'�......
  • MySQL 查询按序累加数值
    Mysql假如我有一个表,有字段day,money,day记录我攒钱的第几天,money记录我当天攒的钱数,请写一个查询,返回我攒钱的天数,和这一天之前(包含这一天)一共攒的钱数SELECTday,money,(@cumulative_money:=@cumulative_money+money)AScumulative_moneyFROMyour_table_name,......
  • mongodb 查询操作实现原理
    MongoDB查询操作实现原理MongoDB是一种非关系型数据库,它以文档的形式存储数据,使用JSON风格的文档来表示数据。在MongoDB中,查询操作是非常重要和常用的操作之一。本文将介绍MongoDB查询操作的实现原理,并提供一些代码示例进行说明。查询操作的基本原理MongoDB提供了丰富......
  • mongodb 查询不带_id
    如何实现“MongoDB查询不带_id”作为一名经验丰富的开发者,你可以教会那些刚入行的小白如何在MongoDB数据库中实现查询不带_id。在本文中,我们将介绍整个过程,并附上具体代码和相应注释。步骤概览下面是实现“MongoDB查询不带_id”的整体步骤概览:步骤描述1连接到MongoDB......
  • mongoDB只查询一个字段
    MongoDB只查询一个字段在使用MongoDB进行数据查询操作时,有时我们只需要获取文档中的一个字段的值,而不需要获取整个文档的内容。这时,我们可以使用MongoDB的投影操作来仅查询一个字段,以提高查询效率和减少数据传输的大小。本文将介绍如何使用MongoDB进行只查询一个字段的操作,并提供......
  • mysql-查询数据库中所有的函数定义
    MySQL查询数据库中所有的函数定义在MySQL中,函数是一种自定义的代码块,它接受输入参数并返回一个结果。函数可以用于简化复杂的查询操作,提高代码的可重用性。在本文中,我们将介绍如何使用MySQL查询数据库中所有函数的定义。查询函数定义要查询数据库中所有的函数定义,我们可以使用......
  • mysql查询至少一门课程的成绩
    MySQL查询至少一门课程的成绩MySQL是一种常用的关系型数据库管理系统,广泛应用于各种Web应用和数据分析任务中。在进行数据查询时,我们经常需要筛选出满足一定条件的数据。本文将介绍如何使用MySQL查询至少一门课程的成绩,并提供相应的代码示例。数据库准备在开始之前,我们需要准备......