看以下语句的结果,对于同样的一个数据文件,dba_free_space查到剩余空间是15G左右,dba_extents查到使用了12G左右,但是该数据文件总大小也就15G,为什么?理论上不是应该剩余空间+使用空间约等于总空间的吗?
SQL> select sum(bytes/1024/1024) from dba_free_space where file_id=8;  SUM(BYTES/1024/1024)
--------------------
          15478.8125SQL> select sum(bytes/1024/1024) from dba_extents where file_id=8;SUM(BYTES/1024/1024)
--------------------
           12562.125SQL> select bytes/1024/1024 from dba_data_files where file_id=8;BYTES/1024/1024
---------------
          15000

解决方案 »

  1.   

    extent分配的空间未必被全部使用.
      

  2.   

    从数据上看,extent分配的空间几乎都没有使用,感觉是不正常的现象,谁能解释下?
      

  3.   

    select user_bytes/1024/1024 from dba_data_files where file_id=8;select sum(bytes/1024/1024) from dba_extents where file_id=8;
      

  4.   

    有没有这样的可能 就是新分配的空间都是最高的块往下开始的 一共分配了12G 
    但是删除数据的时候 可能会把之前的空间释放出来 而oracle不会自动回收空间 就造成中空的情况
    个人看法