查看表大小
有两种含义的表大小:一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数:
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 tableAREAINFOcompute statistics;
select
TABLE_NAME,TABLESPACE_NAME, NUM_ROWS ,AVG_ROW_LEN, NUM_ROWS*AVG_ROW_LEN
from user_tables
where table_name = 'AREAINFO';
说明:
表名称要大写,红色加粗部分。
查看每个表空间的大小
Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By
Tablespace_Name
查看剩余表空间大小
SELECT tablespace_name表空间,sum(blocks*8192/1000000)剩余空间M FROM dba_free_space GROUP BY
tablespace_name;
检查系统中所有表空间总体空间
select b.name,sum(a.bytes/1000000)总空间from v$datafile a,v$tablespace b
where a.ts#=b.ts# group by b.name;
通过多个视图获取表空间信息
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;
该语句通过查询dba_free_space,dba_data_files,dba_tablespaces这三个数据字典表,得到了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。dba_free_space表描述了表空间的空闲大小,dba_data_files表描述了数据库中的数据文件,dba_tablespaces表描述了数据库中的表空间。
上面语句中from子句后有三个select语句,每个select语句相当于一个视图,视图的名称分别为a、b、c,通过它们之间的关联关系,我们得到了表空间的相关信息。