首页 > Linux操作系统 > Linux操作系统 > RMAN异机恢复(不同系统)
RMAN异机恢复(不同系统)
环境:
源环境:系统LINUX-32 ORACLE:10.2.0.4
目标环境:系统LINUX-64 ORACLE:10.2.0.4
准备工作:COPY controlfile,spfile备份集。全库备份集。Archivelog备份集。
一:restore SPFILE
使用RMAN进入其他instance,才可以恢复出spfile
RMAN> restore spfile to '/u01/MICSPROD.spfile' from '/u01/MICSPRODBAK';
根据恢复的SPFILE,用LINUX下strings命令打开,复制到vi下,把controlfile注释掉,编辑成PFILE。
SQL> startup nomount pfile='/u01/MICSPROD.pfile';
SQL> create spfile from pfile='/u01/MICSPROD.pfile';
SQL> shutdown immediate
SQL> startup nomount
二:restore controlfile
[oracle@micsgmm ~]$ rman target /
RMAN> restore controlfile from '/u01/MICSPRODBAK/2012_09_06/o1_mf_s_793317938_84kcflvf_.bkp';
SQL> alter database mount;
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/app/oracle/oradata/MICSPR
OD/controlfile/o1_mf_85lf9xxp_
.ctl, /u01/app/oracle/flash_re
covery_area/MICSPROD/controlfi
le/o1_mf_85lf9yjz_.ctl
三:restore datafiles
由于备份集和目标路劲不同,所以要注册备份集和指定恢复后的路劲
RMAN> catalog start with '/u01/MICSPRODBAK/2012_09_06_1/o1_mf_nnnd0_LEVEL0_060912_84k09py2_.bkp'; (注册备份集)
(指定恢复后的路劲)
RUN
{ set newname for datafile 1 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_system_4s1qt2g2_.dbf';
set newname for datafile 2 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_undotbs1_4s1qt2jf_.dbf';
set newname for datafile 3 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_sysaux_4s1qt2g7_.dbf';
set newname for datafile 4 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_users_4s1qt2jn_.dbf';
set newname for datafile 5 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_emp_4swx1w4s_.dbf';
set newname for datafile 6 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_ttk_4swx1wp0_.dbf';
set newname for datafile 7 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_pre_4swx1xh0_.dbf';
set newname for datafile 8 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_enr_4swx1yk8_.dbf';
set newname for datafile 9 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_cla_4swx1zcf_.dbf';
set newname for datafile 10 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_fin_4swx212s_.dbf';
set newname for datafile 11 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_sta_4swx21vr_.dbf';
set newname for datafile 12 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_cla_4swx2305_.dbf';
set newname for datafile 13 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_ind_4swx24gn_.dbf';
set newname for datafile 14 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_cal_4swx25q9_.dbf';
set newname for datafile 15 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_xml_4swx29t3_.dbf';
set newname for datafile 16 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_ttk_4swx2bxy_.dbf';
set newname for datafile 17 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_med_4swx2d7r_.dbf';
set newname for datafile 18 to '/u01/app/oracle/oradata/MICSPROD/datafile/o1_mf_tbsp_mic_56tddh9m_.dbf';
restore database;
switch datafile all; --修改控制文件的路劲
}
四:restore archivelog
RMAN> catalog start with '/u01/MICSPRODBAK/ARCHIVE'; - -注册archivelog的备份路劲。
SQL>SELECT * FROM v$ARCHIVED_LOG ORDER BY SEQUENCE#;
RMAN> list backup; 或者 RMAN> list backup of archivelog all; --查看需要恢复那些SEQUENCE
RMAN> run {set archivelog destination to '/u01/MICSPRODBAK/archivelog';
2> restore archivelog sequence between 51991 and 51996;}
五:recover database,输入需要的archivelog路劲。
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 867752661 generated at 09/06/2012 18:55:30 needed for thread
1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/MICSPROD/archivelog/2012_09_20/o1_mf_1_51991
_%u_.arc
ORA-00280: change 867752661 for thread 1 is in sequence #51991
Specify log: {
/u01/MICSPRODBAK/archivelog/1_51991_726956744.dbf
ORA-00279: change 867753319 generated at 09/06/2012 19:15:15 needed for thread
1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/MICSPROD/archivelog/2012_09_20/o1_mf_1_51992
_%u_.arc
ORA-00280: change 867753319 for thread 1 is in sequence #51992
ORA-00278: log file '/u01/MICSPRODBAK/archivelog/1_51991_726956744.dbf' no
longer needed for this recovery
修改ONLINE REDOLOG路劲:
SQL> alter database rename file '/u02/app/oracle/flash_recovery_area/MICSPROD/MICSPROD/onlinelog/o1_mf_3_66bgg9ld_1.log' to '/u01/app/oracle/flash_recovery_area/MICSPROD/onlinelog/redo01.log';
六:以RESETLOGS打开数据库
SQL> alter database open resetlogs;
注意:查看TEMP文件是否存在。
七:由于是LINUX-32导入到LINUX-64,所以要编译无效对象。
编译对象,先关闭数据库,然后以升级模式重新启动
Shutdown immediate
Startup upgrade pfile=’/u02/app/oracle/oradata/MICSREGR/rmandata/MICSREGR.ora’;
@@ ?/rdbms/admin/utlirp.sql
编译数据库中无效对象
Shutdown immediate;
Startup pfile=’/u02/app/oracle/oradata/MICSREGR/rmandata/MICSREGR.ora’;
在执行脚本过程中,会报03113错误
DECLARE
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
再次编译@@ ?/rdbms/admin/utlrp.sql
Session异常中断,在alter log和trace里都有ORA-7445错误
Errors in file /u02/app/oracle/admin/MICSREGR/bdump/micsregr_j000_29490.trc:
ORA-07445: exception encountered: core dump [_intel_fast_memcpy.A()+10] [SIGSEGV] [Address not mapped to object] [0x2AB297D771CF] [] []
导致这个问题,是因为我们启动了OLAP,在32位转到64位时就会遇到这种错误。
处理OLAP问题
(1) 删除组件
@?/olap/admin/catnoamd.sql
@?/olap/admin/catnoxoq.sql
@?/olap/admin/catnoaps.sql
@?/olap/admin/cwm2drop.sql ---此脚本在11G的版本中用,在10G是不需要的。
@?/rdbms/admin/utlrp.sql
drop public synonym OlapFactView;
drop public synonym OlapDimView;
关闭数据库
(2) 添加OLAP组件
利用DBCA工具。
因为恢复的实例在DBCA中是看不到的,所以要做一些修改,修改如下:/etc/oratab
添加MICSREGR:/u01/app/oracle/product/10.2.0/db_1:N
然后在图形化下启动DBCA, 选择 configure database option--------next--------next----------选择OLAP(SYSAUX) ----next ------finish
待重建完毕后,可再次查看无效对象:
select count(*) from all_objects where status='INVALID';
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26655292/viewspace-744469/ ,如需转载,请注明出处,否则将追究法律责任。