介质恢复问题解决
关于用户管理的介质恢复的问题
表 29.4 介质恢复问题
问题 | 描述 |
丢失或错误地命名了归档日志 | 恢复停止,因为数据库不能找到在控制文件中记录的归档日志 |
当打试图开数据库时,返回ORA-1113错误,表明数据文件需要恢复 | 这个错误会因为如下原因而发生: n 正在执行不完全恢复,但是还原所有需要的数据文件的备份的时候失败了. n 在数据文件达到一致的SCN之前,不完全恢复停止了 n 正在从联机备份恢复数据文件,但没有足够的redo被应用来使数据文件一致 n 正在执行控制文件的恢复,并且没有指定需要的联机重做日志的位置 n 在试图打开数据库时,数据文件正在进行介质恢复 n 在执行RECOVER DATABASE命令之前,需要恢复的数据文件没有联机,因此不被恢复. |
Redo记录问题 | 2种可能的情况: n 恢复停止,因为失败的一致性检查,称为stuck recovery问题. 当底层操作系统或存储系统丢失了写,而这个写是在正常的操作过程中由数据库执行的. n 当应用重做日志的时候,数据库发出内部错误信号.这个问题可能是由Oracle的bug引起的。 如果没有使用checksum verfication,则对redo或数据块的损坏也可能引起错误。 |
损坏的归档日志 | 当在存储系统上存储或在存储系统之间拷贝时,日志可能被损坏. 如果DB_BLOCK_CHECKSUM是开启的,则数据库通常会发一个校验错误信号; 如果校验检查被禁用了,则可能出现日志损坏。 |
具有不兼容的并行redo格式的归档日志 | 如果开启了并行redo功能,则数据库以新的格式产生redo。 在版本9.2之前不能检查并行redo的格式,并显示下面的信息: External error 00303, 00000, "cannot process Parallel Redo",说明出现了不一致。 |
损坏的数据块 | 数据文件的备份可能包含损坏的数据块,这些数据块可能是在恢复的过程中或拷贝为备份时损坏的。 如果DB_BLOCK_CHECKSUM被开启,则在正常的操作过程中数据库会计算每个数据块进行校验,并且在写到磁盘之前将校验写到数据块中。当后面数据库读取数据块的时候,它会重新计算校验并和存储的值进行比较。如果不匹配,则数据库会发一个校验错误的信号。如果校验被禁用了,这个问题也能表现为日志损坏。 |
随机问题 | 在恢复过程上发生的内存损坏或其它短暂的问题。 |
介质恢复问题的征兆通常是在恢复的过程中发出的外部或内部信号。
例,一人外部错误表明redo块或数据块校验验证失败。内部错误可以由数据库的bug或底层操作系统或硬件的错误引起。
如果在恢复数据库备份的过程中介质恢复遇到问题,则不管它是一个stuck恢复问题或是一个redo应用的问题,
数据库总是停止,并使数据文件处于一致状态的恢复,即在失败之前的一个一致的SCN。然后可以做:
以只读方式打开数据库,查问问题
n 如果OPEN RESETLOGS的需要已经被满足,使用RESETLOGS选项打开数据库。
n RESETLOGS的限制也会应用到打开物理备用数据库,因为备用数据库是以介质恢复的形式被更新的。
通常以只读方式或使用RESETLOGS选项打开数据库,要求所有联机的数据文件被恢复到相同的SCN,
如果这个需求没有满足,则在你试图打开数据库时,数据库会发出ORA-1113或其它错误。如表 29.4所示
响应发生在下列阶段的介质恢复问题的方法:
1. 尝试识别问题的起因。如果需要的话,运行一个试验性的恢复。
2. 如果问题与丢失重做日志相关,或假设有重做日志、内存、数据块损坏,则尝试使用表 29.5中的方法解决这解问题。
如果不能使用表 29.5中的方法解决问题,则做下列之一:
n 如果正在恢复整个数据库备份,使用RESETLOGS选项打开数据库。
如果已经执行了一系列介质恢复,则数据库包含到损坏发生时的SCN的所有改变,但不包含在这个SCN上发生的改变。
从这个SCN开始向前的改变不会包含在数据库的恢复中。
如果已经还原了联机备份,则只有恢复了在redo流中一直到达ALTER…END BACKUP期间所有的操作之后,
OPEN RESETLOGS才能成功执行。
n 通过允许对损坏的数据块的介质恢复而继续进行介质恢复。在介质恢复结束之后,试着使用RMAN执行块介质恢复。
n 最后的方法就是给Oracle Support Service打电话。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1101383/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17013648/viewspace-1101383/