天天看点

使用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>