暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
Redo
580
64页
4次
2020-06-03
5墨值下载
7 重做(redo
重做(redo)和撤消(Undo)是 Oracle 的重要特性,用以保证事务的可恢复性和回退
性。本章对 Oracle 的重做机制进行说明。
7.1 Redo 的作用
Oracle 通过 redo 来保证数据库的事务可以被重演,从而使得在故障之后,数据可以被恢
复。Redo 对于 Oracle 数据库来说至关重要。
在数据库中,Redo 的功能主要通过个组件来实现:Redo Log Buffer LGWR 后台进程
Redo Log File(在归档模式下,Redo Log File 最终经由 ARCn 进程写出为归档日志文件)
7-1 Oracle 的数据库实例示意图,Redo Log Buffer 以及 LGWR 进程在图中皆有体现:
7-1
Redo Log Buffer 位于 SGA 之中,是一块循环使用的内存区域。其中保存数据库变更的相
关信息。这些信息以重做条目(Redo Entries形式存储Redo Entries 也经常被称为 Redo
records Redo Entries 包含重构、重做数据库变更的重要信息,这些变更包括
INSERT,UPDATE,DELETE,CREATE,ALTER 或者 DROP 。在必要的时候 Redo Entries 被用
于数据库恢复。
Redo Entries 的内容被 Oracle 数据库进程从用户的内存空间PGA复制到 SGA 中的 Redo
书名书名书名书名书名书名书名书名书名书名书名书名书名书名
·2·
Log Buffer 之中。Redo Entries 在内存中占用连续的顺序空间,由于 Redo Log Buffer 是循环使
用的,Oracle 通过一个后台进程 LGWR 不断的把 Redo Log Buffer 的内容写出到 Redo Log File
中,Redo Log File 同样是循环使用的。 7-2 说明了 Redo Log BufferLGWR 以及 Redo Log File
三者之间的关系。
7-2
7.2 Redo 的原理
通过前面的章节,我们已经知道,用户数据通常在 Buffer Cache 中修改,Oracle 通过高速
缓存来提高数据操作的性能。当用户在 Buffer Cache 中修改数据时,Oracle 并不会立即将变
数据写出到数据文件上因为独立的离散写出效率会很低到目前为止,计算机系统中最
容易出现瓶颈的仍然是磁盘的 I/O 操作,Oracle 这样做的目的是为了减少 IO 压力修改
过的数据达到一定数量之后,可以进行高效地批量写出
大部分传统数据库(当然包括 Oracle)在 no-force-at-commit 策略。
也就是说,在提交时并不强制写。那么为了保证数据在数据库发生故障时(例如断电)可以恢复,
Oracle 引入了 Redo 机制,通过连续的、顺序的日志条目的写出将随机的、分散的数据块的写
出推延。这个推延使得数据的写出可以获得批量效应等性能提升。
Redo Log Buffer 类似,Redo Log File 也是循环使用的,Oracle 允许使用最少两个日志
组。缺省的,数据库创建时会建立 3 个日志组。
SQL> select group#,members,status from v$log;
GROUP# MEMBERS STATUS
of 64
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜