看网上由很多查询数据库表空间的脚本,在此基础上我根据自己的需要又添加了自己需要查询的东西,脚本如下:
Select Distinct a.Tablespace_Name ,
Trunc(((Free_Space) / Total_Space) * 100) || '%' ,
To_Char(Free_Space / 1024 / 1024 / 1024, '9999999990.99') || 'G' Free_Space ,
To_Char(Total_Space / 1024 / 1024 / 1024, '9999999990.99') || 'G' Total_Space,
c.autoextensible,
c.maxbytes/1024/1024/1024||'G' maxbytes,
(c.increment_by*8192) / 1024/1024||'M'
From (Select Tablespace_Name, Sum(Bytes) Free_Space
From Dba_Free_Space
Group By Tablespace_Name) a,
(Select Tablespace_Name, Sum(Bytes) Total_Space
From Dba_Data_Files
Group By Tablespace_Name) b,
dba_data_files c
Where a.Tablespace_Name = b.Tablespace_Name and a.tablespace_name = c.Tablespace_Name and c.tablespace_name = b.Tablespace_Name
order by 2 ;
解释如下:
Tablespace_Name ---表空间的名字。
Trunc(((Free_Space) / Total_Space) * 100) || '%' ---表空间的空闲率,这比例越小,说明数据的剩余的空间越小,这比例越大,说明数据的剩余的空间越多。
To_Char(Free_Space / 1024 / 1024 / 1024, '9999999990.99') || 'G' Free_Space ---表空间剩余的多少空间。大小为G,大家可以根据自己的实际情况调整。可以To_Char(Free_Space / 1024 / 1024 , '9999999990.99') || 'M' Free_Space,计算出来的结果是按M来算的。
To_Char(Total_Space / 1024 / 1024 / 1024, '9999999990.99') || 'G' Total_Space ---表空间总的大小。大小为G,大家可以根据自己的实际情况调整。
c.autoextensible, ----数据文件是否开启自动增长。yes表示是开启,ON表示未开启。
c.maxbytes/1024/1024/1024||'G' maxbytes, ---数据文件最大能增大到多少。单位为G,说的直白点,就是这个数据文件增长到这个数值以后就不在自动增长了。一般情况下,一个数据文件最大为32g,生产环境中一般是添加数据文件,一个数据文件为30G,不开自动增长。
(c.increment_by*8192) / 1024/1024||'M' ---数据文件开启自动增长后,每次增加多少,大小为M。