--查看表空间使用率
SELECT a.tablespace_name "表空间名", total "表空间大小", free "表空间剩余大小", (total - free) "表空间使用大小",
total / (1024 * 1024 * 1024) "表空间大小(G)", free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)", round((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;
--查看表空间段大小
SELECT *
FROM (SELECT SEGMENT_NAME,
SEGMENT_TYPE,
SUM(BYTES) / 1024 / 1024 SEGMENT_SIZE
FROM (SELECT T.TABLESPACE_NAME,
T.SEGMENT_NAME,
T.SEGMENT_TYPE,
T.BYTES
FROM USER_SEGMENTS T
WHERE T.TABLESPACE_NAME = 'TABLESPACE_NAME' --输入表空间名称
AND T.SEGMENT_TYPE NOT IN
('INDEX', 'LOBINDEX', 'LOBSEGMENT')
UNION ALL
SELECT T.TABLESPACE_NAME,
UL.TABLE_NAME AS SEGMENT_NAME,
'TABLE' AS SEGMENT_TYPE,
T.BYTES
FROM USER_SEGMENTS T
INNER JOIN USER_LOBS UL
ON T.SEGMENT_NAME = UL.SEGMENT_NAME
WHERE 1 = 1
AND T.SEGMENT_TYPE = 'LOBSEGMENT'
UNION ALL
SELECT T.TABLESPACE_NAME,
UI.TABLE_NAME AS SEGMENT_NAME,
'TABLE' AS SEGMENT_TYPE,
T.BYTES
FROM USER_SEGMENTS T
INNER JOIN USER_INDEXES UI
ON T.SEGMENT_NAME = UI.INDEX_NAME
WHERE 1 = 1
AND T.SEGMENT_TYPE IN ('INDEX', 'LOBINDEX')
AND 1 = 1) T
WHERE 1 = 1
GROUP BY SEGMENT_NAME, SEGMENT_TYPE) T
WHERE 1 = 1
ORDER BY SEGMENT_SIZE DESC;