一、物理結構
| 檔案類型 | 用途 | 最小數量 |
| 控制檔 | 資料庫名、表空間/資料檔/Redo 位置、檢查點、SCN | 1 (建議多路徑多工) |
| 資料檔 | 實際儲存表、索引、Undo 等段資料 | 1 |
| 線上 Redo Log | 記錄所有變更,支援崩潰恢復 | 2 組 (每組多工) |
| 歸檔 Redo Log | Redo Log 封存備份,支援時間點恢復 | 視策略 |
| 參數檔 | SPFILE/PFILE,啟動參數 | 1 |
| 密碼檔 | SYSOPER/SYSDBA 認證 | 選用 |
| 追蹤/警示檔 | 背景進程錯誤、警示記錄 | 自動產生 |
控制檔關鍵資訊
- 資料庫名、建立時間
- 所有資料檔/Redo Log 路徑與狀態
- 當前 Redo Log 序號、檢查點 SCN
- RMAN 備份元資料 (控制檔自動備份)
二、邏輯結構層級
Tablespace (表空間)
└─ Segment (段:Table/Index/Undo/Temp/Lob)
└─ Extent (區段:連續資料區塊)
└─ Block (區塊:最小 I/O 單位,DB_BLOCK_SIZE)
└─ Row (列)
- 表空間:邏輯容器,對應 1~N 個資料檔
- 段:物件儲存空間,類型決定用途
- 區段:空間配置單位,Local Management 位圖追蹤
- 區塊:建庫時固定 (2K/4K/8K/16K/32K),不可變
三、記憶體架構
SGA (System Global Area) - 共享記憶體
| 元件 | 功能 | 關鍵參數 |
| Shared Pool | Library Cache (SQL/PLAN)、Dictionary Cache | SHARED_POOL_SIZE |
| Database Buffer Cache | 資料區塊快取 | DB_CACHE_SIZE |
| Redo Log Buffer | Redo 向量暫存 | LOG_BUFFER |
| Large Pool | RMAN、共享伺服器、平行查詢 | LARGE_POOL_SIZE |
| Java Pool | JVM 物件 | JAVA_POOL_SIZE |
| Streams Pool | Streams/GoldenGate | STREAMS_POOL_SIZE |
| Result Cache | 查詢結果快取 | RESULT_CACHE_MAX_SIZE |
11g+ 支援 MEMORY_TARGET 自動管理 (AMM) 或 SGA_TARGET (ASMM)。
PGA (Program Global Area) - 專用記憶體
- 每個 Server/Background Process 專屬
- 排序區、雜湊區、位圖合併、Session 資訊
- 參數:
PGA_AGGREGATE_TARGET (10g+) 或 SORT_AREA_SIZE (手動)
- 11g+
MEMORY_TARGET 統管 SGA+PGA
四、背景進程
| 進程 | 縮寫 | 核心職責 |
| Database Writer | DBWn | 將髒區塊從 Buffer Cache 寫入資料檔 |
| Log Writer | LGWR | 將 Redo Log Buffer 寫入線上 Redo Log |
| Checkpoint | CKPT | 更新控制檔/資料檔檢查點資訊,觸發 DBWn |
| System Monitor | SMON | 啟動時執行執行個體恢復、整理暫存段、合併自由空間 |
| Process Monitor | PMON | 清理失敗程序資源、釋放鎖、重註冊監聽器 |
| Archiver | ARCn | 將填滿的 Redo Log 歸檔 |
| Recoverer | RECO | 解決分散式交易待決狀態 |
| Manageability Monitor | MMON/MMNL | AWR 快照、閾值告警、統計收集 |
五、SCN (System Change Number)
- 全域邏輯時鐘,單調遞增
- 每次 COMMIT 推進 SCN,標記交易提交順序
- 檢查點記錄當前 SCN 到控制檔/資料檔頭
- 恢復時以 SCN 為基準決定需套用的 Redo 範圍
- 分散式交易透過 SCN 達成全域一致性
- 查詢當前 SCN:
SELECT current_scn FROM v$database;
六、啟動/關閉階段
STARTUP NOMOUNT:讀參數檔 → 啟動 SGA/背景進程 → 執行個體就緒
ALTER DATABASE MOUNT:讀取控制檔 → 掛載資料庫 (關閉狀態)
ALTER DATABASE OPEN:開啟資料檔/Redo Log → 線上可用
關閉模式:NORMAL/TRANSACTIONAL (等待) / IMMEDIATE (回滾中斷) / ABORT (崩潰式,下次啟動需執行個體恢復)。
- 上一篇文章: Oracle 完整性約束條件全攻略:從 CHECK 到外鍵的建立、啟用與效能
- 下一篇文章: Oracle 索引類型選型指南:B-tree、Bitmap、Function-based 與 Domain 索引實戰
Copyright ©
程式碼之家 All Rights Reserved