<P></P><P>Applies to: Oracle Server - Enterprise Edition - Version: 8.1.7 to 10.2 This problem can occur on any platform. Symptoms - 执行不完全恢复,在最后会出现错误 recover automatic database until cancel using backup controlfile; ORA-00283: recovery session canceled due to errors ORA-19909: datafile 1 belongs to an orphan incarnation ORA-01110: data file 1: '/u67/oradata/SUREXP/system01.dbf‘ 下面全部出现在警告日志里: Media Recovery Start Warning: Recovery target destination is in a sibling branch of the controlfile checkpoint. Recovery will only recover changes to datafiles. Fri May 16 13:14:36 2008 Media Recovery failed with error 19909 ORA-283 signalled during: ALTER DATABASE RECOVER automatic database until cancel using backup controlfile Changes 数据库已经被升级,控制文件从为升级之前的备份中恢复 Cause 控制文件中的备份的文件的信息被错误列出,换句话说,还原的是控制文件的旧的副本(升级之前),控制文件中显示的incarnation是1,而实际的数据文件的incarnation 是 2,因此出现了不匹配的问题。 可以通过下面的查询确认这种情况: -- Gather Information for RECOVERY -- -- Spooled outputfile: recover.lst set pagesize 20000 set linesize 1000 set pause off set serveroutput on set feedback on set echo on set numformat 999999999999999 Spool recover.lst show parameter pfile; archive log list; select * from v$backup; select file#, status, substr(name, 1, 70) from v$datafile; select distinct checkpoint_change# from v$datafile_header; -- select status, resetlogs_change#, resetlogs_time, checkpoint_change#, to_char(checkpoint_time, 'DD-MON-YYYY HH24:MI:SS') as checkpoint_time, count(*) from v$datafile_header group by status, resetlogs_change#, resetlogs_time, checkpoint_change#, checkpoint_time order by status, checkpoint_change#, checkpoint_time ; -- select substr(name,1,60), recover, fuzzy, checkpoint_change#, resetlogs_change#, resetlogs_time from v$datafile_header; select name, open_mode, checkpoint_change#, ARCHIVE_CHANGE# from v$database; select GROUP#,THREAD#,SEQUENCE#,MEMBERS,ARCHIVED,STATUS,FIRST_CHANGE# from v$log; select GROUP#,substr(member,1,60) from v$logfile; select * from v$log_history; select * from v$recover_file; select * from v$recovery_log; select HXFIL File_num,substr(HXFNM,1,70) File_name,FHTYP Type,HXERR Validity, FHSCN SCN, FHTNM TABLESPACE_NAME,FHSTA status ,FHRBA_SEQ Sequence from X$KCVFH; select hxfil FileNo,FHSTA status from x$kcvfhall; spool off 以上的输出将会显示incarnation 的值是不匹配的 Solution 我们除了重建控制文件别无他法,其他任何的方法针对这种情况都不会是有效地解决方案; 1、 先装载实例,获得重建控制文件的脚本文件 sql> startup mount .. sql> alter database backup controlfile to trace ; 这样将会在“udump”目录下产生一个跟踪文件,确认后执行创建控制文件的脚本来创建控制文件 see also Reference: ---------- Note:1012929.6 How to Recreate the Controlfile(查看Note:1012929.6 了解如何创建控制文件) 2、 当有了新创建的控制文件再尝试open database resetlogs,并检查所有的数据文件是否在线 sql> reocver database until cancel using backup controlfile apply all logs needed sql> alter databse open resetlogs ; Errors ORA-1110; ORA-19909; ORA-283</P><P></P>
|