[Oracle][rman]利用Rman備份檔實現異機還原

[Oracle][rman]利用Rman備份檔實現異機還原

今年一月底左右被公司派去大陸進行Oracle相關教育訓練,

當時大陸分公司有個需求希望能利用資料庫備份檔案還原到其他Server上,

這裡順便記錄一下。

 

這次我使用比較直覺的方式來處理這Case(我太懶了XD)。

 

前置工作

記錄來源資料庫的DBID

clip_image002

拷貝來源資料庫參數檔案和redo log

create pfile='/home/oracle/backup/initlnxdemo.ora' from spfile;

 

clip_image002[5]

確認備份(含控制檔,資料檔案,歸檔)有效,並已拷貝至目標伺服器

(沒歸檔應該也可以,只要能確認資料檔案和控制檔是一致的備份)

clip_image002[7]

 

開始異機還原

注意事項

1.因為我用偷懶的方法,所以在異機建立新資料庫(SID和相關路徑都要相同)。

由於我都在同一台Server上模擬,所以我會先drop原本DataBase,Drop之前請先確認備份是否完整可用。

 

修改dbid

clip_image002[9]

clip_image002[11]

restore parfile from backup

restore spfile to pfile '/u01/app/oracle/admin/lnxdemo/pfile/init.ora.013201010437' from '/home/oracle/backup/c-3445351136-20100113-00.clt';

clip_image002[13]

startup nomount using new pfile

startup force nomount pfile='/u01/app/oracle/admin/lnxdemo/pfile/init.ora.013201010437';

 clip_image002[15]

copy redo to target and restore control file from backup

Copy redo file

cp redo01.log /home/oracle/oradata/lnxdemo

cp redo02.log /home/oracle/oradata/lnxdemo

cp redo03.log /home/oracle/oradata/lnxdemo

restore controlfile from '/home/oracle/backup/c-3445351136-20100112-01.clt'; 

clip_image002[17]

mount database

clip_image002[19]

restore database(修復資料庫)

clip_image002[21]

clip_image002[23]

recover database;還原資料庫

clip_image002[25]

開啟資料庫

alter database open resetlogs

clip_image002[27]

remount temp tablespace

我用取代的方式來remount temp tablespace

--先建立temp2
create temporary tablespace temp2 tempfile '/home/oracle/oradata/lnxdemo/temp2.dbf' size 10M autoextend off;
--修改資料庫預設temporary tablespace
alter database default temporary tablespace temp2;
--刪除資料庫原有temporary tablespace
drop tablespace temp;
--新建立temp
create temporary tablespace temp tempfile '/home/oracle/oradata/lnxdemo/temp01.dbf' size 100M autoextend on;
--再次修改資料庫預設temporary tablespace
alter database default temporary tablespace temp;
--刪除temp2
drop tablespace temp2;

確認相關Schema是否存在

image

最後重新建立EM即大功告成。