理解 Oracle 邏輯與物理儲存層次,是容量規劃、效能調校與故障排查的基礎。本文從資料檔到區塊逐層剖析,並說明區塊管理模式(本地/字典)與段空間管理(PCTFREE/PCTUSED)關鍵參數。
資料檔 (Datafile)
│
└─ 表空間
│
└─ 段
│
└─ 區
│
└─ 區塊
DB_BLOCK_SIZE 決定。| 模式 | 機制 | 適用場景 |
|---|---|---|
| 字典管理 (Dictionary Managed) | UET$ (Used) / FET$ (Free) 字典表記錄 | 舊版相容,高併發下字典爭用嚴重 |
| 本地管理 (Locally Managed) ★預設 | 位圖 在區塊標記 0/1,無需字典查詢 | 高併發、大型表空間,自動合併相鄰自由區 |
查詢表空間管理模式:
SELECT TABLESPACE_NAME, EXTENT_MANAGEMENT FROM DBA_TABLESPACES;
自動段空間管理 (ASSM):建表空間指定 SEGMENT SPACE MANAGEMENT AUTO,以位圖取代 PCTFREE/PCTUSED,Oracle 10g+ 強烈建議啟用。
SHOW PARAMETER BLOCK_SIZE
-- 或
SELECT VALUE FROM V$PARAMETER WHERE NAME = 'db_block_size';
CREATE TABLESPACE ... EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO。PCTFREE(如 20%)減少列遷移。DBA_FREE_SPACE、DBA_SEGMENTS 掌握碎片與水位。熟悉儲存結構與參數,能從根源上解決空間浪費、列遷移、區塊爭用等經典效能問題。