兩類日志文件職能分工
| 類型 | 名稱 | 功能 | 生命周期 |
| 聯機日志 | Online Redo Log | 循環記錄所有數據庫變更(DML/DDL/內部操作),保證事務持久性(ACID中的D) | 固定組數/大小,循環覆寫 |
| 歸檔日志 | Archived Redo Log | 聯機日志組切換時的離線副本,構成完整變更歷史鏈 | 持久保留,配合備份策略清理 |
歸檔模式核心差異
-- NOARCHIVELOG:聯機日志切換直接覆寫,無歷史保留
-- 風險:介質故障只能恢復至最後一次冷備份,中間所有變更丟失
-- ARCHIVELOG:聯機日志切換前必須完成歸檔,才能被覆寫
-- 優勢:擁有完整Redo鏈,支援任意時間點恢復(PITR)、熱備份、Data Guard
-- 代價:磁盤空間、歸檔I/O、管理複雜度
日志序列號(Sequence#)與SCN雙重導航
- Sequence#:每次日志切換遞增,標識Redo Log組使用順序,歸檔文件名通常包含序列號。
- SCN (System Change Number):全局遞增時鐘,每次提交賦予唯一SCN,Redo記錄包含起始/結束SCN,恢復時精確定位。
- 恢復命令三選一:
UNTIL SEQUENCE、UNTIL CHANGE (SCN)、UNTIL TIME。
架構圖解
用戶事務
│
▼
Redo Log Buffer (SGA)
│ (LGWR寫入,Commit時強制刷盤)
▼
Online Redo Log Group 1 (Current) ◄── 循環使用 Group 1→2→3→1...
│ (滿/切換)
▼
ARCH進程歸檔 ──────► Archived Redo Log (序列號 100, 101, 102...)
│ │
│ ├─► 本地 FRA / 磁盤
│ └─► 遠程 Standby (Data Guard)
│
▼
檢查點 (CKPT) 更新控制文件/數據文件頭 SCN
關鍵配置要點
- 日志組數與大小:最少2組,生產3-5組;大小使切換間隔15-30分鐘(
V$LOG_HISTORY觀察)。
- 多路鏡像:每組2-3成員,分佈不同磁盤/控制器/存儲陣列(
ALTER DATABASE ADD LOGFILE MEMBER)。
- 歸檔目標:本地FRA + 遠程Standby雙通道,
LOG_ARCHIVE_DEST_1/2分離。
- 補充日志:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA,支援LogMiner/GoldenGate/Streams精確還原UPDATE前值。
鐵律:
• 任何生產庫禁止運行NOARCHIVELOG模式。
• 聯機日志不可手工刪除/移動,僅通過ALTER DATABASE DROP/ADD LOGFILE管理。
• 歸檔日志不可手工刪除,僅通過RMANDELETE ARCHIVELOG配合備份策略清理。
• 定期驗證RESTORE ARCHIVELOG與RECOVER DATABASE演練,確保鏈路完整。