Chinaunix首页 | 论坛 | 博客
  • 博客访问: 435455
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类: Oracle

2008-06-17 22:37:56

介质恢复

由于数据库使用的磁盘介质遭到破坏,数据库中的全部或者部分数据无法读取,就需要使用数据库的备份、日志信息,来恢复遭受破坏的数据,使数据库处于一致状态,这就是介质恢复。

相对于崩溃恢复,介质恢复由用户执行,对系统的影响更大,需要花费的时间更长,操作更复杂。这就对用户提出了很高的要求。有时候不正确的命令使用、不正确的数据库备份和恢复方式选择,都可能造成意想不到的后果。在需要介质恢复时,用户必须要慎重考虑。

数据库使用的日志归档模式、备份方式,决定了可使用的介质恢复方式。

 

1. 非归档日志模式下的介质恢复

 

在数据库的非归档日志模式下,只能执行数据库的脱机完整备份。使用脱机备份恢复数据库,只能将数据库恢复到备份操作执行的那一时刻。从备份操作到故障发生这一期间内,所有的更新处理全部丢失,用户必须手工、重新执行这些操作。数据库的这种日志使用模式,备份和恢复处理相对比较简单,适合仅用于查询、开发测试环境或者有很少更新处理的数据库系统。

 

2. 归档日志模式下的介质恢复

 

大多数生产环境都使用数据库的归档日志模式。在此模式下,可以使用多种方式备份数据库。使用数据库备份和日志文件,我们可以将数据库恢复到故障发生的那一时刻。在恢复操作执行时,整个处理过程需要经过两个阶段:

1)使用数据库备份,重构数据库,将数据库复原到备份操作执行时刻的状态。

2)使用日志文件,重新执行已提交事务,回滚未完成事务。

根据故障原因和用户的实际情况,可以在第二阶段使用全部或者部分日志文件。依据第二阶段对日志文件的使用,我们可以进一步将介质恢复划分为完整恢复和不完整恢复。

 

3. 归档日志模式下的完整恢复

 

归档日志模式下的完整恢复,就是在介质恢复的第二个阶段,使用所有的日志文件,使所有已提交事务重新执行,而回滚所有未完成的事务,从而将数据库恢复到故障发生的那一时刻。

数据库的完整恢复,可以基于整个数据库进行,也可以基于单个表空间、数据文件进行。如果只是数据库中的单个或者多个表空间、数据文件遭到破坏,就可以只针对被破坏表空间、数据文件进行恢复。相对于整个数据库的恢复,这种恢复所需时间少,而且在恢复时不影响用户访问数库库的其余部分。

 

4. 归档日志模式下的不完整恢复

 

归档日志模式下的不完整恢复,就是在介质恢复的第二个阶段,仅仅使用部分日志文件,将数据库恢复到备份操作之后、故障发生之前的某一个时刻。

大多数情况下,我们需要对被损坏的数据库执行完整恢复。然而在下列情况下,数据库的不完整恢复就是必要的:

1)当前处于活动状态的日志文件丢失或者被破坏。

2)数据库恢复需要的被归档日志文件丢失或者被破坏。

3)用户执行了错误的操作,删除或者更改了重要表中的数据,需要将数据库恢复到该误操作执行前的状态。

在不完整恢复处理时,用户可以明确指定要使用的日志文件;也可以指定一个时间点,由系统来决定将数据库恢复到这个时间点需要使用的日志文件。另外,为保证数据库的一致性,用户只能对整个数据库进行不完整恢复。基于单个表空间、数据文件上的不完整恢复是不允许的。

阅读(646) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~