2008年(239)
分类: Oracle
2008-06-17 22:37:56
由于数据库使用的磁盘介质遭到破坏,数据库中的全部或者部分数据无法读取,就需要使用数据库的备份、日志信息,来恢复遭受破坏的数据,使数据库处于一致状态,这就是介质恢复。
相对于崩溃恢复,介质恢复由用户执行,对系统的影响更大,需要花费的时间更长,操作更复杂。这就对用户提出了很高的要求。有时候不正确的命令使用、不正确的数据库备份和恢复方式选择,都可能造成意想不到的后果。在需要介质恢复时,用户必须要慎重考虑。
数据库使用的日志归档模式、备份方式,决定了可使用的介质恢复方式。
1. 非归档日志模式下的介质恢复
在数据库的非归档日志模式下,只能执行数据库的脱机完整备份。使用脱机备份恢复数据库,只能将数据库恢复到备份操作执行的那一时刻。从备份操作到故障发生这一期间内,所有的更新处理全部丢失,用户必须手工、重新执行这些操作。数据库的这种日志使用模式,备份和恢复处理相对比较简单,适合仅用于查询、开发测试环境或者有很少更新处理的数据库系统。
2. 归档日志模式下的介质恢复
大多数生产环境都使用数据库的归档日志模式。在此模式下,可以使用多种方式备份数据库。使用数据库备份和日志文件,我们可以将数据库恢复到故障发生的那一时刻。在恢复操作执行时,整个处理过程需要经过两个阶段:
(1)使用数据库备份,重构数据库,将数据库复原到备份操作执行时刻的状态。
(2)使用日志文件,重新执行已提交事务,回滚未完成事务。
根据故障原因和用户的实际情况,可以在第二阶段使用全部或者部分日志文件。依据第二阶段对日志文件的使用,我们可以进一步将介质恢复划分为完整恢复和不完整恢复。
3. 归档日志模式下的完整恢复
归档日志模式下的完整恢复,就是在介质恢复的第二个阶段,使用所有的日志文件,使所有已提交事务重新执行,而回滚所有未完成的事务,从而将数据库恢复到故障发生的那一时刻。
数据库的完整恢复,可以基于整个数据库进行,也可以基于单个表空间、数据文件进行。如果只是数据库中的单个或者多个表空间、数据文件遭到破坏,就可以只针对被破坏表空间、数据文件进行恢复。相对于整个数据库的恢复,这种恢复所需时间少,而且在恢复时不影响用户访问数库库的其余部分。
4. 归档日志模式下的不完整恢复
归档日志模式下的不完整恢复,就是在介质恢复的第二个阶段,仅仅使用部分日志文件,将数据库恢复到备份操作之后、故障发生之前的某一个时刻。
大多数情况下,我们需要对被损坏的数据库执行完整恢复。然而在下列情况下,数据库的不完整恢复就是必要的:
(1)当前处于活动状态的日志文件丢失或者被破坏。
(2)数据库恢复需要的被归档日志文件丢失或者被破坏。
(3)用户执行了错误的操作,删除或者更改了重要表中的数据,需要将数据库恢复到该误操作执行前的状态。
在不完整恢复处理时,用户可以明确指定要使用的日志文件;也可以指定一个时间点,由系统来决定将数据库恢复到这个时间点需要使用的日志文件。另外,为保证数据库的一致性,用户只能对整个数据库进行不完整恢复。基于单个表空间、数据文件上的不完整恢复是不允许的。