用到了
SYS.DBA_FREE_SPACE、SYS.DBA_DATA_FILES 两个视图
SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB
"表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES
"已使用空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB -
F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100, 2), '990.99') "使用比",
F.TOTAL_BYTES "空闲空间(M)", F.MAX_BYTES "最大块(M)"
FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024),
2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM
SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT
DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2)
TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY
DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY F.TABLESPACE_NAME;
以下是我写的:)
select f.tablespace_name,d.total_byte,(d.total_byte-f.free_byte)
used_byte,
f.free_byte free_byte,round((1-f.free_byte/d.total_byte)*100,2)
used_per,round(f.maxbyte/(1024*1024),2) maxbyte
from (select tablespace_name,round(sum(bytes)/(1024*1024),2)
free_byte,max(bytes) maxbyte from dba_free_space
group by tablespace_name) f,
(select tablespace_name,round(sum(bytes)/(1024*1024),2) total_byte
from dba_data_files
group by tablespace_name) d
where f.tablespace_name=d.tablespace_name
order by f.tablespace_name
在8i中temporary tablespace
也可以在dba_free_space中查找到的,但是在9I以后,temp
tablespace
属于自动管理,在dba_free_space中已经查不到。另外在9i中已经有了dba_temp_files