2016-02-25 2 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 МБ, но никоим образом не является 2MB, и я видел его размер, как некоторые 800MB в журналах, а я экспортировал schema.It дал тот же результат, когда я опрашивать dba_segments. Может ли кто-нибудь помочь, где я ошибаюсь. Спасибо за ваше время.

+2

Что журналы сказать, что таблица больше? Возможно ли, что в таблице есть LOB, который будет другим именем сегмента? –

+0

Да, у него есть blob, я не знаю, использует ли его другой сегмент. Как я могу узнать, что – sreenivas

+0

@JustinCave, он использует другой сегмент. спасибо – sreenivas

ответ

-3

Try ниже 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

oracle не имеет таблицы alloc_units, я получаю таблицу, не существует ошибки и im, используя 10g – sreenivas

Смежные вопросы