表空間是 Oracle 儲存管理的邏輯單元,其使用率直接關係資料庫能否正常寫入。本文彙整多維度的表空間監控查詢,涵蓋剩餘空間、使用率統計、物件級大小分析,並補充資料庫版本、建立日期、歸檔模式等基礎資訊查詢,助您建立完整的容量管理視野。
SELECT SUM(bytes)/(1024*1024) AS free_space_mb,
tablespace_name
FROM dba_free_space
GROUP BY tablespace_name;
透過 SYS.SM$TS_AVAIL、SYS.SM$TS_USED、SYS.SM$TS_FREE 三個內部視圖聯結:
SELECT A.tablespace_name,
A.bytes AS total_bytes,
B.bytes AS used_bytes,
C.bytes AS free_bytes,
ROUND((B.bytes*100)/A.bytes, 2) AS pct_used,
ROUND((C.bytes*100)/A.bytes, 2) AS pct_free
FROM sys.sm$ts_avail A,
sys.sm$ts_used B,
sys.sm$ts_free C
WHERE A.tablespace_name = B.tablespace_name
AND A.tablespace_name = C.tablespace_name;
說明:此查詢需 DBA 權限,且依賴內部統計視圖,準確度較高,適合納入定期巡檢報表。
SELECT owner, object_type, status, COUNT(*) AS cnt
FROM all_objects
GROUP BY owner, object_type, status;
SELECT version
FROM product_component_version
WHERE SUBSTR(product, 1, 6) = 'Oracle';
SELECT created, log_mode
FROM v$database;
針對特定表空間與表名模式的索引大小排序:
SELECT a.segment_name,
a.tablespace_name,
b.table_name,
a.bytes/1024/1024 AS mbytes,
a.blocks
FROM user_segments a, user_indexes b
WHERE a.segment_name = b.index_name
AND a.segment_type = 'INDEX'
AND a.tablespace_name = 'APPINDEX'
AND b.table_name LIKE '%PREP%'
ORDER BY table_name, a.bytes/1024/1024 DESC;
AUTOEXTEND ON) 並設定 MAXSIZE 避免無限增長。PURGE DBA_RECYCLEBIN 釋放回收站空間。DBA_SEGMENTS 與 DBA_EXTENTS 分析碎片程度,評估是否需重組。