使用rman恢復控制檔案

楊奇龍發表於2010-07-22
沒有使用catalog的情況:
控制檔案自動備份將控制檔案和spfile放在一個檔案裡進行備份,預設位置為?/dbs(windows在?/database)。
這個位置可以使用如下語句進行更改:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:\oracle\rman\ctl_%F.ctl';
恢復預設值:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;
在進行控制檔案或spfile恢復的時候需要注意,因為備份資訊和rman的配置資訊都存放在控制檔案裡,所以在控制檔案丟失的情況下,
連線rman後,rman會從它的一個預設位置尋找控制檔案和spfile的備份,如果存在的話就可以進行恢復,否則報錯。恢復時使用
如下語句:
restore controlfile from autobackup;
restore spfile from autobackup;
如果備份檔案沒有放在預設位置,需要指定備份檔案的位置,恢復時要加上from子句
restore controlfile from 'D:\oracle\product\10.2.0\db_1\database\C-1904898126-20061123-04';
restore spfile from 'D:\oracle\product\10.2.0\db_1\database\C-1904898126-20061123-04';
另外,資料庫如果是以spfile啟動的話,即使不小心被刪了,也是不可以將它恢復到預設位置的,要使用to子句恢復到其他位置。
restore spfile to 'd:\oracle\rman\spfiletest.ora' from autobackup;
然後再copy到預設位置下進行恢復。

下面是個完整的恢復過程,刪除所有的控制檔案和資料檔案以及spfile
D:\>rman target /
恢復管理器: Release 10.2.0.1.0 - Production on 星期四 11月 23 11:06:21 2006
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
連線到目標資料庫: test (未裝載)

RMAN> set dbid 1904898126
正在執行命令: SET DBID

RMAN> restore spfile from autobackup;
啟動 restore 於 23-11月-06
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=324 devtype=DISK
恢復區域目標: D:\oracle\product\10.2.0\flash_recovery_area
用於搜尋的資料庫名 (或資料庫的唯一名稱): TEST
通道 ORA_DISK_1: 在恢復區域中未找到自動備份
通道 ORA_DISK_1: 尋找以下日期的自動備份: 20061123
通道 ORA_DISK_1: 已找到的自動備份: c-1904898126-20061123-04
通道 ORA_DISK_1: 從自動備份復原 SPFILE 已完成
完成 restore 於 23-11月-06

RMAN> restore controlfile from autobackup;
啟動 restore 於 23-11月-06
使用通道 ORA_DISK_1
恢復區域目標: D:\oracle\product\10.2.0\flash_recovery_area
用於搜尋的資料庫名 (或資料庫的唯一名稱): TEST
通道 ORA_DISK_1: 在恢復區域中未找到自動備份
通道 ORA_DISK_1: 尋找以下日期的自動備份: 20061123
通道 ORA_DISK_1: 已找到的自動備份: c-1904898126-20061123-04
通道 ORA_DISK_1: 從自動備份復原控制檔案已完成
輸出檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\CONTROL01.CTL
輸出檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\CONTROL02.CTL
輸出檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\CONTROL03.CTL
完成 restore 於 23-11月-06

RMAN> alter database mount;
資料庫已裝載
釋放的通道: ORA_DISK_1

RMAN> restore database;
啟動 restore 於 23-11月-06
啟動 implicit crosscheck backup 於 23-11月-06
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=321 devtype=DISK
已交叉檢驗的 21 物件
完成 implicit crosscheck backup 於 23-11月-06
啟動 implicit crosscheck copy 於 23-11月-06
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 於 23-11月-06
搜尋恢復區域中的所有檔案
正在編制檔案目錄...
沒有為檔案編制目錄
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF
正將資料檔案00002恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF
正將資料檔案00003恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF
正將資料檔案00004恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF
正將資料檔案00005恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\TEST01.DBF
通道 ORA_DISK_1: 正在讀取備份段 D:\ORACLE\RMAN\FULL_22I340JH_1_1.DBF
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = D:\ORACLE\RMAN\FULL_22I340JH_1_1.DBF 標記 = TAG20061123T103321
通道 ORA_DISK_1: 恢復完成, 用時: 00:01:06
完成 restore 於 23-11月-06

RMAN> run{
2> set until time="to_date('2006-11-23 10:35:00','yyyy-mm-dd hh24:mi:ss')";
3> recover database;
4> }
正在執行命令: SET until clause
啟動 recover 於 23-11月-06
使用通道 ORA_DISK_1
正在開始介質的恢復
存檔日誌執行緒 1 序列 2 已作為檔案 D:\ORACLE\ARCHIVE\ARC00002_0607256829.001 存在於磁碟上
存檔日誌檔名 =D:\ORACLE\ARCHIVE\ARC00002_0607256829.001 執行緒 =1 序列 =2
存檔日誌檔名 =D:\ORACLE\ARCHIVE\ARC00003_0607256829.001 執行緒 =1 序列 =3
介質恢復完成, 用時: 00:00:03
完成 recover 於 23-11月-06

RMAN> alter database open resetlogs;
資料庫已開啟
參考:
http://www.itpub.net/viewthread.php?tid=673323&extra=&page=1

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

相關文章