ITPub博客

首页 > 数据库 > Oracle > 查看表和表空间大小

查看表和表空间大小

原创 Oracle 作者:1经天纬地1 时间:2021-01-21 15:12:50 0 删除 编辑

有两种含义的表大小。一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数:


一、查看表大小:

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/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 第一周
请登录后发表评论 登录
全部评论

注册时间:2020-03-05

  • 博文量
    12
  • 访问量
    16132