加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_沈阳站长网 (https://www.024zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

rman恢复措 施和oracle异机恢复

发布时间:2022-11-21 12:33:40 所属栏目:语言 来源:
导读:  注:
  ①恢复的前提是已经做好备份
  ②完全恢复数据库是数据库遇到故障,在恢复时候没有丢失任何已经提交事物数据的恢复
  不完全恢复数据库是数据库遇到故障,在恢复时候丢失部分数据的恢复
  ③
  注:
  ①恢复的前提是已经做好备份
  ②完全恢复数据库是数据库遇到故障,在恢复时候没有丢失任何已经提交事物数据的恢复
  不完全恢复数据库是数据库遇到故障,在恢复时候丢失部分数据的恢复
  ③在linux下需要设置环境变量,即需要恢复的oracle数据库的实例名:export ORACLE_SID=orcl
  ④当用resetlogs启动数据库时,应该要对数据库进行一次全备份
  
  一、恢复方案
  1、丢失数据文件,进行完全恢复
  
  复制代码 代码如下:
  
  
  RMAN>startup mount;
  RMAN>restore database;
  RMAN>recover database;
  RMAn>sql 'alter database open';
  
  
  2、丢失重做日志文件,进行不完全恢复
  复制代码 代码如下:
  
  
  SQL>startup mount;
  SQL>recover database until cancel;
  SQL>alter database open resetlogs;
  
  
  3、丢失数据文件、控制文件和重做日志文件,进行不完全恢复
  复制代码 代码如下:
  
  
  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;
  
  
  4、丢失初始化文件、控制文件数据文件和重做日志文件,进行不完全恢复
  复制代码 代码如下:
  
  
  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;
  
  
  5、基于时间点的恢复(常用)
  复制代码 代码如下:
  
  
  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';
  
  
  6、基于SCN的恢复
  复制代码 代码如下:
  
  
  RMAN>startup mount;
  RMAN>restore database;
  RMAN>recover database until scn  963915;
  RMAN>sql 'alter database open resetlogs';
  
  
  ①查询当前SCN号:
  复制代码 代码如下:
  
  
  SQL>select dbms_flashback.get_system_change_number from dual;
  
  
  ②根据SCN号查询时间:
  复制代码 代码如下:
  
  
  SQL>select to_char(scn_to_timestamp(963959),'yyyymmdd hh24:mi:si') from dual;
  
  
  ③根据时间查询SCN号:
  复制代码 代码如下:
  
  
  SQL>select timestamp_to_scn(to_date('20140309 17:55:10','yyyymmdd hh24:mi:ss')) from dual;
  
  
  ④查询一段时间内的SCN号:
  复制代码 代码如下:
  
  
  SQL>select * from (select time_dp,scn from smon_scn_time order by time_dp desc) where  rownum<20;
  
  
  7、深入理解incarnation:就是可以跨越resetlogs进行数据恢复
  ①每一次resetlogs就会使incarnation + 1;如果想要恢复到之前incarnation的scn,就需要先恢复到之前的incarnation;
  ②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;
 

(编辑:我爱制作网_沈阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!