當段的初始區塊寫滿後,Oracle 會申請下一區塊。由於資料庫不主動合併相鄰自由區塊,而是尋找最大可用區塊,久而久之會形成大量離散、微小的自由空間——即碎片。理想狀態下,單一段的資料應集中於單一區塊,減少指標查找開銷。
PCTINCREASE > 0 的自由區塊,部分碎片無法自動回收。公式:FSFI = 100 × sqrt(MAX_EXTENT / SUM_EXTENTS) × 1 / sqrt(sqrt(COUNT_EXTENTS))
ALTER TABLESPACE <name> DEFAULT STORAGE (PCTINCREASE 1) 讓 SMON 自動合併。ALTER TABLESPACE <name> COALESCE 立即合併相鄰自由區塊。exp user/pwd file=exp.dmp compress=y grants=y indexes=y tables=(t1,t2)
-- 刪除原表 --
imp user/pwd file=exp.dmp commit=y buffer=64000 full=y
注意:COMPRESS=Y 會將 INITIAL 設為所有區塊總和。若表曾大量刪除資料,匯入時可能產生超大初始區塊,甚至超過單一資料檔上限導致失敗。建議先評估實際資料量再決定是否啟用。
定期 SHUTDOWN DATABASE 可清理 SGA/PGA 記憶體碎片,維持例程效能。