oracle查询所有表空间总大小、使用情况。
SELECT A.TABLESPACE_NAME "tbs_name", A.TOTAL_SPACE "total_space(M)", NVL(B.FREE_SPACE, 0) "free_space(M)", A.TOTAL_SPACE - NVL(B.FREE_SPACE, 0) "use_space(M)", CASE WHEN A.TOTAL_SPACE=0 THEN 0 ELSE trunc(NVL(B.FREE_SPACE, 0) / A.TOTAL_SPACE * 100, 2) END "free%" FROM (SELECT TABLESPACE_NAME, TRUNC(SUM(BYTES)/1024/1024, 2) "TOTAL_SPACE" FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) A, (SELECT TABLESPACE_NAME, TRUNC(SUM(BYTES)/1024/1024, 2) "FREE_SPACE" FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) B WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+) ORDER BY 5;
运行结果如下图: