时间:2021-05-02
注:
①恢复的前提是已经做好备份
②完全恢复数据库是数据库遇到故障,在恢复时候没有丢失任何已经提交事物数据的恢复
不完全恢复数据库是数据库遇到故障,在恢复时候丢失部分数据的恢复
③在linux下需要设置环境变量,即需要恢复的oracle数据库的实例名:export ORACLE_SID=orcl
④当用resetlogs启动数据库时,应该要对数据库进行一次全备份
一、恢复方案
1、丢失数据文件,进行完全恢复
复制代码 代码如下:
RMAN>startup mount;
RMAN>restore database;
RMAN>recover database;
RMAn>sql 'alter database open';
复制代码 代码如下:
SQL>startup mount;
SQL>recover database until cancel;
SQL>alter database open resetlogs;
复制代码 代码如下:
RMAN>startup nomount;
RMAN>restore controfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;
复制代码 代码如下:
SQL>startup nomount pfile='D:\oracle\product\10.2.0\db_1\admin\orcl\pfile\init.ora.27201414210'; #pfile的路径
RMAN>restore spfile from autobackup;
SQL>shutdown immediate;
SQL>startup nomount;
RMAN>restore controlfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;
复制代码 代码如下:
RMAN>startup mount;
RMAN>restore database;
RMAN>sql 'alter session set nls_date_format="yyyymmdd hh24:mi:ss"'; #设置显示时间格式
RMAN>recover database until time '20140312 17:07:00'; #把数据库恢复到2014-03-12 17:07:00这一时间点上
RMAN>sql 'alter database open resetlogs';
复制代码 代码如下:
RMAN>startup mount;
RMAN>restore database;
RMAN>recover database until scn 963915;
RMAN>sql 'alter database open resetlogs';
复制代码 代码如下:
SQL>select dbms_flashback.get_system_change_number from dual;
复制代码 代码如下:
SQL>select to_char(scn_to_timestamp(963959),'yyyymmdd hh24:mi:si') from dual;
复制代码 代码如下:
SQL>select timestamp_to_scn(to_date('20140309 17:55:10','yyyymmdd hh24:mi:ss')) from dual;
复制代码 代码如下:
SQL>select * from (select time_dp,scn from smon_scn_time order by time_dp desc) where rownum<20;
②Incarnation 11 and 12都包括scn 900000 的spot,所以当incarnation 12 做 until scn的时候,是恢复到当前incarcation 的 scn;但是根据我们的需要,我们需要的是incarnation 11的scn 900000;所以就需要切换incarnation到incarnation 11,才能找回我们需要的数据。
RMAN>reset database to incarnation 11;
8、recover database的四条语句区别
① SQL>recover database using backup controlfile
如果丢失当前控制文件,用冷备份的控制文件恢复的时候,用来告诉oracle,不要以controlfile中的scn作为恢复的终点。
②SQL>recover database until cancel
如果丢失current/active redo的时候,手动指定终点。
③SQL>recover database using backup controlfile until cancel;
如果丢失当前controlfile并且current/active redo都丢失,会先去自动应用归档日志,可以实现最大的恢复;
④SQL>recover database until cancel using backup controlfile;
如果丢失当前controlfile并且current/active redo都丢失,以旧的redo中的scn为恢复终点,因为没有应用归档日志,所有会丢失数据。
要理解recover database using backup controlfile,先理解 recover database;在普通的recover database 或者 recover tablespace, recover datafile时, Oracle会以当前controlfile所纪录的SCN为准,利用archive log和 redo log的redo entry, 把相关的datafile 的 block恢复到“当前controlfile所纪录的SCN”;而某些情况下,Oracle需要把数据恢复到比当前controlfile所纪录的SCN还要靠后的位置(比如说,control file是backup controlfile , 或者 controlfile是根据trace create的。),这时候,就需要用using backup controlfile. 恢复就不会受“当前controlfile所记录的SCN”的限制。这时候的限制就来自于你的语句(until time , until scn),或者可用的archive log(until cancel) 。如果控制文件丢失,restore备份的控制文件后,则必须使用using backup controlfile选项。而until cancel则是不完全恢复,即current/active redo丢失,或者从restore数据库后某个归档文件缺失,则终止。
结论:
如果有旧的数据库备份,在归档日志和在线日志全部保存完好的情况下,使用recover database或recover database using backup controlfile,则不丢失数据
如果存在备份数据文件restore后,归档日志或者在线日志(active、current)丢失情况下,使用recover database using backup controlfile until cancel,则可以实现最大恢复。
二、RMAN异机恢复(源数据库和目标数据库的实例名要一致)
1、对源数据库进行备份
复制代码 代码如下:
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
简介类似oracle的rman,用于postgres的备份与恢复下载https://github.com/ossc-db/pg_rman/tree/V1.3.9
Oracle11gR2扩展了许多备份和恢复新功能套件,包括恢复管理器(RMAN)的增强,其中许多是对早期特性的扩展。 自动化块恢复。依笔者之浅见,Orac
手机照片删了怎么恢复手机照片恢复方法 手机照片删了怎么恢复手机照片恢复方法 手机照片删了怎么恢复手机照片恢复方法 手机照片删了怎么恢复手机照片恢复方法
前言在做数据恢复时,偶尔会碰到需要对数据文件位置调整的案例,在这种情况下,可以在RMAN中使用SETNEWNAME命令。在Oracle11g之前,RMAN只支持
一:EasyRecoveryProfessional是一款非常不错的数据恢复软件,Professioanl(专业版)呵呵。该软件支持的数据恢复方案包括:高级恢复