oracle Rman 实验(丢失控制文件的恢复)

今天决定模拟一个比较极端的情况,数据文件+redo+controlfile全部丢失的情况下,用rman进行恢复

 

先开始备份吧

RMAN> run{
2> configure retention policy to recovery window of 7 days;
3> configure backup optimization on;
4> configure controlfile autoSQL> startup nomount
5> allocate channel d1 type disk format 'd:/rman_backup/%U';
6> allocate channel d2 type disk format 'd:/rman_backup/%U';
7> backup database filesperset 3 plus archivelog filesperset 10 delete all input;
8> release channel d1;
9> release channel d2;
10> }

 

备份完成把数据库文件全部干掉

 

ORACLE 例程已经启动。

Total System Global Area  293601280 bytes
Fixed Size                  1248600 bytes
Variable Size              75498152 bytes
Database Buffers          209715200 bytes
Redo Buffers                7139328 bytes
SQL>

 

rman nocatalog target /

RMAN> restore controlfile from autobackup;

启动 restore 于 15-4月 -10
使用通道 ORA_DISK_1

恢复区域目标: d:/oracle/product/10.2.0/flash_recovery_area
用于搜索的数据库名 (或数据库的唯一名称): LEARN
通道 ORA_DISK_1: 在恢复区域中找到自动备份
通道 ORA_DISK_1: 已找到的自动备份: D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/
LEARN/AUTOBACKUP/2009_12_10/O1_MF_S_705274758_5L1YJ8JM_.BKP
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
输出文件名=D:/ORACLE/PRODUCT/10.2.0/ORADATA/LEARN/CONTROL01.CTL
输出文件名=D:/ORACLE/PRODUCT/10.2.0/ORADATA/LEARN/CONTROL02.CTL
输出文件名=D:/ORACLE/PRODUCT/10.2.0/ORADATA/LEARN/CONTROL03.CTL
完成 restore 于 15-4月 -10

RMAN> alter database mount;

 

RMAN> restore database;

RMAN-03002: restore 命令 (在 04/15/2010 22:13:12 上) 失败
RMAN-06026: 有些目标没有找到 - 终止恢复
RMAN-06023: 没有找到数据文件4的副本来恢复
RMAN-06023: 没有找到数据文件3的副本来恢复
RMAN-06023: 没有找到数据文件2的副本来恢复
RMAN-06023: 没有找到数据文件1的副本来恢复


居然报错了,查看了一下autobackup恢复回来的controlfile,居然比我移动出去的小了100多K,于是将移动走的控制文件覆盖回去,重启数据库到mount

C:/Documents and Settings/Administrator>rman nocatalog target /

RMAN> restore database;

这下可以执行了。。。看来autobackup的controlfile有问题。。没有包含最新的备份信息

RMAN> recover database;

启动 recover 于 15-4月 -10
使用通道 ORA_DISK_1

正在开始介质的恢复
无法恢复介质

redolog没了 看来是不能recover database了,看来redolog里的数据丢了,只能做不完全恢复,看看能不能启动数据库

SQL> recover database until cancel;
ORA-00279: 更改 858544 (在 04/15/2010 21:55:31 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:/ARCHIVELOG/LEARN/ARC00060_0705190799.001
ORA-00280: 更改 858544 (用于线程 1) 在序列 #60 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。

SQL> alter database open resetlogs;

数据库已更改。

数据库打开了,我这里还有一个库做了dataguard,看看对standby数据库有没有影响

SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

 

看来没有影响,这次看来还是遇到了问题,接下来进行测试,在rman的备份全部完成后,再次进行controlfile的备份,结果可以恢复数据库

这样恢复的控制文件

RMAN> restore controlfile from 'D:/rman_backup/3QLB7GS5_1_1';

由此看来,丢失控制文件的情况下恢复数据库,靠autobackup的controlfile是没用的,controlfile最好做多工,并且编写rman脚本的时候备份完成后最好手动备份一下controlfile,并且名字最好和别的备份集区分出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值