Oracle ORA-10588 与 RECOVER DATABASE…ALLOW n CORRUPTION

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]

 

 

ORA-10588
oerr ora 10588
10588, 00000, "Can only allow 1 corruption for normal media/standby recovery"
// *Cause:  The number specified in the ALLOW n CORRUPTION option is too big.
// *Action: change to allow zero or one corruption.


 

 

适用于:

Oracle Server – Enterprise Edition – 版本:9.2.0.1 到11.2.0.2 – 版本:9.2到11.2
本文信息适用于任何平台。

症状

在数据库中(数据块/重做日志)有损坏,且由于一个或多个损坏的数据块或重做块,恢复无法继续。 一个常见错误是ORA-00600 [3020] ,称为Stuck Recovery。

DBA运行RECOVER DATABASE TEST来确定alert.log中报告的块数,即如果使用ALLOW…CORRUPTION 子句执行恢复将会损坏的块。

已知会在恢复期间损坏的块大于 1 (如10),且DBA 决定恢复数据库并使执行块损坏。

但是,当DBA 运行RECOVER 与ALLOW 10 CORRUPTION,它失败显示以下:
SQL> recover database using backup controlfile allow 10 corruption ;

ORA-10588: Can only allow 1 corruption for normal media/standby recovery
所以DBA 需要对所有块重复运行RECOVER…ALLOW 1 CORRUPTION ,因为当命令在损坏1个块后找到下一个要损坏块时,命令会结束。

这是繁琐和费时的,特别是当好多个块被损坏和DBA决定让它们被损坏。

原因

在10.2及以前版本中有ALLOW n CORRUPTION 的限制。

10.2的文档:

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_1004.htm#sthref3304

ALLOW … CORRUPTION

ALLOW integer CORRUPTION 子句使你在日志文件损坏的事件中指定使恢复继续可以容忍的损坏块数。

当你在测试恢复时使用该子句(即与TEST 子句结合),其整数可以超过1。当在正常恢复时使用该子句时,整数不能超过1。

 

解决方案

  • 在10.2 和以前版本中,上述是记录的限制。因此,我们无法在ALLOW n CORRPUTION中给出大于1 的值。

 

  • 但是,从11g起,该限制被提升。我们可以在ALLOW n CORRUPTION子句中使用大于1的值。

 

SQL> recover database using backup controlfile allow 10 corruption ;
ORA-00279: change 10197334 generated at 08/05/2011 12:55:30 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/PRD1121/archivelog/2011_09_01/o1_mf_1_241_%u
_.arc
ORA-00280: change 10197334 for thread 1 is in sequence #241

 

注:
虽然在11gR1文档中提到了ORA-10588,但即使在11gR1中这也是更长的限制。此外,该错误 (ORA-10588) 已从11gR2 及以上的文档中被删除。


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *