Oracle数据库top10物理段
Oracle数据库top10物理段
select owner, name, type, mega, tbs
from (select owner,
case
when segment_type = 'LOBSEGMENT' then
logical_name
else
segment_name
end as name,
segment_type as type,
round(bytes / 1024 / 1024) as mega,
tablespace_name as tbs
from (select a.owner,
a.segment_name,
a.segment_type,
b.table_name || '.' || b.column_name as logical_name,
bytes,
a.tablespace_name
from dba_segments a, dba_lobs b
where a.owner = b.owner(+)
and a.segment_name = b.segment_name(+)
and a.bytes > 1020 * 1024 * 1024)
order by bytes desc);
这个SQL有一个不足之处。在数据库中有很多分区表的话,每个分区很小则不能正确获得表的真实大小。因此,将分区段进行聚合,所在表空间就不管了,随意取一个。
select owner, name, type, mega, tbs
from (select owner,
case
when segment_type like 'LOB%' then
logical_name
else
segment_name
end as name,
segment_type as type,
round(bytes / 1024 / 1024) as mega,
tablespace_name as tbs
from (select a.owner,
a.segment_name,
a.segment_type,
b.table_name || '.' || b.column_name as logical_name,
bytes,
a.tablespace_name
from (select owner,
segment_name,
segment_type,
sum(bytes) as bytes,
max(tablespace_name) as tablespace_name
from dba_segments
group by owner, segment_name, segment_type) a,
dba_lobs b
where a.owner = b.owner(+)
and a.segment_name = b.segment_name(+)
and a.bytes > 1024 * 1024 * 1024)
order by bytes desc);
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。