16.6 如何对坏块进行恢复

在实际的生产系统中,一种常见的故障是磁盘中有坏块,当用户进程访问这些位于坏块中的数据时,就会出错。利用RMAN工具,不仅可以对整个数据文件进行恢复,还可以恢复数据文件中的坏块。

16.6.1 什么叫块介质恢复

块介质恢复是指对数据文件中单个数据块所进行的恢复。与恢复数据文件、恢复表空间、恢复整个数据库相比,块介质恢复有两个好处,一是只需要恢复少数几个数据块,恢复的时间大大减少。二是数据文件仍然可以处于ONLINE状态,用户仍然可以访问数据文件中的其他数据块。

数据库服务器在第一次发现一个数据块损坏时,便把这个数据块标记为损坏,并记录下来。对这个数据块随后进行的访问都将失败,直到这个块被恢复。数据块损坏的情况有两种,一种叫做物理损坏,另一种叫做逻辑损坏。其中物理损坏也叫介质损坏,指的是数据库服务器无法识别数据块的情况,比如数据块的校验和无效,数据块中包含全0,或者数据块的头部数据无效等。逻辑损坏指的是数据块的校验和、头部信息都是有效的,但是数据块的内容在逻辑上不一致。

在下列情况下,数据库服务器将发现一个数据块是损坏的:

·在利用RMAN对数据库进行备份时。

·通过ANALYZE命令对表进行分析时。

·通过dbv工具对数据文件进行校验时。

·通过SQL命令访问数据文件时。

如果发现一个数据块损坏,就需要对其进行恢复。块介质恢复需要满足以下条件:

·数据库的日志模式必须是归档模式,而且数据库服务器的状态是OPEN或MOUNT。

·对数据库必须进行过0级或FULL备份,且备份文件是可用的。

·数据库的Flashback功能必须是ENABLED。

·数据库的归档日志必须是保留完整的。