oracle查詢表以及表上索引佔用空間大小

var t_owner varchar2(30);
var t_name varchar2(30);
exec :t_owner := 'scott';
exec :t_name := 'emp';
select t1.owner || '.' || t1.table_name table_name,
       t1.tab_gb + nvl(t2.idx_gb, 0) + nvl(t3.lob_gb, 0) total_gb,
       t1.tab_gb,
       nvl(t2.idx_gb, 0) idx_gb,
       nvl(t3.lob_gb, 0) lob_gb
  from (select owner,
               segment_name table_name,
               round(sum(bytes) / 1024 / 1024 / 1024, 4) TAB_GB  --表對象佔用空間
          from dba_segments
         where owner = upper(:t_owner)
           and segment_name = upper(:t_name)
         group by owner, segment_name) t1, 
       (select round(sum(bytes) / 1024 / 1024 / 1024, 4) IDX_GB  --表上索引對象佔用空間
          from dba_segments
         where owner || segment_name in
               (select owner || index_name
                  from dba_indexes
                 where table_owner = upper(:t_owner)
                   and table_name = upper(:t_name))) t2, 
       (select round(sum(bytes) / 1024 / 1024 / 1024, 4) LOB_GB --表上大字段對象佔用空間
          from dba_segments
         where owner || segment_name in
               (select owner || segment_name
                  from dba_lobs
                 where owner = upper(:t_owner)
                   and table_name = upper(:t_name))) t3;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章