Oracle 表空間自由空間可能呈現離散分布,影響大物件建立。本文示範如何查詢連續自由區塊、計算真實連續大小,並使用 ALTER TABLESPACE ... COALESCE 合併相鄰碎片。
SELECT * FROM dba_free_space
WHERE tablespace_name = 'SFSJTS'
ORDER BY block_id;
對每筆記錄:起始 BLOCK_ID + BLOCKS = 下一筆 BLOCK_ID 即為連續。
範例:第 2 筆 133719 + 126 = 133845 等於第 3 筆 BLOCK_ID,代表從 133719 起有 256 個連續區塊。
ALTER TABLESPACE tablespace_name COALESCE;
等同背景程序 SMON 週期性合併動作,但可由 DBA 主動觸發,立即獲得更大連續空間,避免「ORA-01652: unable to extend temp segment」錯誤。