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

Oracle RMAN 表空間級恢復實戰操作指南

     編輯:Oracle 資料庫基礎

RMAN 表空間恢復適用場景

當特定表空間發生介質故障(資料檔案損壞、遺失、壞軌),而其他表空間正常時,可採用表空間級恢復,僅恢復受影響表空間,大幅縮短 RTO(恢復時間目標)。前提:資料庫運行於 ARCHIVELOG 模式,且有完整備份。

完整操作流程示範

環境:Oracle 10g,目標恢復 SYSTEM 表空間(檔案 1)

步驟 1:檢視備份集確認可用性

$ rman target /
RMAN> LIST BACKUP OF DATAFILE 1;

List of Backup Sets
===================
BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
17      Full    131M       DISK        00:01:50     29-MAR-05
BP Key: 17   Status: AVAILABLE  Compressed: NO  Tag: TAG20050329T065513
Piece Name: /data5/Flash_recovery_area/EYGLE/backupset/2005_03_29/o1_mf_nnndf_TAG20050329T065513_14k2tmx7_.bkp

List of Datafiles in backup set 17
File LV Type Ckp SCN    Ckp Time    Name
---- -- ---- ---------- ----------- ----
1    Full 10605717 29-MAR-05 /opt/oracle/oradata/eygle/system01.dbf
  • 確認 Status = AVAILABLE、備份片段存在、檢查點 SCN/時間符合預期

步驟 2:以 MOUNT 模式啟動資料庫

RMAN> STARTUP MOUNT;

connected to target database (not started)
Oracle instance started
database mounted
Total System Global Area 314572800 bytes
Fixed Size 1301704 bytes
Variable Size 261890872 bytes
Database Buffers 50331648 bytes
Redo Buffers 1048576 bytes
  • MOUNT 模式:控制檔開啟、資料檔關閉,適合恢復作業
  • 若資料庫已 OPEN,需先 SHUTDOWN IMMEDIATE 再 STARTUP MOUNT

步驟 3:恢復資料檔案

RMAN> RESTORE DATAFILE 1;

Starting restore at 30-MAR-05
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=160 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /opt/oracle/oradata/eygle/system01.dbf
channel ORA_DISK_1: restored backup piece 1
piece handle=/data5/Flash_recovery_area/EYGLE/backupset/2005_03_29/o1_mf_nnndf_TAG20050329T065513_14k2tmx7_.bkp tag=TAG20050329T065513
channel ORA_DISK_1: restore complete
Finished restore at 30-MAR-05
  • RMAN 自動從 FRA(快速恢復區)或配置的備份位置尋找備份集
  • 若有多個備份,RMAN 選擇最近的可用完整備份
  • 可指定 UNTIL SCN / UNTIL TIME / UNTIL SEQUENCE 做時間點恢復

步驟 4:恢復表空間(應用 Redo/Archive Log)

RMAN> RECOVER TABLESPACE SYSTEM;

Starting recover at 30-MAR-05
allocated channel: ORA_DISK_1
channel ORA_DISK_1: starting incremental datafile backupset recover
channel ORA_DISK_1: specifying datafile(s) to recover
channel ORA_DISK_1: reading from backup piece ...
... applying archived logs ...
media recovery complete
Finished recover at 30-MAR-05
  • RECOVER TABLESPACE 會自動應用 Archive Log 將資料檔推進到一致性狀態
  • 若缺少 Archive Log,會報錯需手動提供或從備份恢復 Archive Log

步驟 5:上線表空間並開啟資料庫

RMAN> ALTER TABLESPACE SYSTEM ONLINE;
RMAN> ALTER DATABASE OPEN;

進階場景與參數

場景 A:恢復至指定時間點

RUN {
  SET UNTIL TIME "TO_DATE('2024-07-09 14:30:00', 'YYYY-MM-DD HH24:MI:SS')";
  RESTORE TABLESPACE USERS;
  RECOVER TABLESPACE USERS;
}

場景 B:資料檔案遷移至新路徑恢復

RUN {
  SET NEWNAME FOR DATAFILE '/old/path/users01.dbf' TO '/new/path/users01.dbf';
  RESTORE TABLESPACE USERS;
  SWITCH DATAFILE ALL;  -- 更新控制檔新路徑
  RECOVER TABLESPACE USERS;
}

場景 C:缺少 Archive Log 時的不完全恢復

RECOVER TABLESPACE USERS UNTIL CANCEL;
-- 交互式應用 Archive Log,輸入 CANCEL 停止
ALTER DATABASE OPEN RESETLOGS;  -- 必須 RESETLOGS

常用驗證指令

-- 檢查資料檔案狀態
SELECT FILE#, NAME, STATUS, ENABLED, CHECKPOINT_CHANGE# FROM V$DATAFILE;

-- 檢查表空間上線狀態
SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES;

-- 檢查是否有壞塊
SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;

關鍵注意事項

  1. 必須為 ARCHIVELOG 模式:SELECT LOG_MODE FROM V$DATABASE; 必須為 ARCHIVELOG
  2. 備份必須完整且可用:LIST BACKUP 確認 Status=AVAILABLE
  3. FRA 空間充足:恢復過程會產生暫存檔、應用 Archive Log
  4. 非 SYSTEM 表空間可 ONLINE 恢復:系統表空間需 MOUNT 模式
  5. 恢復後必須開啟資料庫驗證:應用測試、檢查壞塊、監控 Alert Log

總結:表空間級恢復核心指令速查

熟練掌握此流程,能在生產故障時冷靜、精準、快速恢復業務,是 DBA 必備核心技能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
階段指令說明
檢視備份LIST BACKUP OF DATAFILE n / TABLESPACE ts_name確認備份可用性
啟動模式STARTUP MOUNT系統表空間必須;其他可選
恢復檔案RESTORE DATAFILE n / TABLESPACE ts_name從備份還原資料檔
應用 RedoRECOVER TABLESPACE ts_name [UNTIL ...]前滾至一致/指定點
上線/開啟ALTER TABLESPACE ts_name ONLINE; ALTER DATABASE OPEN完成恢復