SELECT a.tablespace_name 表空间名,
total 表空间大小,
free 表空间剩余大小,
(total - free) 表空间使用大小,
ROUND((total - free) / total, 2) * 100 || '%' 使用率,
maxmb 表空间最大值,to_char(maxmb-(total - free),'fm99999,999,999') 最大可用,
ROUND((total - free) / MAXMB, 2) * 100 || '%' 最大空间使用率
FROM (SELECT tablespace_name, ROUND(SUM(bytes) / (1024 * 1024)) free
FROM DBA_FREE_SPACE
GROUP BY tablespace_name) a,
(SELECT tablespace_name,
ROUND(SUM(bytes) / (1024 * 1024)) total,
ROUND(sum(case
when MAXBYTES <> 0 then
MAXBYTES
else
MAXBYTES + BYTES
end) / (1024 * 1024)) maxmb
FROM DBA_DATA_FILES
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name
order by ROUND((total - free) / MAXMB, 2) * 100 desc;
SELECT A.TABLESPACE_NAME,
A.BYTES / 1024 / 1024 "Sum MB",(A.BYTES - B.BYTES) / 1024 / 1024 "used MB",
B.BYTES / 1024 / 1024 "free MB",
ROUND(((A.BYTES - B.BYTES) / A.BYTES) * 100, 2) "percent_used"
FROM (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) A,
(SELECT TABLESPACE_NAME, SUM(BYTES) BYTES, MAX(BYTES) LARGEST
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME
ORDER BY ((A.BYTES - B.BYTES) / A.BYTES) DESC;