有两种含义的表大小。一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数:
一、查看表大小:
1、查看已分配的物理空间:
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
2、另一种表实际使用的空间:
analyze table emp compute statistics;
select num_rows * avg_row_len
from user_tables
where table_name = 'T1';
二、查看每个表空间的大小
Select Tablespace_Name, Sum(bytes) / 1024 / 1024
From Dba_Segments
Group By Tablespace_Name
1.查看剩余表空间大小
SELECT tablespace_name 表空间, sum(blocks * 8192 / 1000000) 剩余空间M
FROM dba_free_space
GROUP BY tablespace_name;
2.检查系统中所有表空间总体空间
select b.name, sum(a.bytes / 1000000) 总空间
from v$datafile a, v$tablespace b
where a.ts# = b.ts#
group by b.name;
查看Oracle数据库中表空间信息的命令方法:
通过查询数据库系统中的数据字典表(data dictionary tables)获取表空间的相关信息,首先使用客户端工具连接到数据库,
这些工具可以是SQLPLUS字符工具、TOAD、PL/SQL等,连接到数据库后执行如下的查询语句:
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,
通过它们之间的关联关系,我们得到了表空间的相关信息。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69965557/viewspace-2751746/ ,如需转载,请注明出处,否则将追究法律责任。