首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server 用戶自定義資料庫修復完整操作手冊

     編輯:MySQL 資料庫相關知識

一、自動應用 Redo Log 恢復

方式 A:SET AUTORECOVERY

STARTUP MOUNT;
SET AUTORECOVERY ON;
RECOVER DATABASE;
ALTER DATABASE OPEN;

方式 B:RECOVER AUTOMATIC

STARTUP MOUNT;
RECOVER AUTOMATIC DATABASE;
ALTER DATABASE OPEN;

兩種方式均自動尋找並應用線上/歸檔 Redo Log,適用於實例異常關閉後的標準恢復。

二、非歸檔模式介質恢復(冷備份為基礎)

原位置恢復

SHUTDOWN IMMEDIATE;
-- 從冷備份還原所有 datafile + controlfile
STARTUP MOUNT;
RECOVER DATABASE UNTIL CANCEL;
CANCEL;
ALTER DATABASE OPEN RESETLOGS;  -- 重置 Redo Log 序列

新位置恢復

額外步驟:修改 CONTROL_FILES 參數 → ALTER DATABASE RENAME FILE 'old' TO 'new'; 更新控制文件中的路徑 → 同樣 RECOVER ... UNTIL CANCEL → OPEN RESETLOGS。

三、歸檔模式完全介質恢復

關閉狀態恢復

SHUTDOWN ABORT;
-- 還原損壞 datafile(或 CREATE DATAFILE 重建空檔)
STARTUP MOUNT;
ALTER DATABASE RENAME FILE ...;  -- 若路徑變更
ALTER DATABASE DATAFILE ... ONLINE;
RECOVER DATABASE;  -- 或 TABLESPACE / DATAFILE 粒度
ALTER DATABASE OPEN;

開啟狀態恢復(熱備份)

-- 1. 識別離線 datafile
SELECT d.file#, d.name, d.status, h.status
FROM v$datafile d, v$datafile_header h
WHERE d.file# = h.file#;

-- 2. 表空間離線
ALTER TABLESPACE users OFFLINE TEMPORARY;

-- 3. 還原 datafile、必要時 RENAME FILE

-- 4. 恢復並上線
RECOVER TABLESPACE users AUTOMATIC;
ALTER TABLESPACE users ONLINE;

四、歸檔模式不完全恢復(PITR)

三種終止條件

  • 時間點:RECOVER DATABASE UNTIL TIME '2024-01-01:12:00:00'
  • SCN:RECOVER DATABASE UNTIL CHANGE 12345678
  • 手工取消:RECOVER DATABASE UNTIL CANCEL 互動式確認

通用流程

  1. 完全備份(含控制文件、線上 Redo Log)。
  2. 確定目標點,選取目標點前的冷/熱備份集。
  3. 還原控制文件、所有 datafile(目標點後新增的 datafile 不還原)。
  4. STARTUP MOUNT → RECOVER ... UNTIL ...(若用備份控制文件加 USING BACKUP CONTROLFILE)。
  5. ALTER DATABASE OPEN RESETLOGS。
  6. 立即執行完全備份(新基線)。

RESETLOGS 強制場景

  1. 任何不完全恢復後。
  2. 使用備份控制文件恢復時。
  3. 非歸檔模式完全恢復且無線上 Redo Log 備份時。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved