rman 表空間物理檔案丟失的恢復
阿新 • • 發佈:2021-12-20
前提是有 rman 備份。
rman 全備 run 塊:
run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; backup as compressed backupset Database Format '/u01/backup/rman/20211220/bak_all_db_%s_%p_%T' filesperset=4; #歸檔當前的重做日誌(redolog)檔案 sql 'alter system archive log current'; #備份歸檔日誌backup archivelog all format '/u01/backup/rman/20211220/bak_arch_%s_%p_%T' delete input; #備份控制檔案 backup current controlfile format '/u01/backup/rman/20211220/bak_ctl_%s_%p_%T'; #備份 spfile backup spfile format '/u01/backup/rman/20211220/bak_sp_%s_%p_%T'; crosscheck backup; #檢查備份是否存在於備份介質 crosscheck archivelog all; #刪除過期備份delete noprompt obsolete; #刪除不在備份介質的備份記錄 delete noprompt expired backup; delete noprompt backup of database completed before 'sysdate -15'; delete noprompt backup of archivelog all completed before 'sysdate -5'; delete noprompt expired archivelog all; #釋放通道 release channel c1; release channel c2; release channel c3; }
rman 恢復 run 塊:
run{restore database;recover database;}
rman 恢復到某時間點 run 塊:
run{set until time "to_date('2021-12-20 11:32:01','yyyy-mm-dd hh24:mi:ss')";restore database;recover database;}
測試情形 1 ,資料檔案 (HCP.dbf) 被物理刪除
可以看到,靶場環境,HCP 使用者下有一張 test 表:
物理刪除資料檔案:
整個資料庫已經無法 shutdown immediate:
shutdown abort;並啟動到 mount 進行資料恢復:
open 資料庫,發現 test 表已恢復:
檢視物理檔案,發現表空間物理檔案也已恢復:
測試情形 2,資料檔案 (HCP.dbf) 被手工誤刪除刪除
在 test 表中新插入 666 後,進行全備:
手工刪除表空間及物理檔案,test 表已不存在:
重啟資料庫到 mount,進行 rman 恢復:
open 資料庫,查詢 test 表,發現依然不存在:
基於時間點進行恢復:
open 資料庫,檢視 test 表:
依然沒有恢復,原因是什麼
當你看清人們的真相,於是你知道了,你可以忍受孤獨