惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
腾讯CDC
D
Docker
G
Google Developers Blog
D
DataBreaches.Net
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
The Cloudflare Blog
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
量子位
美团技术团队
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - pipisong

Caused by: org.apache.catalina.LifecycleException错误的处理 (转帖)HTTP协议 (转帖)网站微信登录-python 实现 (转帖)工程師的缺德行為:叫朋友去學C/C++ (转帖)修改 Linux 主机名 (转帖)oracle 10g中的几个概念(sid/db_name/server_name) (转帖)rman中改变控制文件的备份路径 (转帖)修改ORACLE自动归档目录 (转帖) oracle是否归档模式及修改模式 硬盘分区表知识——详解硬盘MBR(转) 关于RAID与SCSI的一些基本概念(转) USB安裝XP的方法<转> SATA光驱GHOST系统的解决办法《转帖》 snmputil是个很有意思的东东 更新一下 Windows XP自动登录设置 06年国庆长假最后一天有感 06年6月17日子夜有感 <转贴>使用NTFS的连接点移动Document and Setting
(转帖) Oracle实例恢复(Oracle instance recovery)
pipisong · 2014-03-18 · via 博客园 - pipisong

当数据库实例失败,在下次重新启动时会执行实例恢复。通常实例失败是由于Instance异常关闭或执行了shutdown abort 、startup  force命令导致,实例恢复的工作由SMON进程自动完成,并不需要人工干预。

实例恢复主要经历三个阶段: cache recovery、open database、transaction recovery

数据在写出到数据文件之前,会保存在Buffer cache 中,这些记录的改变会同时记录在在线重做日志(redo log file)中。

那么就存在这种情况,

  • 我们知道数据库写数据并不是离散写的。即,当用户发出commit命令时,只是将重做信息写出到日志文件,可能并没有将数据写出。
  • 当buffer cache没有足够的空间,会将数据写出到数据文件,注意,此时事务可能并没有提交。

第一种情况,如果此时数据库异常关闭,因为我们已经有了redo信息,所以我们按照redo信息,重新构造在数据库崩溃前的buffer cache .这个过程称为 cache recovery ,即前滚。

第二种情况,当事务对数据进行修改时,会首先将修改数据的前镜像保存到回滚段,以便当事物回滚时恢复原来的数据。回滚段不会删除未提交的事物。如果 此时数据库异常关闭,那么我们可以应用回滚段的数据进行恢复,这个过程称为transaction recovery,即回滚。

这里可能还有一个疑问,在数据库崩溃的时候,如果回滚段的数据没有及时写出。我们依然会丢失数据。这个我们不必担心,因为在任何数据修改之前都会在回滚段构造一份之前的拷贝,而这个过程也是需要写入日志的。即,在修改数据之前,回滚段的相关修改已经写入了日志。

总结一下实例恢复的过程:首先将提交的事物前滚,将数据库恢复到实例失败时的状态。然后打开数据库,重新执行提交以及回滚的操作(即,该提交的提交,该回滚的回滚)。