您好,登錄后才能下訂單哦!
一、 準備工作
1. 環境設定
源庫: IP 192.168.131.100 SID:orcl
目標庫: IP 192.168.131.101 安裝與源庫相同版本數據庫軟件(不創建實例)
2. 準備工作
源庫創建完整備份集(含控制文件、數據文件、歸檔文件)。
為簡單起見,源庫和目標庫端目錄結構保持一致。如果不一致,在恢復過程中則注意修改相關路徑。
二、 實驗實施
1. 主庫進行備份
RMAN> run{
sql 'alter system archive log current';
backup database format '/backup/dbfull_%d_%u_%s.bak' plus archivelog format ' ‘/archivelog/archfull_%d_%u_%s.bak';
backup current controlfile format '/backup/ctl_%d_%T_%s.bak';}
2. 復制源庫 spfile 到目標端相同目錄下
( 1 )源庫進行復制
$ cd $ORACLE_HOME/dbs
$ scp spfileorcl.ora oracle@192.168.131.101:$ORACLE_HOME/dbs
( 2 )目標庫修改 spfile
這一步不是必須的。
如果目標庫與源庫路徑保持一致,則不需要進行任何修改。如果路徑不一致的話,則需要保證以下路徑正確:
n Audit_file_dest : ORACLE 審計輸出的 debug 日志路徑
n Control_files :控制文件路徑
n db_recovery_file_dest : FRA 路徑(如果指定 FRA 的話)
n log_archive_dest_1 :日志歸檔路徑
注: spfile 是二進制文件,不能直接編輯。如果要修改,則需要通過 spfile 創建 pfile, 然后對 pfile 進行修改,再通過 pfile 創建 spfile 。
3. 目標庫啟動 nomount
$ export $ORACLE_SID=orcl
$ sqlplus / as sysdba
SQL> startup nomount
啟動 nomount 狀態需要 spfile 。如果源庫的 spfile 沒有放在 $ORACLE_HOME/dbs 目錄下,則需要執行 :
SQL> startup nomount from spfile=’/url/spfileorcl.ora’;
4. 使用 RMAN 還原 controlfile
$ rman target /
RMAN> restore controlfile from '/backup/ctl_ORCL_20181022_31.bak';
不管有幾個控制文件,都會被恢復到相應路徑下。
5. 開啟數據庫到 mount 狀態
開啟數據庫到 mount 狀態需要讀取 controlfile
SQL> alter database mount;
6. 修復數據庫
在這個環境中,源庫和目標庫的路徑保持一致,因此這里可以直接用原路徑修復。如果目標庫與源庫路徑不同的話,則需要通過 SET NEWNAME FOR DATAFILE 命令來為數據文件重新設定路徑(注意 SET NEWNAME 必須要放在 run 塊中執行)。
RMAN> restore database;
此時,數據文件都已經修復到相應路徑下
7. 恢復數據庫
RMAN> recover database;
archived log thread=1 sequence=13
RMAN-00571: ====================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ====================================================
RMAN-03002: failure of recover command at 10/22/2018 03:39:24
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 13 and starting SCN of 1052433
這里的報錯是正常的,因為我們創建的熱備份是不一致備份,源庫的歸檔過來了,但是 redo 日志沒有隨備份集過來,因此恢復數據庫肯定恢復不到原來的狀態。這個錯誤提示你想要繼續恢復的話還需要線程 1 生成的 sequence13 的 redo log 。如果你要保持一致的話,必須復制源庫的重做日志文件。
此時,數據庫已經恢復完成了
8. 打開數據庫
SQL> alter database open resetlogs;
-------------- end ------------------
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。