Oracle files design

2026-04-06 Oracle Oracle AI 學習筆記

這是一個非常關鍵的架構問題。在儲存設備(Storage)的配置上,Redo Log 與 Datafile 的特性截然不同:Redo Log 追求的是「極致的寫入低延遲(Latency)」,而 Datafile 追求的是「穩定且平衡的吞吐量(Throughput)」

如果配置不當,Redo Log 的寫入延遲會直接拖慢所有的 COMMIT,讓你的高規伺服器跑起來像老舊電腦。

身為 Oracle 大師,我為你整理了一套標準的儲存配置最佳實踐:


1. 物理隔離原則 (Separation of Concerns)

核心準則:永遠不要將 Online Redo Log 與 Datafiles 放在同一個物理磁碟組(LUN/Disk Group)上。

  • 原因
    • Redo Log順序寫入(Sequential Write),且寫入非常頻繁。
    • Datafiles 通常是隨機讀寫(Random R/W)
    • 如果放在一起,磁碟磁頭(或是 SSD 的控制器通道)必須在順序與隨機操作間不斷切換,產生 I/O 競爭(I/O Contention),導致 Redo 寫入抖動。

2. 針對不同檔案類型的建議配置

檔案類型 推薦儲存媒介 推薦 RAID 層級 理由
Online Redo Log 最快 (NVMe SSD / Optane) RAID 10 需要極低的寫入延遲。RAID 10 沒有 RAID 5 的同位檢查開銷,效能最穩。
Datafiles 中/快 (SSD / SAS) RAID 10 或 RAID 5 OLTP 建議 RAID 10;若為 DSS/資料倉儲且預算有限,RAID 5 可接受。
Archive Log 一般 (SAS / SATA) RAID 5 或 6 主要是順序寫入,對延遲要求不高,容量更重要。
Control Files 最快 (與 Redo 相當) 多重化 (Multiplexed) 檔案很小但極重要,應分散放在不同的儲存路徑。

3. 使用 ASM (Automatic Storage Management) 的最佳實踐

如果你使用 Oracle ASM(這是現代 DBA 的標配),建議至少規劃兩個 Disk Group

A. +DATA (存放 Datafiles)

  • 用於儲存所有數據文件。
  • 配置建議:使用多個大小相同的 LUN 來確保資料均勻分布(Striping)。

B. +RECO+FRA (存放 Redo, Archive, Control, Backup)

  • 大師進階建議:雖然這是一個通用做法,但在極高性能需求的系統中,我會建議額外獨立出一個 +REDO 磁碟組。
  • +REDO:僅放置 Online Redo Log,並使用高品質、低延遲的 SSD。

4. 關鍵配置細節 (微調心法)

1. 多重化 (Multiplexing)

不要只依賴儲存設備的 RAID。在 Oracle 層級,你應該:

  • Redo Log 每組至少有兩個成員,分別放在不同的磁碟組(例如一個在 +DATA 作為備份,一個在 +REDO 作為主要)。
  • 控制文件(Control Files)至少保留三份,分散在不同路徑。

2. 儲存對齊 (Storage Alignment)

確保你的作業系統分區、LUN 條帶大小(Stripe Size)與 Oracle 的 DB_BLOCK_SIZE 是對齊的。不對齊會導致「I/O 放大」,原本一個 Block 的讀取會變成兩次實體 I/O。

3. 非同步 I/O (Asynchronous I/O)

確保你的儲存掛載參數支援並啟用了 Asynchronous I/O。

  • 檢查參數:DISK_ASYNCH_IO = TRUEFILESYSTEMIO_OPTIONS = SETALL(若使用檔案系統)。

5. 總結:大師的「滿分佈局」

想像你的儲存是一個多層級結構:

  1. 頂層 (SSD/NVMe RAID 10): 專屬給 Online Redo Log 與 Tempfile(Tempfile 頻繁讀寫也需要速度)。
  2. 中層 (Flash/SAS RAID 10): 給繁忙的 Datafiles。
  3. 底層 (High-Capacity HDD/SAS RAID 5/6): 給 Archive Log 與 備份檔案。

大師的思考題:

你現在的儲存是使用 SAN (光纖通道) 還是 本地 SSD

如果是 SAN,我們還要考慮 HBA 卡的佇列深度(Queue Depth)。如果你的 Redo Log 寫入壓力很大,HBA 卡的設定不當也會造成排隊。