RMAN備份恢復之控制檔案的恢復(三)

yangtingkun發表於2007-07-29

控制檔案對於資料庫來說至關重要,在資料庫的恢復過程中,首先需要恢復初始化引數檔案,然後就是控制檔案的恢復。

RMAN採用CATALOG方式還是NOCATALOG方式,以及是否啟用了AUTOBACKUP,決定了控制檔案的恢復方法。

RMAN備份恢復之控制檔案的恢復(一):http://yangtingkun.itpub.net/post/468/305766

RMAN備份恢復之控制檔案的恢復(二):http://yangtingkun.itpub.net/post/468/312822

這篇文章介紹NOCATALOG方式下且沒有自動備份的情況下,利用普通備份來恢復控制檔案。


如果沒有控制檔案的自動備份,那麼恢復控制檔案就要麻煩得多。不過如果可以確定控制檔案的確切備份集,那麼控制檔案也是可以恢復的。

如果無法確定控制檔案所在地備份集的話,可以根據備份集的生成時間,從後向前依次嘗試。

SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host move f:oracleoradata est1control01.ctl f:oracleoradata est1control01.bak

SQL> host move f:oracleoradata est1control02.ctl f:oracleoradata est1control02.bak

SQL> host move f:oracleoradata est1control03.ctl f:oracleoradata est1control03.bak

關閉資料庫並刪除控制檔案後,下面嘗試透過RMAN恢復控制檔案:

F:>rman target /@test1

恢復管理器: 版本9.2.0.4.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

已連線到目標資料庫 (未啟動)

RMAN> startup nomount

Oracle 例程已啟動

系統全域性區域總計 110173900 位元組

Fixed Size 454348 位元組
Variable Size 83886080 位元組
Database Buffers 25165824 位元組
Redo Buffers 667648 位元組

RMAN> restore controlfile from 'F:oracleackupUIO2TN0_1_1';

啟動 restore 於 29-7月 -07

正在使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
通道 ORA_DISK_1: 正在恢復控制檔案
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 07/29/2007 22:36:13
ORA-19615: 有些檔案在備份集中未找到
ORA-19613: 在備份集中未找到資料檔案 0

RMAN> restore controlfile from 'F:oracleackupTINM3UD_1_1';

啟動 restore 於 29-7月 -07

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在恢復控制檔案
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 07/29/2007 22:36:30
ORA-19626: 備份集型別為archived log - 無法在此對話中處理

RMAN> restore controlfile from 'F:oracleoracle920databaseSINJCDC_1_1';

啟動 restore 於 29-7月 -07

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在恢復控制檔案
通道 ORA_DISK_1: 恢復完成
正在複製控制檔案
輸出檔名=F:ORACLEORADATATEST1CONTROL01.CTL
輸出檔名=F:ORACLEORADATATEST1CONTROL02.CTL
輸出檔名=F:ORACLEORADATATEST1CONTROL03.CTL
完成 restore 於 29-7月 -07

找到正確的備份集並恢復控制檔案後,就可以嘗試恢復資料庫並開啟了。

RMAN> alter database mount;

資料庫已載入

RMAN> recover database;

啟動 recover 於 29-7月 -07
使用通道 ORA_DISK_1

正在開始介質的恢復

存檔日誌執行緒 1 序列 2 已作為檔案 F:ORACLEORADATATEST1REDO01.LOG 存在於磁碟上

存檔日誌執行緒 1 序列 3 已作為檔案 F:ORACLEORADATATEST1REDO02.LOG 存在於磁碟上

存檔日誌執行緒 1 序列 4 已作為檔案 F:ORACLEORADATATEST1REDO03.LOG 存在於磁碟上

無法找到存檔日誌
存檔日誌執行緒 =1 序列=0
Oracle 錯誤:
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 將出現如下錯誤
ORA-01152: 檔案 1 沒有從完備的舊備份中恢復
ORA-01110: 資料檔案 1: 'F:ORACLEORADATATEST1SYSTEM01.DBF'

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 07/29/2007 22:40:20
RMAN-06054: media recovery requesting unknown log: thread 1 scn 58954797

RMAN> catalog archivelog 'F:oracleoradata est1ARCHIVELOGARC00001.001';

已編目的存檔日誌
存檔日誌檔名 =F:ORACLEORADATATEST1ARCHIVELOGARC00001.001 記錄 ID=42 時間
戳 =629246535

RMAN> recover database;

啟動 recover 於 29-7月 -07
使用通道 ORA_DISK_1

正在開始介質的恢復

存檔日誌執行緒 1 序列 1 已作為檔案 F:ORACLEORADATATEST1ARCHIVELOGARC00001.001
存在於磁碟上
存檔日誌執行緒 1 序列 2 已作為檔案 F:ORACLEORADATATEST1REDO01.LOG 存在於磁碟上

存檔日誌執行緒 1 序列 3 已作為檔案 F:ORACLEORADATATEST1REDO02.LOG 存在於磁碟上

存檔日誌執行緒 1 序列 4 已作為檔案 F:ORACLEORADATATEST1REDO03.LOG 存在於磁碟上

存檔日誌檔名 =F:ORACLEORADATATEST1ARCHIVELOGARC00001.001 執行緒 =1 序列 =0
存檔日誌檔名 =F:ORACLEORADATATEST1REDO01.LOG 執行緒 =1 序列 =2
存檔日誌檔名 =F:ORACLEORADATATEST1REDO02.LOG 執行緒 =1 序列 =3
存檔日誌檔名 =F:ORACLEORADATATEST1REDO03.LOG 執行緒 =1 序列 =4
完成介質的恢復
完成 recover 於 29-7月 -07

RMAN> alter database open resetlogs;

資料庫已開啟

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69368/,如需轉載,請註明出處,否則將追究法律責任。

相關文章