我对OracleRMAN恢复的理解.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《我对OracleRMAN恢复的理解.doc》由会员分享,可在线阅读,更多相关《我对OracleRMAN恢复的理解.doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、我对Oracle RMAN恢复的理解零散思路:可能遇到的恢复情况:因为数据库无法启动或正常使用需要恢复;因为数据误删除或表空间、表的误删除等需要将数据库或其中某表空间、表或表中数据恢复到过去某时间点;RMAN恢复原则:恢复不外乎就是恢复如下一些文件:数据文件(也有可能是表空间),控制文件,归档日志文件(见后面关于归档日志恢复部分),在线日志文件,初始化参数文件,全库恢复需要在MOUNT状态下,表空间或数据文件的恢复可以在OPEN状态下进行,控制文件归档日志文件在线日志文件初始化参数文件常用的恢复命令:/对数据库进行完全介质恢复归档模式,控制文件、初始化参数文件、归档日志文件和重做日志文件都完好
2、无损,其余数据文件全部丢失,可将数据库恢复到崩溃前那一刻的状态:Rmanstartup mount;Rmanrestore database;Rmanrecover database delete archivelog;Rmanalter database open;?那以上情况下,非归档模式应如何处理?这种情况下感觉应该有几种情况:首先非归档模式下的备份只可能是一致性备份,而且非归档模式下没有归档日志,因此恢复时要考虑最近一次备份和数据库崩溃期间的在线日志文件是否都还在,如果在则直接执行restore和recover然后正常打开数据库即可,而如果在线日志文件已经部分或全部丢失,则首先rest
3、ore最近一次备份,然后执行recover database until cancel命令,据说此时该命令并不会执行任何恢复操作,只是提示控制文件不再使用原有重做日志,最后以resetlogs方式打开数据库。在三思的书中,文字性提到了一种方法:首先恢复之前备份的控制文件,然后执行restore和recover命令,最后以resetlogs方式打开数据库。感觉这种方式很有道理而前一种思路似乎有问题:前一种思路中实际是用当前的控制文件在进行恢复操作,而当前的控制文件很有可能有前次备份中所不具有的新加的数据文件,那么这样在备份的时候是不是会出问题呢? 以上都需要具体验证!/恢复表空间和数据文件mou
4、nt或open状态都可Tablespace:Rmansql alter tablespace tbs1 offline immediate;Rmanrestore tablespace tbs1;Rmanrecover tablespace tbs1;Rmansql alter tablespace tbs1 online;Datafile:Rmansql alter database datafile 9 offline;Rmanrestore datafile 9;Rmanrecover datafile 9;Rmansql alter datafile 9 online;或Rmanset
5、 newname for datafile 3 to f:newlocationsysaux01.dbf;Rmanrestore datafile 3;Rmanswitch datafile 3;Rmanrecover datafile 3;/恢复归档日志文件特别:三思告诉我们:“恢复归档文件也是使用restore命令,如果只是为了在恢复数据文件后应用归档文件,那并不需要手动归档文件进行恢复,RMAN会在recover的时候自动对适当的归档进行恢复。单独恢复归档文件一般是有特别的需求,如创建了Data Guard环境,Standy端丢失了部分归档文件,必须从Primary端重新获取等等。”/恢
6、复控制文件这里所说的恢复是指仅恢复控制文件本身,应该还有一种“基于控制文件的不完全恢复”,不知和这种情况是否相同(当所有控制文件全部丢失或者误删除了表空间时(闪回数据库能办到吗?),需要执行控制文件的恢复)。其实本身是一种解决方案下的多种情况: 情景1:归档、有恢复目录、控制文件全部丢失或部分数据文件或表空间丢失情景2:归档、无恢复目录、控制文件全部丢失或部分数据文件或表空间丢失前景3:非归档、有恢复目录、控制文件全部丢失或部分数据文件或表空间丢失情景4:非归档、无恢复目录、控制文件全部丢失或部分数据文件或表空间丢失1、 从自动备份中恢复Rmanset DBID=1415261003;Rman
7、startup nomount;Rmanrestore controlfile from autobackup;Rmanalter database mount;(Rmanrestore controlfile to d:oraclenewctlfcontrolfile01.ctl from autobackup;恢复到指定位置)Rmanrecover database;Rmanalter database open resetlogs;2、 从备份集中恢复Rmanset DBID=1415261003;Rmanstartup nomount;Rmanrestore controlfile f
8、rom d:backupc-1415261003-20110522-00;(Rmanrestore controlfile to d:oraclenewctlfcontrolfile01.ctl from autobackup;恢复到指定位置)Rmanalter database mount;Rmanrecover database;Rmanalter database open resetlogs;/恢复初始化参数文件(方法基本与控制文件的恢复相同)Rman set DBID=1415261003;Rmanstartup nomount;Rmanrestore spfile from aut
9、obackup;Rmanalter database mount;Rmanrecover database;/恢复联机重做日志文件0、 查询联机日志状态情况v$log中记录联机重做日志组的信息;v$logfile中记录联机重做日志组对应的日志文件;SQLselect group#, thread#, sequence#, members, archived, status from v$log;SQLselect group#, member from v$logfile;1、 日志组中的某个日志成员损坏多元化重做日志的目的就是为了防止日志成员的介质失败。如果某个日志组的一个日志成员出现介质失
10、败,那么数据库仍然可以正常工作。首先查询:SQLselect member from v$logfile where status=INVALID;然后使用alter database drop logfile member命令删除该日志成员,注意,如果出现损坏的日志成员是当前日志组的日志成员,那么该日志成员将不能被删除,需要进行手工的切换:SQLalter system switch logfile;SQLalter database drop logfile member c:orclredo01_2.log;在删除了日志成员之后,需要为该日志组添加新的日志成员,注意新增加的日志成员状态也
11、为INVALID:SQLalter database add logfile member c:orclredo01_3.log to group 1;2、 丢失非当前的联机重做日志文件先查询出丢失的联机重做日志文件组及其包含的联机重做日志文件然后修复:SQLalter database clear logfile group 1;该命令重建该组重做日志文件即可。特别!在精通Oracle 10g备份与恢复一书中关于此部分的介绍分类更细:(1)、在OPEN状态下非活动日志组的所有日志成员全部损坏出现此种情况,数据库仍然正常工作,只是当切换到该日志组时,因为其内容不能被归档,所以后台进程LGWR会
12、处于等待状态。为了使得后台进程LGWR可以继续工作,DBA应该清楚该日志组(我理解此种情景是针对归档模式而言的,非归档模式没得这种问题):SQLalter database clear unarchived logfile group 1;(2)、在关闭状态下非活动日志组的所有日志成员全部损坏新增加新的日志组,删除原有日志组,然后打开数据:SQLalter database add logfile (d:orclredo04_1.log, c:orclredo04_2.log) size 10M;SQLalter database drop logfile group 1;SQLalter d
13、atabase open;3、 丢失当前的联机重做日志文件此种情况下不能直接重建,而是应该执行不完全恢复需要修改一个隐藏的初始化参数:SQLalter system set “_ALLOW_RESETLOGS_CORRUPTION”=TRUE SCOPE=SPFILE;该参数设为TRUE时,Oracle在OPEN时会跳过一些一致性的检查。特别!在精通Oracle 10g备份与恢复一书中关于此部分的介绍分类更细:(1)、在OPEN状态下当前日志组的所有日志成员全部损坏当数据库处于OPEN状态时,如果当前日志组的所有日志成员全部损坏,那么当后台进程LGWR将事物写入该日志组时,实例会被自动关闭,并
14、报错。出现这种情况下,需要执行不完全恢复:RMANstartup mount;RMANrestore database;RMANrecover database until cancel;RMANalter database open resetlogs;(2)、在关闭状态下当前日志组的所有日志成员全部损坏当在关闭状态下当前日志组出现损坏时,因为数据文件、控制文件都处于完全一致状态,所以DBA只需要执行基于CANCEL的不完全恢复即可:RMANstartup mount;RMANrecover database until cancel;RMANalter database open rese
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对于 oraclerman 恢复 理解
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内