oracle恢复失败,Oracle数据库提供了哪些失败模式下的数据库恢复呢?

本文详细介绍了Oracle数据库在实例失败和介质失败情况下的恢复机制。恢复过程依赖于重做日志,通过前滚和回滚操作确保数据库一致性。实例失败丢失缓存数据,而介质失败涉及数据库文件的恢复。在前滚阶段,重做日志中的变更被应用到数据文件;回滚阶段则撤销未提交的事务。恢复过程在`ALTER DATABASE OPEN`后自动进行,确保数据库的一致性。
摘要由CSDN通过智能技术生成

1。实例失败:丢失了Oracle数据缓存中的数据或者内存中的数据

2。介质失败:丢失了数据库文件

上面两种模式的任一种失败情景,在恢复的时候想要保证数据库一致性,都有一些前提条件必须满足。

虽然恢复的过程有一些共同点,但前提条件的差异使得恢复的执行也有很大差异:

1。

实例恢复:恢复Oracle数据缓存中丢失的数据

2。介质恢复:恢复数据库文件丢失的数据

1。1

实例恢复和介质恢复的共同的机制

实例恢复和介质恢复都依赖重做日志。重做日志由一些重做日志线程组成。单实例环境中重做日志只有一个重做线程,多实例环境中每个实例都有一个重做线程。

一个重做日志线程指的的是一组存放在操作系统上的文件,文件里记录了该实例对数据库的所有变更--已提交的变更和未提交的变更(后者指还存在Oracle数据缓存区中的数据块变更)。因为实例也修改了回滚段中的块,所以回滚段的变更也记录在重做日志线程中。

实例恢复和介质恢复的第一步都是前滚。前滚属于数据库恢复层面的。在前滚的过程中,重做日志中记录的数据变更被重新应用到数据文件中。因为回滚段的变更也记录在重做日志中,所以前滚过程还会重新构建回滚段块。当前滚结束时,重做日志中记录的所有变更都应用到数据文件上了。

此刻,数据块不仅包含了已经提交的数据,也包含了一些未提交的数据。

实例恢复和介质恢复的第二步就是回滚。回滚属于数据库事务层的任务。回滚过程中,回滚段中记录的由前滚导致的未提交的事务所做的修改将被撤销。

1。2

实例失败和恢复,崩溃失败和恢复

实例失败指当实例突然终止时(如因为shutdown abort或主机掉电),实例数据缓存中的内容就都丢失了。

崩溃失败指数据库的所有实例都同时失败。单实例环境中实例失败等同于崩溃失败。崩溃恢复指的是将所有实例都恢复到崩溃前的一致状态。这一切都是在命令alter database open 之后自动进行的,用户无法干预。

实例失败会损害数据库的一致性因为它导致该实例的脏数据丢失。

所谓“脏数据”就是指实例数据缓存中的数据块内容比数据文件上的要新。当实例崩溃时,还没有来得及将脏数据写入到数据文件中。之所以导致存在这个脏数据丢失问题是因为Oracle的缓存管理采用的是有利于事务处理性能的算法而不是有利于防止实例崩溃的。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值