1. 程式人生 > 其它 >rman 表空間物理檔案丟失的恢復

rman 表空間物理檔案丟失的恢復

  前提是有 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 表:

  依然沒有恢復,原因是什麼

當你看清人們的真相,於是你知道了,你可以忍受孤獨