oracle中查看 某个用户下 表/索引 的数据量大小-MS也会问到


上脚本:

1.查看用户下所有的数据对象的大小:

select
temp.owner,
temp.table_name,
temp.column_name,
temp.segment_name,
'truncate table '|| temp.segment_name ||' DROP STORAGE;' as execTxt,
temp.segment_type,temp.g from (
select
a.owner,
b.table_name,
b.column_name,
a.segment_name,
a.segment_type,
round(sum(a.bytes / 1024 / 1024 / 1024), 2) g    --以 G 为单位
from dba_segments a
left join dba_lobs b
on a.owner = b.owner and a.segment_name = b.segment_name
--where b.segment_name = 'SYS_LOB0000026212C00002$$'
where a.owner='用户名'
having round(sum(a.bytes / 1024 / 1024 / 1024), 2) >1     -- 条件:大于 1G

group by a.owner,b.table_name, b.column_name, a.segment_name,a.segment_type

) temp order by temp.segment_type,temp.g desc

 

2.查看某一张表的大小

select a.owner as 所属用户,
a.segment_name as 名称,
a.segment_type as 类型,
round(a.bytes / 1024 / 1024, 2) 大小MB,
a.blocks as 块数量 from dba_segments a
where a.segment_name='表名称'

 

3.查看一个用户下面的索引总大小


select a.owner as 所属用户,
--a.segment_name as 名称,
sum(round(a.bytes /1024/1024/1024, 2)) 大小GB
from dba_segments a
where a.owner='用户名'
and a.segment_type='INDEX'
group by a.owner

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM