天天看點

使用rman恢複控制檔案

沒有使用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;

使用通道 ORA_DISK_1

通道 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

RMAN> alter database mount;

資料庫已裝載

釋放的通道: ORA_DISK_1

RMAN> restore database;

啟動 implicit crosscheck backup 于 23-11月-06

通道 ORA_DISK_1: sid=321 devtype=DISK

已交叉檢驗的 21 對象

完成 implicit crosscheck backup 于 23-11月-06

啟動 implicit crosscheck copy 于 23-11月-06

完成 implicit crosscheck copy 于 23-11月-06

搜尋恢複區域中的所有檔案

正在編制檔案目錄...

沒有為檔案編制目錄

通道 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

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

正在開始媒體的恢複

存檔日志線程 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;

資料庫已打開

參考:

<a href="http://www.itpub.net/viewthread.php?tid=673323&amp;extra=&amp;page=1">http://www.itpub.net/viewthread.php?tid=673323&amp;extra=&amp;page=1</a>