0

0

Oracle恢复内部原理(重做日志)

php中文网

php中文网

发布时间:2016-06-07 16:47:05

|

786人浏览过

|

来源于php中文网

原创

数据库最基础的操作就是以原子的方式修改数据块。前台进程想修改一个或几个数据块时,首先得获取对数据缓冲区中包含该块的缓存的

重做日志描述了对数据块的所有变更。这一节主要描述数据库打开的时候写日志时的一些操作。

系列文章:Oracle恢复内部原理 ?where=nkey&keyword=19824

3.1  原子修改

数据库最基础的操作就是以原子的方式修改数据块。前台进程想修改一个或几个数据块时,首先得获取对数据缓冲区中包含该块的缓存的一个排它访问权限。然后构建改变向量。重做日志缓冲区中分配空间保存重做记录。重做缓冲区位于SGA中,LGWR进程定时将重做日志缓冲区中的重做记录写入到重做日志文件中以释放空间。当重做日志满了的时候,,LGWR就要做日志切换。注意在重做日志缓冲区中分配空间的同时也会在重做日志文件中分配空间。重做日志缓冲区空间分配后前台进程负责构建重做记录,此后才能修改数据缓冲区中的数据块。然后当重做日志缓冲区中的重做记录写到重做文件中才算数据库变更完成。恢复保证重做日志中记录的变更都会应用到数据文件中(除非是不完全恢复)。

3.2  写日志优先

写日志优先是一个缓冲区执行协议,用来协调写脏数据到数据文件中和写重做日志记录到重做日志文件的顺序。根据写日志优先协议,在DBWR进程将脏数据写入到数据文件中之前,LGWR进程必须先将对应的重做日志记录写入到重做日志文件中。

注意,写日志优先协议跟提交时写日志协议是独立的(见3.3)。

同时注意,写日志优先协议只适用于将那些在数据缓冲区中的脏数据写入到数据文件这种情形,不适用于直接路径写(如由直接路径读导致的)。

写日志优先协议保证了数据文件中没有一种变更在重做日志文件中没有记录,不惜以失败为代价。

写日志优先协议还保证了所有数据块都在先写完重做日志并保证能够回滚的情况下才写到磁盘的,使得如果提交失败的时候可以回滚所有修改。这里的重做信息其实就是回滚段的重做信息。

Modoer多功能点评系统1.2.5 Build 20111220 UTF8
Modoer多功能点评系统1.2.5 Build 20111220 UTF8

Modoer 是一款以本地分享,多功能的点评网站管理系统。采用 PHP+MYSQL 开发设计,开放全部源代码。因具有非凡的访问速度和卓越的负载能力而深受国内外朋友的喜爱。在升级前一定要备份好自己的原版本,特别是自己设计了模板和修改了代码的用户。Modoer多功能点评系统 v1.2.5 Build 20111220更新列表修正 安全漏洞和安全隐患增加 后台登陆和SQL错误记录日志修复 若干小BUG

下载

写优先协议在数据库事务层保证事务的原子性起了很大作用。

3.3  事务提交

事务提交时会分配一个SCN并且建立一个包含那个SCN提交的重做日志记录。当事务所有的重做记录(包括commit对应的重做记录)都写到磁盘上的重做日志文件中时,commit过程才算结束。因此commit会强制日志刷新到磁盘上——至少截止到commit的重做记录,这就是通常说的log- force-at-commit。

恢复就是设计成这样,在事务commit的时候只需刷新重做记录到重做日志,而不用刷新该事务修改的所有脏数据,为的是在即使失败的情况下也能保证事务持久性。这就是通常说的no-datablock-force-at-commit。

3.4  线程检查点事件

线程检查点事件发生时,会将该线程的重做记录中SCN小于指定值的重做记录保护的脏数据都刷新到数据文件中。完成后,该线程在控制文件中的线程检查点结构会被更新。

线程检查点事件开始时,首先是得到一个SCN,初始化一个检查点结构。然后该实例的数据缓冲区中所有脏数据都被打上做检查点的标识。DBWR分阶段将这些标识的脏数据写入到数据文件中。当所有脏数据都写入到数据文件中时,检查点结构中的SCN被更新为前面得到的SCN,然后用该检查点更新该线程在控制文件中的检查点记录。

一个线程检查点事件可能会或者不会推进数据库检查点。当只有一个打开的线程时,新的线程检查点也同时是新的数据库检查点。如果有多个打开的线程,并且当前线程就是数据库检查点所联机程,当前线程的检查点事件会推进数据库检查点。因为新的检查点SCN是最近分配的,很有可能比其他打开状态的线程的检查点SCN要大,数据库检查点SCN将推进到新的最小的线程检查点SCN。不过如果当前线程原有检查点不是数据库检查点,那么该线程的检查点事件不会推进数据库检查点。

数据库检查点推进时,每个数据文件头部的检查点计数也会增长。并且,每个数据文件只要不是在热备份中或者没有更高的检查点SCN(如新增的数据文件或者刚恢复的数据文件),数据文件头部的检查点都会推进到跟新的数据库检查点一致,数据文件头将写入磁盘。同时,数据文件在控制文件中的记录的检查点SCN也会更新为新的数据库检查点SCN。

linux

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

2

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

76

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

73

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

67

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

19

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号