本節演示通過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.恢復控制文件並進入到加載狀態
啟動 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: ====
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命令重建密碼文件等等,那就不在本節的討論范圍了。
呵呵,另外,表忘了重建臨時表空間,以及馬上進行全備份。