本文基於 Locally Managed Tablespace (LMT) 環境,透過四個實驗驗證區段管理核心行為。
UNIFORM SIZE 40K,所有區段固定 5 區塊 (40KB)。驗證方式:建立兩表空間、各建一表、手動 ALTER TABLE ... ALLOCATE EXTENT 擴展,查 DBA_SEGMENTS 觀察 EXTENTS、BYTES 變化。實測符合上述規則。
ASSM (Auto Segment Space Management) 下,一個區段至少 5 區塊。
CREATE TABLESPACE test2 ... UNIFORM SIZE 32K; → 報錯 ORA-03249: Uniform size ... should have atleast 5 blocks。
設 UNIFORM SIZE 40K (5 區塊) 成功,建表插入 1 列,DBA_SEGMENTS.BYTES = 40KB。結論:8KB 區塊下,最小表 = 40KB。
表空間含 4 個資料檔案,建表 STORAGE (INITIAL 20M)。查詢 DBA_FREE_SPACE 發現 4 個檔案各自剩餘空間減少約 5MB,證實 Oracle 在多檔案表空間中採用輪循/平均分配策略。
表空間 3 檔案:9MB、19MB、9MB。
插入資料觸發擴展 3MB → 3 檔案各分 1MB。
再建表 INITIAL 5M → 兩個 9MB 檔案已滿,5MB 全從 19MB 檔案分配。
結論:優先平均分配;檔案滿後自動跳過,改從有空間的檔案分配。生產環境建議保持資料檔案大小一致。