WindowsDB数据RMAN recover至linux报错RMAN-11003 ORA-10562 ORA-10564 二、MOS说明 三、RMAN 迁移

一、现象

将windows 数据库,迁移至Linux环境中;

使用RMAN备份恢复,restore database OK正常,recover database failed!!1

Restoring backup of database created and running on 64-bit Windows 2008R2 to Oracle Linux 6 x86-64 using RMAN failed.
Restore of controlfile is successful.
Database change to mount mode is successful.
Restore of datafiles is successful.
When RMAN tries to recover database using archivelogs, it fails with error:
channel ORA_SBT_TAPE_2: restore complete, elapsed time: 00:00:01
archived log file name=+<diskgroup name>/archivelog/2015_04_23/thread_2_seq_2365.359.877785237 thread=2 sequence=2365
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 04/23/2015 13:14:00
RMAN-11003: failure during parse/execution of SQL statement: alter database recover logfile '+<diskgroup name>/archivelog
/2015_04_23/thread_2_seq_2365.359.877785237
' ORA-10562: Error occurred while applying redo to data block (file# 3, block# 1342351) ORA-10564: tablespace SYSAUX ORA-01110: data file 3: '+<diskgroup name>/datafile/sysaux.417.877785187' ORA-10561: block type 'TRANSACTION MANAGED INDEX BLOCK', data object# 475230 ORA-00600: internal error code, arguments: [ktbair2_0], [18446744073709550383], [112], [], [], [], [], [], [], [], [], [] RMAN>

Restore From Windows To Linux using RMAN Fails (Doc ID 2003327.1)    
Oracle Database - Enterprise Edition - Version 11.2.0.2 and later
Customer trying to restore windows database to linux. Database restored
successfully. But while recovery getting different ORA-00600 
Rman restore database ok,recover 报错!

Bug 20479736 - ORA-00600 [4502]/[KTBAIR2_0]/[KTBRCL:CDLC NOT IN CR] RECOVERY CROSS PLATFORM
which is closed as not a bug
The error ORA-600 [KTBRCL:CDLC NOT IN CR] is returned while duplicating from Windows to Linux.
Note, redo application is not supported between Linux and Windows except with a standby database. This means that the backup must be</em><em> a
cold (consistent) backup, which requires no redo application. If redo apply is required to recover the database on the new platform it will fail.
Using consistent (cold) backup method should be used for duplicating cross platform.

就是说对于windows->linux迁移数据库跨平台的操作来说, rman restore database 可以执行,recover 无法解析归档日志! Windows->linux DG的方式恢复进程可以解析归档日志恢复!

那么? 如何操作? 一致性关库,备份恢复迁移,或者搭建DG,进行fail over!

三、RMAN 迁移

Clone Database from Windows To Linux (Lower patchset to Higher) using RMAN (Doc ID 2143991.1)    
Oracle Database - Enterprise Edition - Version 11.2.0.1 and later

Source windows
create pfile='<>' from spfile. 
SQL>Shutdown immediate ;
SQL>Startup mount ;
RMAN> backup database format 'D:BAKfull_%U'; ----Full backup
RMAN> backup current controlfile format 'd:akcontrol_%U'; --Controlfile backup

target linux
SQL> startup nomount pfile='/u01/oradata/ORCL/initORCL.ora'; 
RMAN> restore controlfile from '<backup location>/CONTROL_A7R4O1B4_1_1';
RMAN> sql 'alter database mount';
RMAN> crosscheck backup;  
RMAN> delete expired backup;
RMAN> catalog backuppiece '<backup location>/FULL_*****0_1_1';
RMAN> run {
set newname for database to '/u01/oradata/ORCL/datafile_%U';
restore database;
};
RMAN> switch database to copy;  
SQL> alter database open resetlogs upgrade;
!!!核心内容是一致性关库,mount状态进行备份! 目标端resetlogs open打开db,会对日志文件重新格式化