目前计算表空间最准确的脚本,考虑了多种潜在的情况。
prompt
prompt "---------------------------------------"
prompt "Tablespace Total Info"
prompt "---------------------------------------"
set linesize 160 pagesize 1000
col TABLESPACE_NAME for a25
col FREE_PCT for a10;
compute sum of Total_MB on report;
compute sum of MAX_MB on report;
break on report
col MAX_FREE_PCT for a15;
select /* + rule */
b.TABLESPACE_NAME,
b.CONTENTS,
a.TOTAL_MB,
a.USED_MB,
a.FREE_MB,
a.FREE_PCT,
a.MAX_MB,
a.MAX_FREE_MB,
a.MAX_FREE_PCT,
b.STATUS
from (SELECT total.tablespace_name,
Round(total.MB) AS Total_MB,
Round(free.MB) AS Free_MB,
Round(total.MB - free.MB) AS Used_MB,
Round((free.MB / total.MB) * 100) || '%' AS Free_Pct,
Round(total.MAX_MB) AS MAX_MB,
Round(total.MAX_MB - (total.MB - free.MB)) AS MAX_FREE_MB,
Round((total.MAX_MB - (total.MB - free.MB)) / total.MAX_MB * 100) || '%' AS MAX_FREE_PCT
FROM (SELECT tablespace_name,
sum(bytes) / 1024 / 1024 AS MB
FROM dba_free_space
GROUP BY tablespace_name) free,
(SELECT tablespace_name,
sum(DECODE(AUTOEXTENSIBLE,'YES',greatest(MAXBYTES,BYTES),BYTES)) / 1024 / 1024 AS MAX_MB,
sum(BYTES) / 1024 / 1024 AS MB
FROM dba_data_files
GROUP BY tablespace_name) total
WHERE free.tablespace_name = total.tablespace_name
union all
SELECT total.tablespace_name,
Round(total.MB) AS Total_MB,
Round(total.MB - used.MB) AS Free_MB,
Round(used.MB) AS Used_MB,
Round(((total.MB-used.MB) / total.MB) * 100) || '%' AS Free_Pct,
Round(total.MAX_MB) AS MAX_MB,
Round(total.MAX_MB - used.MB) AS MAX_FREE_MB,
Round((total.MAX_MB - used.MB) / total.MAX_MB * 100) || '%' AS Free_Pct_Max
FROM (select ss.tablespace_name,
sum((ss.used_blocks * ts.blocksize)) / 1024 / 1024 mb
from gv$sort_segment ss, sys.ts$ ts
where ss.tablespace_name = ts.name
group by ss.tablespace_name) used,
(SELECT tablespace_name,
sum(DECODE(AUTOEXTENSIBLE,'YES',greatest(MAXBYTES,BYTES),BYTES)) / 1024 / 1024 AS MAX_MB,
sum(BYTES) / 1024 / 1024 AS MB
FROM dba_temp_files
GROUP BY tablespace_name) total
WHERE used.tablespace_name = total.tablespace_name
) a,
dba_tablespaces b
where a.tablespace_name(+) = b.tablespace_name;`
复制
最后修改时间:2022-05-18 14:28:09
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
❤️您好,您的文章中有sql语句,可以查看Markdown手册后更改:https://www.modb.pro/db/181712。
2年前

评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
687次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
635次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
546次阅读
2025-04-20 10:07:02
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
493次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
490次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
480次阅读
2025-04-22 00:13:51
一页概览:Oracle GoldenGate
甲骨文云技术
469次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
418次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
372次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
357次阅读
2025-05-05 19:28:36