RMAN學習過程之九,實戰rman恢復之異機恢復

初始設定: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命令重建密碼文件等等

相關文章
相關標籤/搜索