在恢复期间ORA-1547 & ORA-1194错误诊断
适用于:
Oracle Server - Enterprise Edition - Version: 9.0.0 to 10.2.0
Information in this document applies to any platform.
目标:
下面的记录提供了一个ORA-1157和ORA-1194的例子并且如何去解决它。
错误信息描述
ORA 1157
文本:警告:RECOVER成功但是OPEN RESETLOGS将报错
——————
原因:后台进程不能找到其中一个数据文件。数据库将禁止访问该文件但是其他文件将不受影响。
但是,数据库打开的第一个实例将需要访问所有在线的数据文件。
操作系统的相关信息将描述为何找不到该文件。
ORA 1194
文本:文件需要更多的恢复来实现一致性
————
原因:一个不完全恢复会话开始了,但是重做日志的数量不足以应用到保持文件一致性。
命名文件并没有完全关闭当它被数据库最后一个打开的时候。
最可能的原因是该信息在不完全恢复之前从一个备份恢复文件时候被忽略
解决方案
在进行如下的恢复尝试时,通常会同时收到错误ORA-1157 和 ORA 1194
SQL> recover database using backup controlfile until cancel
ORA-00279: change 2008250 generated at 06/07/2007 11:50:32 needed for thread 1
ORA-00289: suggestion :
/recovery_area/V102/archivelog/2007_06_07/o1_mf_1_2_%u_.arc
ORA-00280: change 2008250 for thread 1 is in sequence #2
Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 3 needs more recovery to be consistent
ORA-01110: data file 3: '/oradata/V102/sysaux01.dbf'
Following this error message issue the following SQL command, you will most commonly find at least one datafile which is in FUZZY mode.
SQL> select file#,STATUS, FUZZY from v$datafile_header;
FILE# STATUS FUZ
-------- ------------ ------
1 ONLINE NO
2 ONLINE NO
3 ONLINE YES
4 ONLINE NO
该例子在file#3中可以找到。
这时候最好的解决方案是应用更多的归档日志为了使数据文件摆脱 FUZZY 模式。
在很多情况下恢复会话可能需要一个没有被生成的归档日志。这个原因可能是恢复子句里面包含了“using backup controlfile”
如果在这种情况下,你需要应用当前在线的重做日志来完成恢复:
该命令将返回当前在线的重做日志。
SQL> select member from v$logfile lf , v$log l where l.status='CURRENT' and lf.group#=l.group#;
then proceed to issue:
SQL> recover database using backup controlfile until cancel;
当恢复会话提示需要一个以上指定在线的重做日志,并单击ENTER。这将完成恢复并且你将可以打开数据库
SQL> alter database open resetlogs;
注意:
如果应用所有的归档日志之后和在线重做日志之后,数据库仍旧打不开,请提供以下的脚本输出给ORACLE支持来协助恢复(请上传 recovery_info.txt)
set pagesize 20000
set linesize 180
set pause off
set serveroutput on
set feedback on
set echo on
set numformat 999999999999999
Spool recovery_info.txt
select substr(name, 1, 50), status from v$datafile;
select substr(name,1,40), recover, fuzzy, checkpoint_change# from v$datafile_header;
select GROUP#,substr(member,1,60) from v$logfile;
select * from v$recover_file;
select distinct status from v$backup;
select hxfil FILENUMBER,fhsta STATUS,fhscn SCN,fhrba_Seq SEQUENCE from x$kcvfh;
select distinct (fuzzy) from v$datafile_header;
spool off
exit
显示相关信息
产品
* Oracle Database Products > Oracle Database > Oracle Database > Oracle Server - Enterprise Edition
关键词
ORA-1110; ORA-1157; ORA-1194; ORA-1547; ORA-279; ORA-280; ORA-289
Errors
ORA-01194; ORA-01547; ORA-1110; ORA-1157; ORA-1194; ORA-1547; ORA-279; ORA-280; ORA-289