1 建表,实验数据。。
SQL> conn yang/yang
已连接。
SQL> create table test (int number);
表已创建。
SQL> insert into test values (1);
已创建 1 行。
SQL> insert into test values (2);
已创建 1 行。
SQL> insert into test values (3);
已创建 1 行。
SQL> insert into test values (4);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from test;
INT
----------
1
2
3
4
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
2 模拟 控制文件丢失。
SQL> host del f:\oracl\oradata\orcl\*.ctl;
SQL> exit;
从 Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开
3 使用rman 恢复
1 rman target /
2 一定要 startup nomount
3 restore controlfile from ‘备份的控制文件的路径’
4 sql 'alter database mount'
5 RESTORE DATABASE
6 recover database
7 sql'alter database open resetlogs’
4 验证
C:\Documents and Settings\Administrator>sqlplus yang/yang
SQL*Plus: Release 11.1.0.6.0 - Production on 星期六 8月 7 23:19:22 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from test;
INT
----------
1
2
3
4
成功。。。
小结:
1.rman恢复控制文件,要在DB startup nomount之后才行。
2.为什么要set dbid=.....?
因为目标数据库控制文件丢失,在此处必须指定dbid 需要找到目标数据库。
3.restore controlfile from autobackup;
语句需要配置自动控制文件备份打开才行:
configure controlfile autobackup on.
如果以前修改过AUTOBACKUP的格式和路径,那么在恢复之前需要进行重新设 置指明自动备份所在路径。也可以说使用命令
restore controlfile from 'f:\backup\CTL_0ILKPB59_1_1.BAK';
类似命令来手动指定控制文件备份源。
4.为什么使用alter database open resetlogs启动数据库?
由于使用备份的控制文件恢复,该文件内不包含目标数据库redologs和数据文头部scn信息,所以必须通过resetlogs方式open