查詢表的大小及表空間的使用情況

passion_of_data發表於2011-06-20

1、查詢表空間的使用情況
 select
  a.a1 表空間名稱,
  c.c2 型別,
  c.c3 區管理,
  b.b2/1024/1024 表空間大小M,
  (b.b2-a.a2)/1024/1024 已使用M,
  substr((b.b2-a.a2)/b.b2*100,1,5) 利用率
  from
  (select tablespace_name a1, sum(nvl(bytes,0)) a2 from
  dba_free_space group by tablespace_name) a,
  (select tablespace_name b1,sum(bytes) b2 from
  dba_data_files group by tablespace_name) b,
  (select tablespace_name c1,contents c2,extent_management c3 from dba_tablespaces) c
  where a.a1=b.b1 and c.c1=b.b1;

有兩種含義的表大小。一種是分配給一個表的物理空間數量,而不管空間是否被使用。可以這樣查詢獲得位元組數:

select segment_name, bytes
from user_segments
where segment_type = 'TABLE';
或者
   Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

另一種表實際使用的空間。這樣查詢:

analyze table emp compute statistics;
select num_rows * avg_row_len
from user_tables
where table_name = 'EMP';

檢視每個表空間的大小
Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25964700/viewspace-700298/,如需轉載,請註明出處,否則將追究法律責任。

相關文章