環境信息:
源庫 | 目標庫 | |
---|---|---|
操作系統 | 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;