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
;
查看每个表空间的大小
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%时,将产生空间不够的错误。