環境信息: ||源庫|目標庫| |: |: |: | |操作系統|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: ...
環境信息:
源庫 | 目標庫 | |
---|---|---|
操作系統 | 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;
- 另起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;
}
- 對源庫進行參數文件、控制文件的備份,並且記錄該備份路徑。
backup spfile;
backup current controlfile;
- 在目標系統中安裝相同版本的ORACLE資料庫,並且將DB_HOME與DB_SID設置與源庫中一樣。
- 安裝完畢後,將上述所備份的全庫備份文件,參數文件備份,控制文件備份拷貝至目標庫中相同的系統路徑中
- 在目標庫中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;
- 在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';
- 關閉資料庫並且以還原後的參數文件進行nomount啟動
shutdown immediate;
startup nomount;
- 在目標庫中進行控制文件恢復
restore controlfile from 'D:\oracle\product\10.2.0\flash_recovery_area\ORCL\BACKUPSET\2019_01_30\O1_MF_NCNNF_TAG20190130T171148_G52TLNS2_.BKP';
- 關閉資料庫並且以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;