Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22589
  • 博文数量: 6
  • 博客积分: 240
  • 博客等级: 二等列兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2005-09-15 10:13
文章分类

全部博文(6)

文章存档

2008年(1)

2005年(5)

我的朋友

分类: 服务器与存储

2005-11-14 09:17:05

在没有rman catalog的情况下,我一般建议用户单独将controlfile采用非rman方式备份出来,因为恢复数据库时要在start mount状态下才能用rman恢复,而start mount的前提是controlfile已经在了。所以,一般比较简单的方式为“1.文件方式恢复controlfile、2.startup mount、3.用rman恢复数据库”。但是,如果在nocatalog方式下如果没有用文件方式备份controlfile而数据库全部坏了,还有一个方法救命.......

关于如何在rman没有catalog的情况下恢复用Rman 备份到磁带上的controlfile
1.
利用 bplist 命令(NetBackup命令)查出最新备份的 controlfile 所在的备份集
# bplist -C oraserver -S bkserver -t 4 -R /
/cntrl_47_1_487002297
/cntrl_46_1_487002110
/cntrl_43_1_486814317
/al_42_1_486814273
/al_40_1_486814236
/al_41_1_486814236
/al_39_1_485975390
/al_38_1_485975073
/al_37_1_485964377
/al_36_1_485956945
/al_35_1_485956730
/al_34_1_485956488
/al_33_1_485798568
/cntrl_32_1_485795684
/al_31_1_485795653
/cntrl_30_1_485794954
/al_29_1_485794918
/cntrl_28_1_485719603
/al_26_1_485719551
/al_27_1_485719551
/bk_25_1_485719418
/bk_24_1_485719417
其中oraserveroracle所在的NBU客户端,bkserver NBU MasterServer.
如上所示/cntrl_47_1_487002297 为最新的controlfile 备份集。
2.
将现有的数据库shutdown之后启动到nomount状态
SQL> conn / as sysdba
Connected.
SQL> shutdown immediate
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
SQL> startup nomount
可写可不写,看情况
ORACLE instance started.

Total System Global Area   69652640 bytes
Fixed Size                    73888 bytes
Variable Size              52621312 bytes
Database Buffers           16777216 bytes
Redo Buffers                 180224 bytes
3.
SQL中敲入一下脚本
SQL>          
SQL> declare
  2   devtype varchar2(256);
  3   done boolean;
  4  begin
  5  devtype:=dbms_backup_restore.deviceallocate('sbt_tape',params=>'');
  6  dbms_backup_restore.restoresetdatafile;
  7  dbms_backup_restore.restorecontrolfileto('/tmp/abc.cf');
  8
dbms_backup_restore.restorebackuppiece('cntrl_47_1_487002297',done=>done
);
  9  end;
 10  /

其中'/tmp/abc.cf'为我们要取出的controlfile 所存放的位置和名称;
    'cntrl_47_1_487002297'
为先前我们得到的Controlfile 所在的备份集名称
   
其余不需更改!!
此脚本运行的结果为:
PL/SQL procedure successfully completed.
4.
/tmp/abc.cf文件改名为正确的controlfile 名字
5.
启动数据库到mount状态
6.
再执行RMAN的恢复脚本,恢复数据。

阅读(1497) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~