暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle异常恢复第7讲 - redo的写入机制和原理

233

接下来的3节的主要内容是给大家介绍,redo的写入是如何完成的,以及相关的原理分析。了解这些原理不仅仅对于深入学习理解Oracle有极大的帮助,对于我们转型到国产数据库方面也是有益的,我之前就利用类似方法发现了达梦数据库的几个问题。

这里仍然给大家共享一下之前的大纲:

我们都知道,在oracle数据库中,redo扮演着一个重要的角色(实际上任何关系型数据库都有类似的概念),包括我们在进行数据库恢复时,比如实例恢复,就涉及到redo。

那么,redo写入是如何来实现的呢?这其实是一个相当复杂的过程,但是我会尽可能用简洁的语言告诉大家。

首先开始之前,我们需要来了解一个基本的概念:

1. 理解oracle事务的的几个原则:ACID

原子性(Atomicity)

一致性(Consistency)    --涉及到一致性读,后面章节我会详细讲解

隔离性(Isolation,又称独立性)

持久性(Durability)

在这里,我主要描述下最后一个,持久性:

比如在这些场景中:某些数据块被某些事务修改了,在被写入到disk上之前,如何发送内存错误?或者软件错误?甚至是主机出现错误比如reboot了。针对这些场景,那么如何去保证用户已经commit的数据不丢?这就oracle为什么引入这个持久性。那么持久性是如何定义的呢 ?

实际上就是当oracle知道事务已经commit后,必须保证你commit后的数据是永久可用的。当然,如果说你redo损坏了,或者数据文件损坏了,那就另当别论了。这里主要是针对比如内存错误等之类问题。

那么oracle是如何通过哪几方面来实现这个持久性的呢 ?

文章转载自Roger的数据库专栏,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论