
環境資訊:
| 源庫 | 目標庫 | |
|---|---|---|
| 作業系統 | WIN7 | WIN SVR 2012 R2 |
| IP | x.x.x.216 | x.x.x.112 |
| 資料庫版本 | 10.2.0.4.0 - 64bi | 10.2.0.4.0 - 64bi |
| 存盤方式 | 單實體 | 單實體 |
| ORACLE_HOME | D:\oracle\product\10.2.0\db_1 | D:\oracle\product\10.2.0\db_1 |
| ORACLE_SID | ORCL | ORCL |
RMAN恢復思路步驟:
- 初始化資料庫,安裝相同環境;
- 恢復引數檔案;
- 恢復控制檔案;
- 啟動資料庫到MOUNT狀態,利用控制檔案進行資料恢復;
- restore database;
- alter database open ressetlogs;
- 驗證結果
具體恢復步驟:
- 在源庫上登錄RMAN控制臺并且進行切換日志組,觸發檢查點,關閉資料庫,重啟動資料庫至mount模式,
rman target /
sql'alter system switch logfile';
sql'alter system checkpoint';
shutdown immediate;
startup mount;

2. 另起1個命令視窗,登錄sqlplus,查詢DBID并且記錄下該值后關閉該命令視窗,
sqlplus / as sysdba
select dbid from v$database;

- 對源庫進行全備份,并且記錄該備份路徑,
run{
allocate channel d1 type disk;
allocate channel d2 type disk;
backup as compressed backupset database;
release channel d1;
release channel d2;
report obsolete;
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
}

4. 對源庫進行引數檔案、控制檔案的備份,并且記錄該備份路徑,
backup spfile;
backup current controlfile;

5. 在目標系統中安裝相同版本的ORACLE資料庫,并且將DB_HOME與DB_SID設定與源庫中一樣,

6. 安裝完畢后,將上述所備份的全庫備份檔案,引數檔案備份,控制檔案備份拷貝至目標庫中相同的系統路徑中
7. 在目標庫中D:\oracle\product\10.2.0\db_1\database新建一個空白檔案,檔案名稱為FAKESPFILEORCL.ORA,并且將下方內容復制進檔案中
db_name=ORCL
java_pool_size=4194304
large_pool_size=4194304
shared_pool_size=96468992
- 如果目標庫中未shutdown則先shutdown,并且以新建的引數檔案進行nomount啟動資料庫
startup pfile='D:\oracle\product\10.2.0\db_1\database\FAKESPFILEORCL.ORA' nomount;

9. 在RMAN下,執行命令 SET DBID=1526707455(源庫DBID);
set dbid=1526707455;

- 在目標庫中進行引數檔案恢復
restore spfile from 'D:\oracle\product\10.2.0\flash_recovery_area\ORCL\BACKUPSET\2019_01_30\O1_MF_NNSNF_TAG20190130T171134_G52TL81Y_.BKP';

11. 關閉資料庫并且以還原后的引數檔案進行nomount啟動
shutdown immediate;
startup nomount;

12. 在目標庫中進行控制檔案恢復
restore controlfile from 'D:\oracle\product\10.2.0\flash_recovery_area\ORCL\BACKUPSET\2019_01_30\O1_MF_NCNNF_TAG20190130T171148_G52TLNS2_.BKP';

13. 關閉資料庫并且以mount啟動
shutdown immediate;
startup mount;
- (可選操作)修改控制檔案中記錄的資料檔案路徑(如果源系統中存在資料庫檔案在F盤而目標系統不存在F盤則有必要進行此步操作),并且啟動恢復
(或者使用windows虛擬盤符)
!請確保目標系統中存在資料檔案存放的路徑檔案夾!
report schema;

run{
set newname for datafile 8 to 'D:\ORACLEDATA1\INFO_LOB';
restore database;
switch datafile all;
}

- 此時資料庫恢復完成
- 如果不需要修改路徑則直接restore database;即可
!請確保目標系統中存在資料檔案存放的路徑檔案夾! - 清除重做日志打開資料庫
alter database open resetlogs;
- 驗證資料庫(驗證源資料庫中的資料是否到目標資料庫中)

- 結束
ps:
- 其他參考地址:
http://blog.51cto.com/jiujian/1165766
http://blog.51cto.com/pimg2005/1920337
https://blog.csdn.net/hzcyhujw/article/details/79421613
https://docs.oracle.com/cd/B19306_01/backup.102/b14192/recov004.htm#sthref588 - win系統遷移linux與上述步驟相似,不過需要在引數檔案還原后重新修改控制檔案的具體路徑
- 監控執行的進度
select sid,SERIAL# ,CONTEXT,SOFAR,TOTALWORK,round(SOFAR/TOTALWORK*100,2) "_%" from v$session_longops where OPNAME like 'RMAN%' and SOFAR<>TOTALWORK and TOTALWORK<>0;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/21734.html
標籤:Oracle
