oracle

时间:2015-09-17 08:14:22

标签: oracle oracle11g tablespace

完整表空间的实际指标是什么?物理文件大小(已分配)或已用空间? 我们只有一个模式使用DATA01作为数据库中的主表空间。 请参考下面的sql:

Select Bytes/1024/1024/1024,Tablespace_Name,File_Name From Dba_Data_Files;

Select df.tablespace_name Tablespace,
totalusedspace Used_MB,
(df.totalspace - tu.totalusedspace) Free_MB,
Df.Totalspace Total_Mb,
round(100 * ( (df.totalspace - tu.totalusedspace)/ df.totalspace)) Pct_Free
from
(select tablespace_name,
round(sum(bytes) / 1048576) TotalSpace
from dba_data_files
Group By Tablespace_Name) Df,
(select round(sum(bytes)/(1024*1024)) totalusedspace, tablespace_name from dba_segments
group by tablespace_name) tu
where df.tablespace_name = tu.tablespace_name; 

第一个sql给出以下结果:

SQL> Select Bytes/1024/1024/1024,Tablespace_Name,File_Name From Dba_Data_Files;

BYTES/1024/1024/1024 TABLESPACE_NAME                                                                                    
-------------------- ------------------------------                                                                     
FILE_NAME                                                                                                               
------------------------------------------------------------------------------------------------------------------------
          .004882813 USERS                                                                                              
+DATA/xxx/datafile/users.289.863434089                                                                             

          1.43066406 UNDOTBS1                                                                                           
+DATA/xxx/datafile/undotbs1.288.863434089                                                                          

                   5 SYSAUX                                                                                             
+DATA/xxx/datafile/sysaux.287.863434089                                                                            

                   5 SYSTEM                                                                                             
+DATA/xxx/datafile/system.286.863434087                                                                            

          .537109375 UNDOTBS2                                                                                           
+DATA/xxx/datafile/undotbs2.294.863434493                                                                          

          31.9999847 DATA01                                                                                             
+DATA/xxx/datafile/data01a.dbf                                                                                     

          31.9999847 DATA01                                                                                             
+DATA/xxx/datafile/data01b.dbf                                                                                     

          31.9999847 DATA01                                                                                             
+DATA/xxx/datafile/data01c.dbf                                                                                     

           .09765625 DATA02                                                                                             
+DATA/xxx/datafile/data02a.dbf                                                                                     

           6.4831543 INDEX02                                                                                            
+DATA/xxx/datafile/index02a.dbf                                                                                    

          31.9414063 DATA01                                                                                             
+DATA/xxx/datafile/data01d.dbf    

第二个sql给出以下结果:

TABLESPACE                        USED_MB    FREE_MB   TOTAL_MB   PCT_FREE                                              
------------------------------ ---------- ---------- ---------- ----------                                              
UNDOTBS1                               27       1438       1465         98                                              
SYSAUX                               2211       2909       5120         57                                              
SYSTEM                               2579       2541       5120         50                                              
DATA01                              86363      44649     131012         34                                              
UNDOTBS2                               17        533        550         97                                              
INDEX02                              3103       3536       6639         53    

如图所示,四个数据文件data01a / data01b / data01c / data01d的大小接近32G,但为什么显示第二个sql的结果仍有34%的表空间DATA01可用空间?

此外,DBA从db console发送以下屏幕截图时更加奇怪:

  

数据文件名称|用法|尺寸|二手|免费|

     

data01d.dbf | 0%| 31.96 Gb | 47MB | 31.9Gb

问题:

  1. 如上所述,哪个陈述应该是全表空间的主要参考?检查物理文件大小或用法?
  2. 为什么它在data01d.dbf的屏幕截图中显示0%的使用率,但实际的物理文件大小约为31.94G?
  3. 导致dbf文件大小扩展到31.96Gb的原因是什么?
  4. 非常感谢您的任何意见/建议,赞赏。

2 个答案:

答案 0 :(得分:0)

表空间只是磁盘上预先分配的空间量。它是管理表空间中空间使用情况的数据库,因此我倾向于使用数据库报告的内容 - 即。你的第二个问题。

所以,回答你的问题:

  1. 我会继续你的第二个问题。
  2. 可能是因为该特定文件中的大部分空间尚未使用,但我希望其他3个文件中的大部分空间都已被使用。
  3. 尺寸的明显差异可能是由于四舍五入问题。

答案 1 :(得分:0)

扩展的数据文件大小和实际的数据库使用情况是两回事。数据文件可以100%扩展(在您的情况下为32GB),但实际上该文件中没有任何有意义的数据(但它仍占用驱动器上的所有空间)。例如,数据文件已展开,但稍后数据已被删除。数据文件本身不会缩小。它保持扩展。

您可能已将数据库文件设置为每个扩展至32GB,然后再继续填充下一个可用文件。检查Oracle中的设置。在数据文件大小方面存在平衡行为。最好将数据文件切割成较小的块,以提高性能,防止损坏,加快备份和恢复速度。查看: https://docs.oracle.com/cd/B28359_01/server.111/b28310/dfiles003.htm#ADMIN11423