如果表空間不是自动扩展的用的下SQL比较合适
col tablespace_name format a20
select a.tablespace_name,
used/1024/1024||'M' used,
round(100-b.free/used*100,2)||'%' used_pct,
round(free/1024/1024,2)||'M' free,
round(max_size/1024/1024)||'M' max_size,
round(max_size/1024/1024)-used/1024/1024||'M' "MAX_SIZE-TOTAL"
from
(select tablespace_name,sum(bytes) used,
sum(case when maxbytes=0 then bytes else maxbytes end) max_size
from dba_data_files
group by tablespace_name
)a,
(select tablespace_name,sum(bytes) free
from dba_free_space
group by tablespace_name
)b
where a.tablespace_name=b.tablespace_name;
如果表空间是自动扩展的﹐我只能想到下面的方法
SELECT TABLESPACE_NAME, FILE_SIZE, MAX_SIZE
FROM
(SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024||'M' FILE_SIZE,
ROUND(SUM(CASE WHEN MAXBYTES=0 THEN BYTES ELSE MAXBYTES END)/1024/1024)||'M' MAX_SIZE
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME)
NOTE﹕FILE_SIZE﹕如果使用空间的大小没有超过定义时指定的初始大小则不能真时的显示使用了多大空间
在查看表空间的使用率时我发在从DBA_FREE_SPACE中并不查出所有的表空间。一个autoextend表空间在超过了初始定义值后会从DBA_FREE_SPACE中消失。
那位前辈能给出一个通用的查看表空间的方法,小弟在此先谢谢
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7419833/viewspace-178882/ ,如需转载,请注明出处,否则将追究法律责任。