想看看表空间的使用情况,结果在网上搜了一下出来好多都是这东西,不理解,求解释查看表物理文件大小: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  
查看表空间使用情况的语句为什么用到子查询啊  
路过的朋友支招啊  

解决方案 »

  1.   

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

  2.   

    在Oracle中,如果表没有分区,一个表对应一个segment_name
      

  3.   

    正解
    select * from (select tablespace_name,sum(bytes) all_size from dba_data_files group by tablespace_name) a,(select tablespace_name,sum(bytes) free_size from dba_free_space group by tablespace_name) b where a.tablespace_name=b.tablespace_name;
      

  4.   

    使用动态性能视图v$tablespace.只要是关于表空间的东西都在里面了。
      

  5.   

    使用前如果不知道这个表里面有什么请查阅表结构哦:desc v$tablespace