日期:2014-05-16  浏览次数:20780 次

查询表空间使用情况问题
想看看表空间的使用情况,结果在网上搜了一下出来好多都是这东西,不理解,求解释

查看表物理文件大小:select segment_name,bytes/1024/1024 from user_segments/dba_segments;
这个地方我想查询单个表的物理文件大小该怎么查啊,上面的是全部(segment_name,这个字段是上面意思啊)


查看表空间使用情况的SQL语句:   
SELECT   
a.tablespace_name "表空间名",
total 表空间大小,
free 表空间剩余大小,   
(total-free) 表空间使用大小,  
ROUND((total-free)/total,4)*100 "使用率 %"   
FROM  
(SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACE GROUP BY tablespace_name ) a,   
(SELECT tablespace_name,SUM(bytes) total FROM DBA_DATA_FILES GROUP BY tablespace_name) b   
WHERE a.tablespace_name=b.tablespace_name   
查看表空间使用情况的语句为什么用到子查询啊 路过的朋友支招啊   
------解决方案--------------------
主要的是搞懂这几个系统视图的含义。
DBA_FREE_SPACE  计算数据文件、表空间剩余空间大小
DBA_DATA_FILES  计算数据文件定义的大小
DBA_SEGMENTS    计算段使用的大小

计算表的大小:
select segment_name,bytes/1024/1024 from user_segments group by segment_name 
------解决方案--------------------
引用:
主要的是搞懂这几个系统视图的含义。
DBA_FREE_SPACE 计算数据文件、表空间剩余空间大小
DBA_DATA_FILES 计算数据文件定义的大小
DBA_SEGMENTS 计算段使用的大小

计算表的大小:
select segment_name,bytes/1024/1024 from user_segments group by segment_name

一楼正解!!!
为什么用子查询,是因为表空间、数据文件的各个信息是不放到一起的