oracle查询表存储大小和表空间大小

oracle表大小有两种含义,即表分配的空间大小和实际占用的物理空间大小,分配的物理空间大小不一定全部被使用了,实际空间大小是实际使用的空间大小。
oracle元数据库相关表字段解释

查看表分配的物理空间大小

select segment_name  --表名
      ,bytes  --分配空间大小(字节)
	  ,bytes/1024/1024  --分配空间大小(M)
  from user_segments
 where segment_type = 'TABLE';

字段解释:
user_segments字段解释

或者

select segment_name  --表名
      ,sum(bytes) size_b  --分配空间大小(字节)
      ,sum(bytes)/1024/1024 size_m  --分配空间大小(M)
  from user_extents 
 where segment_type = 'TABLE'
 group by segment_name
;

字段解释:
DBA_EXTENTS字段解释

查看表实际存储空间大小

select table_name  --表名
      ,num_rows * avg_row_len size --实际存储空间大小
  from user_tables
;

ALL_TABLES表字段解释

查看每个表空间的大小

select tablespace_name  --表空间名称
      ,sum(bytes)/1024/1024 size  --表空间大小
  from dba_segments 
 group by tablespace_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
;

查看数据库中数据文件信息

select b.file_name 物理文件名
      ,b.tablespace_name 表空间
      ,b.bytes/1024/1024 大小M
	  ,(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M
	  ,substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率
  from dba_free_space a, dba_data_files b
 where a.file_id=b.file_id
 group by b.tablespace_name,b.file_name,b.bytes
 order by b.tablespace_name
;

查看临时表空间信息

在oracle数据库中,临时表空间主要用于用户在使用order by 、group by语句进行排序和汇总时所需的临时工作空间。要查询数据库中临时表空间的名称,大小及数据文件,可以查询数据字典dba_tablespaces及dba_data_files。命令如下:

select a.tablespace_name 表空间名称
      ,b.bytes 大小bytes
	  ,b.file_name 数据文件名
  from dba_tablespaces a, dba_data_files b
 Where a.tablespace_name = b.tablespace_name 
   and a.contents = 'TEMPORARY'
;

从oracle 9i开始,可以创建Temporary tablespace类表空间,即“临时“表空间,这类表空间使用临时文件。临时文件的信息被存储在数据字典V$tempfile中。命令如下:

select file#,status,name from V$tempfile;

在这里插入图片描述

在数据库管理员的日常工作中,应该经常查询表空间的利用率,按照数据库系统的具体情况估算表空间的增长量,当表空间的利用率超过90%时,要及时采取措施,如清理历史表、历史数据以释放空间,向表空间中添加新的数据文件,扩展现有数据文件大小等方法来降低表空间的利用率,避免表空间利用率接近100%时,将产生空间不够的错误。

猜你喜欢

转载自blog.csdn.net/lz6363/article/details/112184927
今日推荐