如何查看Oracle表以及索引的存储空间
在BI中我经常遇到查看某一个月的数据量的大小。
一个月数据量的大小包含两个部分:
l 本表数据量的存储空间;
l 本表对应索引的存储空间。
一下是一个SQL语句用于查看总的存储空间:
SELECT to_char(sum_mb / (SELECT COUNT(1)
FROM (SELECT period_name
FROM f_sbu_allocate_result_sum t
GROUP BY period_name)),
'999G999D999') sum_mb
FROM (SELECT SUM(bytes) / (1024 * 1024) sum_mb
FROM dba_extents
WHERE owner = 'AMDDM'
AND segment_name IN
('f_sbu_allocate_result', 'F_SBU_ALLOCATE_RESULT_ALL',
'F_SBU_ALLOCATE_RESULT_SUM', 'F_SBU_ALLOCATE_RESULT_N3',
'F_SBU_ALLOCATE_RESULT_N2', 'F_SBU_ALLOCATE_RESULT_N',
'F_SBU_ALLOCATE_RESULT_SUM_U'))
下面我们就说明一下以上的SQL语句是如何使用的:
首先,看红色的部分,这是一个计算月份的SQL语句。
然后,浅蓝色部分,涉及到的表,以及表索引。
当然,我们还是要注意owner,这个是必须的,主要用于区分用户。因为很可能在不同的用户下面有相同名字的表,或者表索引。
当然,计算表以及其索引的方法很多,这里只是其中一个例子。
谨供大家参考。