Oracle 資料庫伺服器 SWAP 空間建議設定值:官方標準、計算公式與實務調整
SWAP 作用回顧
實體記憶體不足時,OS 將非活躍記憶體頁面交換至 SWAP 分區/檔案,騰出實體記憶體給當前程序。SWAP 必須存在,但盡量避免使用 — 發生交換即意味著效能下降。
Oracle 官方建議 (12c R1 文件標準)
| 實體記憶體 (RAM) | 建議 SWAP 大小 |
| ≤ 2 GB | 2 × RAM |
| 2 GB ~ 8 GB | 1.5 × RAM |
| 8 GB ~ 32 GB | 1 × RAM |
| > 32 GB | 32 GB (上限) |
註:11g/12c/19c 文件一致;若啟用 HugePages,可適度減少 SWAP。
實務調整原則
- 寧大勿小:SWAP 不足導致 OOM Killer 終止資料庫進程 (ORA-00445、PMON 異常終止),後果災難性;多佔幾十 GB 磁碟可接受。
- 監控實際使用:
sar -W 5、vmstat 5 (si/so 欄) 觀察交換頻率;長期 si/so > 0 需加記憶體或調優 SGA/PGA。
- 避免 SWAP 檔案碎片:使用獨立分區 (LVM/RAW) 而非檔案系統檔案;SSD/NVMe 可接受檔案。
- NUMA 架構:每節點建議配置對應 SWAP,避免跨節點記憶體交換延遲。
常見誤區
- 「記憶體很大不需要 SWAP」→ 錯誤,核心需要 SWAP 進行頁面回收、休眠支援、記憶體超額配置緩衝。
- 「設定 0 SWAP 強制使用實體記憶體」→ 極度危險,記憶體尖峰瞬間觸發 OOM。
- 「SWAP 越大越好」→ 過大可能掩蓋記憶體不足問題,延遲發現效能惡化;設定上限 32 GB 即可。
驗證設定