您的位置:首页 > 数据库 > Oracle

Oracletop10物理段

2014-05-10 10:14 274 查看
Oracletop10物理段

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: