2016-02-25 42 views
2

我正在尝试查找模式中表的大小。我尝试通过以下方式查找dba_extent。计算模式中表的大小

select segment_name,sum(bytes)/(1024*1024) size from dba_extent where segment_type='TABLE' 
and segment_name = 'mytablename' 
and owner ='myschemaname' 
group by segment_name; 

它给为2 MB,但没办法这是2MB,我已经看到它的大小为日志一些800MB,而我是出口schema.It给出了相同的结果,当我查询DBA_SEGMENTS。任何人都可以帮助我在哪里出错。感谢您的时间。

+2

告诉你什么日志,该表是更大?有可能表中有一个LOB,这将是一个不同的段名称? –

+0

是的,它有blob,我不知道它是否使用其他段,我如何找出 – sreenivas

+0

@JustinCave,它正在使用另一个段。谢谢 – sreenivas

回答

-3

试试下面的SQL:希望这将有助于:)

SELECT 
tbl.NAME AS TableName, 
idx.name as indexName, 
prts.[Rows], 
sum(a.total_pages) as TotalPages, 
sum(a.used_pages) as UsedPages, 
sum(a.data_pages) as DataPages, 
(sum(a.total_pages) * 8)/1024 as TotalSpaceMB, 
(sum(a.used_pages) * 8)/1024 as UsedSpaceMB, 
(sum(a.data_pages) * 8)/1024 as DataSpaceMB 
FROM 
sys.tables tbl 
INNER JOIN 
sys.indexes idx ON tbl.OBJECT_ID = idx.object_id 
INNER JOIN 
sys.partitions prts ON idx.object_id = prts.OBJECT_ID AND idx.index_id = prts.index_id 
INNER JOIN 
sys.allocation_units a ON prts.partition_id = a.container_id 
WHERE 
tbl.NAME NOT LIKE 'dt%' AND 
idx.OBJECT_ID > 255 AND 
idx.index_id <= 1 
GROUP BY 
tbl.NAME, idx.object_id, idx.index_id, idx.name, prts.[Rows] 
ORDER BY 
object_name(idx.object_id) 
+0

它不工作。 – sreenivas

+0

以上SQL在SQL-2008中正常工作,你想在哪个数据库? –

+0

甲骨文没有allocation_units表,我越来越表不存在错误和即时通讯使用10g – sreenivas