查看表和表空间大小

来源:这里教程网 时间:2026-03-03 16:22:47 作者:

有两种含义的表大小。一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数: 一、查看表大小: 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, 通过它们之间的关联关系,我们得到了表空间的相关信息。

相关推荐