當特定表空間發生介質故障(資料檔案損壞、遺失、壞軌),而其他表空間正常時,可採用表空間級恢復,僅恢復受影響表空間,大幅縮短 RTO(恢復時間目標)。前提:資料庫運行於 ARCHIVELOG 模式,且有完整備份。
環境:Oracle 10g,目標恢復 SYSTEM 表空間(檔案 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
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
SHUTDOWN IMMEDIATE 再 STARTUP MOUNTRMAN> 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
UNTIL SCN / UNTIL TIME / UNTIL SEQUENCE 做時間點恢復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 將資料檔推進到一致性狀態RMAN> ALTER TABLESPACE SYSTEM ONLINE;
RMAN> ALTER DATABASE OPEN;
RUN {
SET UNTIL TIME "TO_DATE('2024-07-09 14:30:00', 'YYYY-MM-DD HH24:MI:SS')";
RESTORE TABLESPACE USERS;
RECOVER TABLESPACE USERS;
}
RUN {
SET NEWNAME FOR DATAFILE '/old/path/users01.dbf' TO '/new/path/users01.dbf';
RESTORE TABLESPACE USERS;
SWITCH DATAFILE ALL; -- 更新控制檔新路徑
RECOVER TABLESPACE USERS;
}
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;
SELECT LOG_MODE FROM V$DATABASE; 必須為 ARCHIVELOGLIST BACKUP 確認 Status=AVAILABLE| 階段 | 指令 | 說明 |
|---|---|---|
| 檢視備份 | LIST BACKUP OF DATAFILE n / TABLESPACE ts_name | 確認備份可用性 |
| 啟動模式 | STARTUP MOUNT | 系統表空間必須;其他可選 |
| 恢復檔案 | RESTORE DATAFILE n / TABLESPACE ts_name | 從備份還原資料檔 |
| 應用 Redo | RECOVER TABLESPACE ts_name [UNTIL ...] | 前滾至一致/指定點 |
| 上線/開啟 | ALTER TABLESPACE ts_name ONLINE; ALTER DATABASE OPEN | 完成恢復 |