首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 入門心得 (2):架構核心觀念全圖解——物理/邏輯結構、記憶體、背景進程與 SCN

     編輯:Oracle 資料庫基礎

Oracle 體系龐大,初學者易迷失。建立完整架構認知是高效學習的關鍵。本文條理化整理 Oracle 核心架構六大面向。

1. 物理結構 (檔案層面)

  • 控制檔: 維護資料庫完整性的關鍵資訊 (資料檔/Redo Log 路徑、檢查點 SCN 等),至少 1 個,建議多路徑多工。
  • 資料檔: 實際儲存使用者資料 (表、索引等)。
  • 線上重做日誌檔: 記錄所有資料變更,供故障恢復,至少 2 組多工。
  • 參數檔: 定義 Instance 特性 (SGA 大小、進程數等),SPFILE (二進位) 或 PFILE (文字)。
  • 歸檔日誌檔: 線上 Redo Log 滿後的離線副本,媒體恢復關鍵。
  • 密碼檔: 驗證具備 SYSDBA/SYSOPER 權限的使用者。

2. 邏輯結構 (儲存層次)

  • 表空間: 邏輯儲存單位,由一或多個資料檔組成。
  • 段: 物件在表空間佔用的空間 (表段、索引段、回滾段、暫存段)。
  • 區塊: 為段一次性分配的連續空間單位 (由多個 Block 組成)。
  • 區塊: Oracle 最小 I/O 儲存單位,建庫時指定 (512~8192 bytes),後續不可變。

層次關係:Tablespace → Segment → Extent → Block

3. 記憶體架構

  • SGA (System Global Area): 所有 Server/Background 進程共享記憶體區,含共用池、資料庫緩衝區、Redo Log Buffer、Large Pool 等。實體記憶體不足時會溢寫至虛擬記憶體 (影響效能)。
  • PGA (Program Global Area): 單一進程專用記憶體 (排序區、雜湊區、游標狀態等),進程建立時分配、終止時回收,不共享。

4. 背景進程

進程職責
DBWn (Database Writer)將緩衝區髒塊寫入資料檔
LGWR (Log Writer)將 Redo Log Buffer 寫入線上 Redo Log 檔
SMON (System Monitor)啟動時執行實例恢復、整理暫存段、合併自由空間
PMON (Process Monitor)清理失敗進程資源 (鎖、暫存段、進程槽位)
CKPT (Checkpoint)定期更新控制檔/資料檔檢查點資訊,加速恢復
ARCn (Archiver)ARHIVELOG 模式下將滿的 Redo Log 群歸檔
Server Process服務用戶進程,解析/執行 SQL、回傳結果
User Process客戶端進程,傳送 SQL、接收結果

5. Oracle Instance (實例)

Instance = SGA 記憶體結構 + 背景進程群。一個 Instance 一次只能掛載/開啟一個 Database。實例啟動流程:NOMOUNT → MOUNT → OPEN。

6. SCN (System Change Number)

系統內部維護的單調遞增序號。每次 Commit、Checkpoint、Log Switch 皆推進 SCN。SCN 是資料庫一致性、恢復排序、分散式交易同步的核心時鐘。

學習建議

先建立「點→線→網→面」的知識圖譜:從單一元件 (點) 理解職責,串聯關聯流程 (線),構建完整架構圖 (網),最終達到整體把控 (面)。遇到問題優先查官方文件、Metalink、AskTom,養成自主鑽研習慣。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved