2016-02-25 64 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