我的oracle的异机不完全恢复-路径不一致恢复笔记,转载请注明出处

oracle的异机不完全恢复-路径不一致恢复:
1.恢复要点:异机恢复的操作系统,数据库版本一致,精确到小版本。
2.恢复要点:恢复控制文件用RMAN>restore controlfile  from '/home/oracle/orcl_recover_0922/ncsnf0_tag20160907t110022_0.615.921927741';
3.恢复要点:将备份集重新注册到控制文件。
4.恢复要点:修改数据文件和日志文件路径可用下面语句:
set newname for datafile 1 to '/u01/app/oracle/oradata/orcl/system.dbf';
 alter database rename file '+DG_DATAFILEORCL/orcl/onlinelog/group_1.262.910013385' to  '/u01/app/oracle/oradata/orcl/group1B.log';
 
5.特别注意恢复时候的版本。我上次做异机恢复实验.原机是centos6.5+oracle11.2.0.3.0,目标机是:redhat6.5+oracle11.2.0.4.0, 结果恢复出来,
在alter database open resetlogs,这最后一步,出现了很多意外的问题,跟目标机的环境有很大的关系。
 
6.以下是恢复过程,中间有不必要的代码会省略。
【1】把要恢复的备份片,拷贝到目标机。
 ncsnf0_tag20160907t110022_0.615.921927741   包括参数文件,控制文件
 nnndf0_tag20160907t110022_0.294.921927625   包括数据文件
 
 
 thread_1_seq_1123.339.921956079
 thread_1_seq_1124.338.921967313
 那怎么确定,我需要拷贝哪些归档日志呢?这要看需求恢复到哪个时间?提供如下两个函数


select * from nls_session_parameters; 
select timestamp_to_scn('21-Sep-16 10.00.00') from dual; 
select scn_to_timestamp(17982985) from dual; 
 
 
【2】恢复参数文件
[oracle@oracleIns ~]$ export ORACLE_SID=orcl
[oracle@oracleIns ~]$ rman target /
RMAN> set dbid=1437794116
executing command: SET DBID
RMAN>startup nomount    
这里注意的是,rman命令使用了默认的隐含参数。
RMAN>restore spfile from '/home/oracle/app/flash_recovery_area/ORCL/autobackup/2015_06_06/o1_mf_s_881702383_bq5x0wq0_.bkp';
RMAN>shutdown immediate
SQL>create pfile='/path/orcl.ora' from spfile;
修改pfile配置文件,这里修改控制文件路径,sga,memory_target等参数,让它适应目标机。
SQL>create spfile from pfile='/path/orcl.ora';
RMAN>startup nomount


这样就恢复了参数文件。


【3】恢复控制文件
RMAN>restore controlfile  from '/home/oracle/orcl_recover_0922/ncsnf0_tag20160907t110022_0.615.921927741';
RMAN>alter database mount;


【4】修改重做日志文件路径:
SQL> alter database rename file '+DG_DATAFILEORCL/orcl/onlinelog/group_1.263.910013389' to  '/u01/app/oracle/oradata/orcl/group1.log';
SQL>alter database rename file '+DG_DATAFILEORCL/orcl/onlinelog/group_1.262.910013385' to  '/u01/app/oracle/oradata/orcl/group1B.log';
SQL> alter database rename file '+DG_DATAFILEORCL/orcl/onlinelog/group_2.265.910013397' to  '/u01/app/oracle/oradata/orcl/group2.log';
SQL> alter database rename file '+DG_DATAFILEORCL/orcl/onlinelog/group_2.264.910013393' to  '/u01/app/oracle/oradata/orcl/group2B.log';
SQL> alter database rename file '+DG_DATAFILEORCL/orcl/onlinelog/group_3.267.910013405' to  '/u01/app/oracle/oradata/orcl/group3.log';
SQL> alter database rename file '+DG_DATAFILEORCL/orcl/onlinelog/group_3.266.910013401' to  '/u01/app/oracle/oradata/orcl/group3B.log';


【5】重新将备份片backupset,归档日志注册到控制文件:
 将备份集重新注册到控制文件
 方法一:注册单个备份片
  RMAN> CATALOG BACKUPPIECE '/u01/bak/arch_0no76njh_1_1_20130416','/u01/bak/ctl_file_0oo76njm_1_1_20130416'
方法二:注册整个目录
  ---ASM:
  CATALOG START WITH '+disk'; # catalog allfiles from an ASM disk group
  --本地目录:最后一定要加/
  CATALOG START WITH '/fs1/datafiles/'; #catalog all files in directory
  --有多个目录,注册多次:
  RMAN> catalog start with'/data01/'; 
RMAN>catalog start with '/data02/'; 
RMAN>catalog start with '/data03/';




【6】同时清理控制文件中不存在的备份片,归档日志,为接下来数据文件恢复做准备:
RMAN>crosscheck backupset;
RMAN>crosscheck copy;
RMAN>delete expired backupset;
RMAN>delete expired copy;


【7】数据文件恢复,这里注意脚本是怎么修改数据文件日志的:


RUN{
set newname for datafile 1 to '/u01/app/oracle/oradata/orcl/system.dbf';
set newname for datafile 2 to '/u01/app/oracle/oradata/orcl/sysaux01.dbf';
set newname for datafile 3 to '/u01/app/oracle/oradata/orcl/undotbs1.dbf';
set newname for datafile 4 to '/u01/app/oracle/oradata/orcl/users.dbf';
set newname for datafile 5 to '/u01/app/oracle/oradata/orcl/lyk.dbf';
set newname for datafile 6 to '/u01/app/oracle/oradata/orcl/posjk.dbf';
set newname for datafile  7 to '/u01/app/oracle/oradata/orcl/bcard.dbf';
set newname for datafile 8 to '/u01/app/oracle/oradata/orcl/channel.dbf';
set newname for datafile 9 to '/u01/app/oracle/oradata/orcl/cp.dbf';
set newname for datafile 10 to '/u01/app/oracle/oradata/orcl/njcs.dbf';
set newname for datafile 11 to '/u01/app/oracle/oradata/orcl/njsmk.dbf';
set newname for datafile 12 to '/u01/app/oracle/oradata/orcl/posjk1.dbf';
set newname for datafile 13 to '/u01/app/oracle/oradata/orcl/posjk2.dbf';
set newname for datafile 14 to '/u01/app/oracle/oradata/orcl/vas.dbf';
set newname for datafile 15 to '/u01/app/oracle/oradata/orcl/fin.dbf';
set newname for datafile 16 to '/u01/app/oracle/oradata/orcl/njcs1.dbf';
set newname for datafile 17 to '/u01/app/oracle/oradata/orcl/posjk3.dbf';
set newname for datafile 18 to '/u01/app/oracle/oradata/orcl/njcc.dbf';
restore database;
switch datafile all;
recover database;
}
这个步骤花时间是最多的。
在执行recover database;时候会报错:
RMAN-06025: no backup of archived log for thread 1 with sequence *** and starting SCN of ********* found to restore
因为找不到更多的归档日志了嘛。其实这正是我们要的目标,恢复到某个时间点:
接着再来不完全恢复:
recover database until time "to_date('2015-04-20 08:13:50','yyyy-mm-dd hh24:mi:ss')";
recover database until sequence 123 thread 1;
recover database until scn 888;






【8】打开数据库。这个步骤会出现很多错误,如果你异机恢复的操作系统,数据库版本不一致。
alter database open resetlogs;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30393770/viewspace-2125532/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30393770/viewspace-2125532/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值