介质恢复(2)

介质恢复

v$datafile_header.checkpoing_change#和v$datafile.checkpoint_change#来对比判断是否需要介质恢复!

<v$datafile_header.checkpoint_change#小于v$datafile.checkpoint_change#那么需要进行介质恢复>

场景:比如某个数据文件丢失,当我们restore这个数据文件后,数据文件头部记录的checkpoint_chang#信息必然小于控制文件中记录的v$datafile.checkpoint_change#,那么这个时候就需要对当前的数据文件进行介质恢复,从哪里恢复呢,在数据文件头部会记录相应的RBA信息,从这个RBA处开始恢复。(从归档日志-redo日志。一直在追scn)

 

介质恢复是基于物理备份恢复数据,介质恢复技术是Oracle数据库出现介质故障时恢复的重要保障。

介质恢复的过程

介质恢复包括块恢复、数据文件恢复、表空间恢复和整个数据库的恢复。介质恢复主要是针对错误类型中的介质失败,如果是少量的块失败,可以使用介质恢复中的块恢复来快速修复;但如果是其它情况的丢失,根据具体情况,可使用数据文件恢复、表空间恢复甚至全库恢复。

 

介质恢复过程包括还原(RESTORE)和恢复(RECOVER)两个步骤:

 

还原是将某个时间点数据文件的拷贝再拷贝回去,还原后的数据库处于不一致性的状态,或不是最新的状态,还需要执行恢复操作。恢复就是使用归档Redo日志文件和联机Redo日志文件将不一致的数据库应用到一致性状态。如果是完全恢复,数据库就是最新的一致性状态;如果是不完全恢复,数据库是非最新的一致性状态。

| 注意:还原只是建立在数据库备份的基础版本上,例如,如果数据库备份包括0级备份和很多1级备份,还原只是应用0级备份,恢复过程会根据情况自动应用1级备份或Redo日志将数据库恢复到一致性的状态。 |

数据库的恢复过程又分为完全恢复和不完全恢复:

完全恢复

完全恢复是一种没有数据库丢失的恢复方式,能够恢复到最新的联机Redo日志中已提交的数据。在传统恢复方式中,因介质失败破坏了数据文件之后,可以在数据库、表空间和数据文件上执行完全介质恢复。

不完全恢复

不完全恢复是一种与完全恢复相反的恢复方式,是一种丢失数据的恢复方式,也称为数据库时间点恢复。通常情况下,若Flashback Database没有启用或者变得无效,可以执行不完全恢复撤销一个用户错误,不完全恢复不一定在原有的数据库环境执行,可以在测试环境下执行不完全恢复,将找回的数据再重新导入生产库中。对于不完全恢复来说,只能执行整个数据库的恢复,不能执行某个数据文件或表空间的不完全恢复。

不完全恢复根据备份情况恢复到与指定时间、日志序列号和SCN具有一致性的数据,之后的数据都将丢失。执行不完全恢复一方面是因为归档Redo日志、联机Redo日志的丢失不得不执行不完全恢复,另一方面可能是因为在某个时刻错误地操作了数据,过了一段时间之后才发现问题,而其它的恢复手段都无法恢复数据,这时也不得不使用不完全恢复来找回数据。

执行不完全恢复必须从备份中还原所有的数据文件,备份文件必须是要恢复的时间点之前创建的。当恢复完成,使用RESTLOGS选项打开数据库,将重新初始化联机Redo日志,创建一个新的日志序列号流,日志序列号从1开始,RESETLOGS之后的SCN还是在递增。


版权声明:本文为qq_22083251原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。