初始設定:sql
假設兩臺服務器a和b(雖然我這兒只有一臺,您就把它僞裝是兩臺吧),服務器A中運行的庫sid爲mydb,如今將它複製一份到服務器b數據庫
準備工做:服務器
1 、記錄下源數據庫的DBID,DBID的獲取方式上節講過的。oracle
2 、將源數據庫的初始化參數文件,拷貝到目標服務器上。線程
3 、確認備份(含控制文件,數據文件,歸檔文件)有效,並已拷貝至目標服務器(沒歸檔應該也能夠,只要能確認數據文件和控制文件是一致備份。)rest
步驟:日誌
1. 首先建立源庫的全庫備份,(因爲只有一臺機器,因此備份完以後,經過dbca刪除源庫,正式狀況下務必要等備份庫徹底創建並正常運行以後才能決定是否要刪除源庫啊)。 前面講了太多的備份,這裏就不列詳細的操做步驟了。本例中我建立了一個新庫,並在庫中建了一個tmp表,插入了4條記錄。code
2. 在目標服務器配置oracle_sid。get
C:\Documents and Settings\Administrator>oradim -new -sid mydb
添加一個名爲mydb的sid,因爲是異機恢復,sid要與源庫相同。io
3. 鏈接到該sid
C:\Documents and Settings\Administrator> set oracle_sid=mydb C:\Documents and Settings\Administrator>rman target / 恢復管理器: 版本9.2.0.1.0 - Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. 已鏈接到目標數據庫 (未啓動) RMAN> set dbid 2543439098; 正在執行命令: SET DBID RMAN> startup nomount; 啓動失敗: ORA-01078: failure in processing system parameters LRM-00109: N^7(4r?*2NJ}ND<~ ¨F:\ORAHOME1\DATABASE\INITMYDB.ORA¨ 正在嘗試在沒有參數文件的狀況下啓動 Oracle 例程... Oracle 例程已啓動 系統全局區域總計 97589952 字節 Fixed Size 453312 字節 Variable Size 46137344 字節 Database Buffers 50331648 字節 Redo Buffers 667648 字節
4. 先恢復初始化參數文件
RMAN> restore spfile to pfile ¨F:\ORAHOME1\DATABASE\INITMYDB.ORA¨ from ¨d:\backup\mydb\C-2543439098-20070720-02¨; 啓動 restore 於 20-7月 -07 正在使用目標數據庫控制文件替代恢復目錄 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=9 devtype=DISK 通道 ORA_DISK_1: 已找到的自動備份: d:\backup\mydb\C-2543439098-20070720-02 通道 ORA_DISK_1: 從自動備份復原 SPFILE 已完成 完成 restore 於 20-7月 -07
而後使用剛剛建立的參數文件從新啓動到未加載狀態(注意,你最好打開該參數文件,看一下路徑是否都確實存在,或者是否正確。)
RMAN> startup force nomount pfile=¨F:\ORAHOME1\DATABASE\INITMYDB.ORA¨; Oracle 例程已啓動 系統全局區域總計 135338868 字節 Fixed Size 453492 字節 Variable Size 109051904 字節 Database Buffers 25165824 字節 Redo Buffers 667648 字節
5. 恢復控制文件並進入到加載狀態
RMAN> restore controlfile from ¨f:\backup\mydb\C-2543439098-20070720-01¨; 啓動 restore 於 20-7月 -07 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在恢復控制文件 通道 ORA_DISK_1: 恢復完成 正在複製控制文件 輸出文件名=F:\ORAHOME1\ORADATA\MYDB\CONTROL01.CTL 輸出文件名=F:\ORAHOME1\ORADATA\MYDB\CONTROL02.CTL 輸出文件名=F:\ORAHOME1\ORADATA\MYDB\CONTROL03.CTL 完成 restore 於 20-7月 -07 RMAN> alter database mount; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of alter db command at 07/20/2007 17:44:22 ORA-01990: 打開口令文件¨F:\OraHome1\DATABASE\PWDmydb.ORA¨時出錯 ORA-27041: 沒法打開文件 OSD-04002: 沒法打開文件 O/S-Error: (OS 2) 系統找不到指定的文件。
奇怪,我這裏報錯了,但再次執行加載,發現提供已是加載狀態了,報錯不奇怪,奇怪的是報錯了還能進加載,呵呵,不就是缺乏密碼文件嘛,無論它,一下子恢復完了再重建,繼續進行。
RMAN> alter database mount; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of alter db command at 07/20/2007 17:44:51 ORA-01100: 數據庫已安裝
6. 修復數據庫,我這裏是源路徑修復,若是你要恢復的文件地址與源庫地址不一樣的話,須要經過SET NEWNAME FOR DATAFILE命令來爲數據文件從新設定路徑。
RMAN> restore database; 啓動 restore 於 20-7月 -07 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=11 devtype=DISK 通道 ORA_DISK_1: 正在開始恢復數據文件備份集 通道 ORA_DISK_1: 正在指定從備份集恢復的數據文件 正將數據文件00001恢復到F:\ORAHOME1\ORADATA\MYDB\SYSTEM01.DBF 正將數據文件00002恢復到F:\ORAHOME1\ORADATA\MYDB\UNDOTBS01.DBF 正將數據文件00003恢復到F:\ORAHOME1\ORADATA\MYDB\DRSYS01.DBF 正將數據文件00004恢復到F:\ORAHOME1\ORADATA\MYDB\INDX01.DBF 正將數據文件00005恢復到F:\ORAHOME1\ORADATA\MYDB\TOOLS01.DBF 正將數據文件00006恢復到F:\ORAHOME1\ORADATA\MYDB\USERS01.DBF 正將數據文件00007恢復到F:\ORAHOME1\ORADATA\MYDB\XDB01.DBF 通道 ORA_DISK_1: 已恢復備份段 1 段 handle=D:\BACKUP\MYDB\03INAL1I_1_1 tag=TAG20070720T162417 params=NULL 通道 ORA_DISK_1: 恢復完成 完成 restore 於 20-7月 -07
7. 恢復數據庫
RMAN> recover database; 啓動 recover 於 20-7月 -07 使用通道 ORA_DISK_1 正在開始介質的恢復 通道 ORA_DISK_1: 正在啓動到默認目標的存檔日誌恢復 通道 ORA_DISK_1: 正在恢復存檔日誌 存檔日誌線程 =1 序列=10 通道 ORA_DISK_1: 已恢復備份段 1 段 handle=D:\BACKUP\MYDB\04INAL2V_1_1 tag=TAG20070720T162503 params=NULL 通道 ORA_DISK_1: 恢復完成 存檔日誌文件名 =F:\ORAHOME1\ORADATA\MYDB\ARCHIVE\1_10.DBF 線程 =1 序列 =10 沒法找到存檔日誌 存檔日誌線程 =1 序列=11 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 07/20/2007 17:50:36 RMAN-06054: media recovery requesting unknown log: thread 1 scn 143893
報錯了,可是不要緊,並不是嚴重錯誤,只是提醒你恢復到一個未知的scn號。若是要避免這個錯誤,能夠在alter database mount以後,經過set until scn或者set until time命令設置恢復到的scn號或時間。
8. 而後經過open resetlogs方式打開數據庫
RMAN> alter database open resetlogs; 數據庫已打開
呵呵,成功打開,這是個好消息,咱們須要鏈接到數據庫來驗證一下。
C:\Documents and Settings\Administrator>sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on 星期五 7月 20 17:55:24 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> conn system/manager 已鏈接。 SQL> select *from tmp; COL -------------------------------------------------- 11111 22222 33333 44444 SQL>
哈哈,成功啦。剩下的工做就簡單了,你便可以經過dbca配置數據庫,也能夠經過orapwd命令重建密碼文件等等