程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 一步一步學RMAN第十篇 實戰rman恢復(2)恢復到異機

一步一步學RMAN第十篇 實戰rman恢復(2)恢復到異機

編輯:關於SqlServer
從業的時間長了,俺感覺現在的技術圈子水也混啊,一個個在岸邊上都是十八般武藝,下了水才知道他是不是真的會游。俺這一槍可能會打著不少人,不過對俺自己是個警示基礎一定要抓落,技術一定要過硬,不明確的一定要做測試

  本節演示通過rman創建備份機(由於俺只有一台機器,俺只能在這台機器上模擬,趕緊把你腦袋裡那堆污七八糟的東西清除清除,一定要有一個清醒的大腦,要不你一定會看暈的。),參考網址如下:

http://download-west.Oracle.com/docs/cd/B19306_01/backup.102/b14191/rcmrecov002.htm#sthref727

http://download-west.Oracle.com/docs/cd/B19306_01/backup.102/b14192/recov003.htm#BRBSC50002

初始設定:

假設兩台服務器a和b(雖然我這兒只有一台,您就把它假裝是兩台吧),服務器A中運行的庫sid為mydb,現在將它復制一份到服務器b

准備工作:

1、記錄下源數據庫的DBID,DBID的獲取方式上節講過的。

2、將源數據庫的初始化參數文件,拷貝到目標服務器上。

3、確認備份(含控制文件,數據文件,歸檔文件)有效,並已拷貝至目標服務器(沒歸檔應該也可以,只要能確認數據文件和控制文件是一致備份。)

步驟:

1.首先創建源庫的全庫備份,(由於只有一台機器,所以備份完之後,通過dbca刪除源庫,正式情況下務必要等備份庫完全建立並正常運行之後才能決定是否要刪除源庫啊)。前面講了太多的備份,這裡就不列詳細的操作步驟了。本例中我創建了一個新庫,並在庫中建了一個tmp表,插入了4條記錄。

2.在目標服務器配置Oracle_sid。

C:\Documents and Settings\Administrator>oradim -new -sid mydb

添加一個名為mydb的sid,由於是異機恢復,sid要與源庫相同。

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命令重建密碼文件等等,那就不在本節的討論范圍了。

呵呵,另外,表忘了重建臨時表空間,以及馬上進行全備份。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved