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

Oracle 歸檔日志資料庫恢復完整操作手冊

     編輯:Oracle 資料庫基礎

Oracle 歸檔日志資料庫恢復完整操作手冊

歸檔模式下的資料庫恢復分為完全恢復(無資料遺失)與不完全恢復(時間點恢復,需 RESETLOGS)。本文詳細記錄 SVRMGRL/SQL*Plus 命令流程、三種不完全恢復模式與歸檔模式啟用步驟。

前置條件確認

  • 資料庫運行於 ARCHIVELOG 模式
  • 備份策略就緒:控制檔、資料檔、歸檔日志、參數檔
  • 確認線上 Redo Log 狀態:完整 → 完全恢復;遺損/損壞 → 不完全恢復

一、完全恢復

適用:所有線上 Redo Log 可用,將資料庫恢復至故障時刻。


$ svrmgrl
SVRMGR> CONNECT INTERNAL
SVRMGR> STARTUP MOUNT;
SVRMGR> RECOVER DATABASE;
-- 提示歸檔日志路徑,輸入 AUTO 或手動指定
SVRMGR> ALTER DATABASE OPEN;

二、不完全恢復

警告:執行前**必須**做完整冷備份。RESETLOGS 會重置線上日志,舊日志失效,恢復失敗將導致資料庫無法開啟。

1. 基於 SCN 恢復


-- 1. 查詢最後有效歸檔日志 SCN
SELECT first_change# FROM v$log_history WHERE sequence# = 387;  -- 387 為遺失日志序號

-- 2. 恢復流程
SVRMGR> CONNECT INTERNAL
SVRMGR> STARTUP MOUNT;
SVRMGR> RECOVER DATABASE UNTIL CHANGE 9999;  -- 9999 為上一步查得 SCN
-- 提示日志時輸入 AUTO,遇到序號 387 自動停止
SVRMGR> ALTER DATABASE OPEN RESETLOGS;

2. 基於 CANCEL 恢復


SVRMGR> CONNECT INTERNAL
SVRMGR> STARTUP MOUNT;
SVRMGR> RECOVER DATABASE UNTIL CANCEL;
-- 逐個應用歸檔日志,至序號 387 時輸入 CANCEL
SVRMGR> ALTER DATABASE OPEN RESETLOGS;

3. 基於時間恢復


-- 1. 查詢目標時間點
SELECT time FROM v$log_history WHERE sequence# = 387;
-- 結果例:2002-06-23 14:42:04

-- 2. 恢復流程
SVRMGR> CONNECT INTERNAL
SVRMGR> STARTUP MOUNT;
SVRMGR> RECOVER DATABASE UNTIL TIME '2002/06/23 14:42:00';
-- 輸入 AUTO 自動應用至指定時間停止
SVRMGR> ALTER DATABASE OPEN RESETLOGS;

時間格式:'YYYY/MM/DD HH24:MI:SS',單引號括起。

三、啟用歸檔模式


-- 1. 編輯 init.ora / spfile
log_archive_start = true
log_archive_dest_1 = 'LOCATION=/u01/app/oracle/arch'
log_archive_format = '%t_%s_%r.arc'

-- 2. 關閉資料庫
SVRMGR> CONNECT INTERNAL
SVRMGR> SHUTDOWN NORMAL;

-- 3. 啟動至 MOUNT
SVRMGR> STARTUP MOUNT;

-- 4. 切換歸檔模式
SVRMGR> ALTER DATABASE ARCHIVELOG;

-- 5. 開啟資料庫
SVRMGR> ALTER DATABASE OPEN;

現代化工具替代

  • RMAN:`RESTORE DATABASE; RECOVER DATABASE;` 自動化完全/不完全恢復
  • Data Guard:實時備援,故障切換秒級完成
  • Flashback Database:邏輯錯誤秒級倒退,無需傳統恢復
  • DBA Studio / EM:圖形化恢復精靈

關鍵決策樹

  1. 線上 Redo Log 完整? → 是 → 完全恢復
  2. 否 → 有完整冷備份? → 否 → 停止,先備份
  3. 是 → 知道目標 SCN/時間/序號? → 選擇對應不完全恢復模式
  4. 執行 RECOVER ... UNTIL ...
  5. ALTER DATABASE OPEN RESETLOGS
  6. 立即執行完整熱備份(新基線)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved