[转帖]RMAN 恢复实践

原创 2004年06月28日 21:16:00
[转帖]RMAN 恢复实践
RMAN恢复实践
文章来源:(ncn.cn) 阅读次数:(248) 更新时间:(2003-6-18 18:02:00)

关键词:Oracle、恢复、RMAN


谈恢复肯定离不开备份,不过今天我们的重点不在于此,我在在这里将备份分为两类:操作系统备份和数据库备份,而数据库备份工作我们大部分都是用RMAN 来做。对于使用RMAN 我强烈建议使用catalog mode。


测试环境:WIN2K ADV+ORACLE817


RMAN:target database named ORA,catalog database named RCVDB




一、Control file的恢复


说明:RMAN 的备份必须在catalog mode下进行,否则备份了control file也没有用;但即使是这样有时候可能还会出现很多问题。建议:control file 用SQL或操作系统的方式做备份和恢复。


1、RMAN备份的恢复


备份:


run {


allocate channel c1 type disk;


backup current controlfile;


}


恢复:


run {


allocate channel c1 type disk;


restore controlfile to '/oracle/oradata/ora/control01.ctl';


replicate controlfile from '/oracle/oradata/ora/control01.ctl';


restore database;


sql 'alter database mount';


recover database until cancel;


sql 'alter database open resetlogs';


release channel c1;


}


使用resetlogs之后需在catalog database 上进行reset database,原有备份信息将不可用,所以要及时进行新的完全备份。


2、SQL备份的恢复


备份:


alter database backup controlfile to trace;


恢复:


先将数据库shutdown,然后从备份所产生的trace文件中拷出创建恢复所用的SQL执行一遍


即可。如果你之前没有做这样的备份那也没关系,形式如下你可以照着写一个:


#--------------------------------BEGIN-----------------------------------------


# The following commands will create a new control file and use it


# to open the database.


# Data used by the recovery manager will be lost. Additional logs may


# be required for media recovery of offline data files. Use this


# only if the current version of all online logs are available.


STARTUP NOMOUNT


CREATE CONTROLFILE REUSE DATABASE "ORA" NORESETLOGS


NOARCHIVELOG


MAXLOGFILES 32


MAXLOGMEMBERS 2


MAXDATAFILES 32


MAXINSTANCES 16


MAXLOGHISTORY 680


LOGFILE


GROUP 1 (


'C:/ORACLE/ORADATA/ORA/REDO01.LOG',


'C:/ORACLE/ORADATA/ORA/REDO01_1.LOG'


) SIZE 1M,


GROUP 2 (


'C:/ORACLE/ORADATA/ORA/REDO02.LOG',


'C:/ORACLE/ORADATA/ORA/REDO02_1.LOG'


) SIZE 1M,


GROUP 3 (


'C:/ORACLE/ORADATA/ORA/REDO03_1.LOG',


'C:/ORACLE/ORADATA/ORA/REDO03_2.LOG'


) SIZE 1M


DATAFILE


'C:/ORACLE/ORADATA/ORA/SYSTEM01.DBF',


'C:/ORACLE/ORADATA/ORA/RBS01.DBF',


'C:/ORACLE/ORADATA/ORA/USERS01.DBF',


'C:/ORACLE/ORADATA/ORA/TEMP01.DBF',


'C:/ORACLE/ORADATA/ORA/TOOLS01.DBF',


'C:/ORACLE/ORADATA/ORA/INDX01.DBF'


CHARACTER SET ZHS16GBK


;


# Recovery is required if any of the datafiles are restored backups,


# or if the last shutdown was not normal or immediate.


RECOVER DATABASE


# Database can now be opened normally.


ALTER DATABASE OPEN;


#----------------------------------END-----------------------------------------


3、OS 备份的恢复


备份:


OS copy


恢复:


OS copy回来即可,要注意的是这个备份必须是最新有效的。


二、Database的恢复


A、To restore the database from host_a to host_b with the same file system


#此处使用recovery catalog;


#如果不是catalog mode,就用OS COPY直接将control file


#copy过来并mount database。


1、copy the init.ora file from host_a to host_b using o/s utility


2、rman target sys/sys@host_b catalog rman/rman@rcat


3、startup nomount


4、run {


allocate channel c1 type disk;


restore controlfile;


sql ‘alter database mount’;


}


5、select min(scn) from (


select max(next_change#) scn from v$archived_log


group by thread#);


6、run {


set until scn=500; #use appropriate SCN for incomplete recovery


allocate channel c1 type ‘sbt_type’;


restore database;


recover database;


sql ‘alter database open resetlogs’;


}


B、To restore the database from host_a to host_b with a different filesystem


步骤和A差不多,不同的是在启动数据库之前要修改init.ora文件中所有和路径相关的参数,


如:*_DEST,*_PATH 等。然后执行如下脚本:


run {


set until scn=500;


allocate channel c1 type disk;


set newname for datafile 1 to ‘/disk’/%U’;


set newname for datafile 2 to ‘/disk’/%U’;


set newname for datafile 3 to ‘/disk’/%U’;


set newname for datafile 4 to ‘/disk’/%U’;


set newname for datafile 5 to ‘/disk’/%U’;


set newname for datafile 6 to ‘/disk’/%U’;


set newname for datafile 7 to ‘/disk’/%U’;


sql ‘alter database mount’;


restore database;


switch datafile all; #points the control file to the renamed datafiles


recover database;


.... ....


sql ‘alter database open resetlogs’;


}


三、Tablespace and datafile的恢复


run {


allocate channel c1 type disk;


sql ‘alter tablespace users offline immediate’; #must be in archive log mode


#如下改变datafile位置


set newname for datafile 'c:/oracle/oradata/ora/users01.dbf'


to 'c:/oracle/oradata/orabk/user01.dbf';


restore tablespace users;


switch datafile all;


recover tablespace users;


sql ‘alter tablespace users online’;


}


如果不在archive log mode下,执行以上SQL时会出错:ORA-01145。你将不得不shutdown。


四、关于set until 选项


set until后面可以跟time、scn和logseq三个不同的选项,当数据库运行在noarchivelog


mode 下时可以使用until cancel选项进行数据库的不完全恢复。所有这些的具体过程和以上


的数据库恢复都差不多,不再赘述。

12C-RMAN基于时间点单表恢复

重要提示: 1、确保对于辅助数据库在/u01文件系统下有足够的可用空间,同时对数据泵文件也有同样保证 2、必须要存在一份完整的数据库备份,或者至少是要有SYSTEM相关的表空间备份 3、以下是在RMA...
  • gguxxing008
  • gguxxing008
  • 2016年10月31日 16:26
  • 645

利用rman恢复被失误drop或者truncate的表

转自  http://blog.itpub.net/15747463/viewspace-1062560/ 表被truncate/drop 的恢复方法有: 1 闪回数据库(需要开启flas...
  • u012232730
  • u012232730
  • 2016年10月08日 15:46
  • 580

使用RMAN恢复备库

一、出现gap sequence现象 备库 Fetching gap sequence in thread 1, gap sequence 710-716 Tue ...
  • wang_san_shi
  • wang_san_shi
  • 2015年03月31日 16:51
  • 608

几种RMAN恢复场景

前期准备: 做一次全库备份: [oracle@localhost ~]$ rman target / Recovery Manager: Release 11.2.0.4.0 - Productio...
  • cscscscsc
  • cscscscsc
  • 2016年09月10日 22:39
  • 1890

使用RMAN恢复RAC备份到单实例

本文记录了使用RAC数据库的RMAN备份,恢复到单实例数据库上的过程。 1、测试环境 目标环境:Oralce linux 6.5 + Oracle 12.1.0.1   hostname:...
  • wang_san_shi
  • wang_san_shi
  • 2015年03月25日 09:04
  • 1877

使用rman恢复部分表空间

±ðÔÚÖ÷»úÉÏÓÃrman ÖŽÐÐ £¬Íš¹ýcommvault»ÖžŽ žßŒ¶ ×Ô¶šÒåœÅ±ŸÖŽÐÐ SET DBID 3958247272; run { allo...
  • web_gus
  • web_gus
  • 2014年08月11日 10:14
  • 1807

RMAN 系列(五) ---- RMAN 还原 与 恢复

一. RMAN 还原与恢复基础在RMAN 用于中,还原与恢复是两个不同的概念。 还原(restore):指访问先前生成的备份,从中得到一个或多个对象,然后在磁盘上的某个位置还原这些对象。 恢复(rec...
  • tianlesoftware
  • tianlesoftware
  • 2010年06月28日 22:32
  • 13247

RMAN恢复中断后,再启动RMAN,会产出什么样的后果?

问题:RMAN恢复restore database中断后 ,再启动RMAN,会产出什么样的后果? --==============================================...
  • jiangzeqiang
  • jiangzeqiang
  • 2013年03月27日 09:13
  • 848

rman 还原归档日志(restore archivelog)

听说过还原(restore)数据库,表空间及数据库文件,使用归档日志恢复(recover)数据库,表空间,数据库文件。咦,还有还原归档日志这一说法呢?没错,可能我们忽略了还原归档日志这一个过程,原因是...
  • robinson_0612
  • robinson_0612
  • 2013年07月29日 12:00
  • 15308

RMAN异地恢复

源服务器和目标服务器的操作系统,oracle版本均为11.2.0.4.0 - 64bit 源服务器:192.168.1.9 目的服务器:192.168.1.10,只需要安装oracle软件即可,不需要...
  • tchic
  • tchic
  • 2016年09月23日 18:47
  • 1840
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[转帖]RMAN 恢复实践
举报原因:
原因补充:

(最多只允许输入30个字)