資料庫災難恢復 (DR) 是 DBA 最高階的核心能力。本文系統闡述 Oracle 備份分類、Redo Log 核心角色、完全/不完全恢復原理、三種運行狀態、五大故障分類與針對控制檔、Redo Log、資料檔 (含 System/Undo/一般) 的分級恢復操作手冊。
| 狀態 | 活動 | 可用性 |
|---|---|---|
| NOMOUNT | 讀取 SPFILE/PFILE → 啟動 Instance (SGA、背景進程) | 僅 DBA 維護 |
| MOUNT | 讀取 Control File → 掛載資料庫結構 | DBA 維護、備份控制檔、恢復控制檔 |
| OPEN | 檢查 SCN 一致性 → 前滾 Redo → 回滾未提交交易 → 開放用戶存取 | 正常業務服務 |
SHUTDOWN NORMAL/IMMEDIATE → OS 複製所有 Data/Control/Redo/Parameter Files。優點:一致性最佳、無需恢復直接掛載。缺點:需停機。BEGIN BACKUP 模式 → OS 複製 Data Files → END BACKUP。配合 Archived Redo Logs 實現時間點恢復 (PITR)。EXPDP/IMPDP 匯出/匯入物件/Schema/全庫。支援完全/累加/增量。注意:非 RESTRICTED 模式下一致性無保證,適合輔助備份、跨版本/平台遷移。恢復 = Roll Forward (Cache Recovery) + Roll Back (Transaction Recovery)
鐵律:只能在「較舊備份 + Redo」上前滾,絕不能 在較新資料上反向回滾到過去時間點。
| 故障類型 | 特徵 | 恢復責任 |
|---|---|---|
| SQL 陳述式失敗 | 邏輯錯誤、權限不足、空間不足 | Oracle 自動回滾該陳述式,用戶重試 |
| 用戶程序失敗 | Session 異常中斷 (網路斷線、Client Crash) | PMON 自動清理鎖、回滾未提交交易、釋放資源 |
| 執行個體失敗 | Instance Crash (SHUTDOWN ABORT、OS Crash、電源中斷) | 下次啟動時 SMON 自動 Instance Recovery (前滾+回滾) |
| 用戶操作失誤 | 誤 DROP TABLE、誤 DELETE/UPDATE、誤 TRUNCATE | 需人工介入:Flashback Table/Drop、PITR、TSPITR、LogMiner 產生反向 SQL |
| 媒體故障 | 磁碟損壞、檔案遺失/損毀 (Control File、Redo Log、Data File) | 需人工介入:本文重點討論對象 |
SHUTDOWN → 註釋損壞路徑 → STARTUP → 重建鏡像副本ALTER DATABASE BACKUP CONTROLFILE TO TRACE 腳本 → NOMOUNT → 執行腳本重建 → RECOVER DATABASE USING BACKUP CONTROLFILE → ALTER DATABASE OPEN RESETLOGSCREATE CONTROLFILE (需列出所有 Data/Redo 路徑、MAXLOGFILES/MAXDATAFILES/MAXINSTANCES) → 同上BACKUP CONTROLFILE TO 'path') → 覆蓋 → RECOVER DATABASE USING BACKUP CONTROLFILE → OPEN RESETLOGS| 場景 | 處理步驟 |
|---|---|
| 非當前群組、有多 Member | SHUTDOWN → OS 複製正常 Member 覆蓋損壞檔 → 若路徑不可用 ALTER DATABASE RENAME FILE → STARTUP → 立即冷備份 |
| 非當前群組、單 Member | STARTUP MOUNT → ALTER DATABASE NOARCHIVELOG → ADD LOGFILE MEMBER → DROP LOGFILE MEMBER (損壞者) → ALTER DATABASE ARCHIVELOG → 開啟 → 冷備份 |
| 當前群組、無鏡像、全損 | 資料損失不可避免:SHUTDOWN ABORT → 從最近冷備份還原所有 Data Files → MOUNT → 修正 Redo 路徑 → RECOVER DATABASE UNTIL CANCEL (應用至最後可用 Archived Log) → CANCEL → ALTER DATABASE OPEN RESETLOGS → 立即冷備份 |
| 場景 | 恢復策略 |
|---|---|
| System Tablespace 資料檔 | 必須 MOUNT 狀態:還原檔案 → RECOVER DATABASE/DATAFILE → OPEN。System 檔案離線資料庫無法 OPEN |
| 非 System、無 Undo Segment | 選項 A:MOUNT → RECOVER DATAFILE → OPEN選項 B (業務優先):MOUNT → ALTER DATABASE DATAFILE ... OFFLINE → OPEN (業務存取其餘資料) → RECOVER DATAFILE → ONLINE |
| 非 System、含 Undo Segment | 選項 A:同上 (MOUNT 完整恢復) 選項 B (OPEN 狀態恢復):
|
不影響資料庫開啟 (無 Checkpoint):
ALTER DATABASE TEMPFILE 'path' DROP; → ALTER TABLESPACE temp ADD TEMPFILE 'path' SIZE 100M;
CONFIGURE CONTROLFILE AUTOBACKUP ON、BACKUP DATABASE PLUS ARCHIVELOG、BACKUP VALIDATE 定期驗證備份可用性FLASHBACK DATABASE、FLASHBACK TABLE、FLASHBACK DROP,秒級修復人為誤操作V$DATAGUARD_STATS 監控 Apply Lag、Transport Lag災難恢復的本質是「平時流汗,戰時流血」。建立標準化操作手冊、自動化備份驗證、定期實戰演練,才是確保資料資產安全的唯一鋼鐵防線。