redo log 与 undo log这两个概念的区别

redo log 与 undo log这两个概念的区别

ID:17945819

大小:93.59 KB

页数:9页

时间:2018-09-11

redo log 与 undo log这两个概念的区别_第1页
redo log 与 undo log这两个概念的区别_第2页
redo log 与 undo log这两个概念的区别_第3页
redo log 与 undo log这两个概念的区别_第4页
redo log 与 undo log这两个概念的区别_第5页
资源描述:

《redo log 与 undo log这两个概念的区别》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、REDOLOG与UNDOLOG这两个概念的区别--转载转自:[url]http://www.cnblogs.com/jonescheng/archive/2008/05/08/1189063.html[/url]redolog重做日志/undolog撤消日志重做日志:每当有操作执行前,将数据真正更改时,先前相关操作写入重做日志。这样当断电,或者一些意外,导致后续任务无法完成时,系统恢复后,可以继续完成这些更改撤消日志:当一些更改在执行一半时,发生意外,而无法完成,则可以根据撤消日志恢复到更改之前的壮态网上找到一些解说:以便以后自己参考有两个概念:前滚与回退比如某一时刻数据库DOWN机了,有

2、两个事务,一个事务已经提交,另一个事务正在处理数据库重启的时候就要根据日志进行前滚及回退,把已提交事务的更改写到数据文件,未提交事务的更改恢复到事务开始前的状态。redo-->undo-->datafileinsert一条记录时,表跟undo的信息都会放进redo中,在commit或之前,redo的信息会放进硬盘上.故障时,redo便可恢复那些已经commit了的数据.redo->每次操作都先记录到redo日志中,当出现实例故障(像断电),导致数据未能更新到数据文件,则数据库重启时须redo,重新把数据更新到数据文件undo->记录更改前的一份copy,但你系统rollback时,把这份c

3、opy重新覆盖到原来的数据redo->记录所有操作,用于恢复(redorecordsallthedatabasetransactionusedforrecovery)undo->记录所有的前印象,用于回滚(undoisusedtostoreuncommiteddatainforusedforrollback)redo->已递交的事务,实例恢复时要写到数据文件去的undo->未递交的事务.redo的原因是:每次commit时,将数据的修改立即写到onlineredo中,但是并不一定同时将该数据的修改写到数据文件中。因为该数据已经提交,但是只存在联机日志文件中,所以在恢复时需要将数据从联机日志

4、文件中找出来,重新应用一下,使已经更改数据在数据文件中也改过来!undo的原因是:在oracle正常运行时,为了提高效率,加入用户还没有commit,但是空闲内存不多时,会由DBWR进程将脏块写入到数据文件中,以便腾出宝贵的内存供其它进程使用。这就是需要UNDO的原因。因为还没有发出commit语句,但是oracle的dbwr进程已经将没有提交的数据写到数据文件中去了。undo也是也是datafile,可能dirtybuffer没有写回到磁盘里面去。只有先redoapply成功了,才能保证undodatafile里面的东西都是正确的,然后才能rollback做undo的目的是使系统恢复到系

5、统崩溃前(关机前)的状态,再进行redo是保证系统的一致性.不做undo,系统就不会知道之前的状态,redo就无从谈起所以instancecrashrecovery的时候总是先rollforward,再rollbackundo回退段中的数据是以“回退条目”方式存储。回退条目=块信息(在事务中发生改动的块的编号)+在事务提交前存储在块中的数据在每一个回退段中oracle都为其维护一张“事务表”在事务表中记录着与该回退段中所有回退条目相关的事务编号(事务SCN&回退条目)redo重做记录由一组“变更向量”组成。每个变更变量中记录了事务对数据库中某个块所做的修改。当用户提交一条commit语句时

6、,LGWR进程会立刻将一条提交记录写入到重做日志文件中,然后再开始写入与该事务相关的重做信息。#事务提交成功后,Oracle将为该事备生成一个系统变更码(SCN)。事务的SCN将同时记录在它的提交记录和重做记录中。commit提交事务前完成的工作:·在SGA区的回退缓存中生成该事务的回退条目。在回退条目中保存有该事务所修改的数据的原始版本。·在SGA区的重做日志缓存中生成该事务的重做记录。重做记录中记载了该事务对数据块所进行的修改,并且还记载了对回退段中的数据块所进行的修改。缓存中的重做记录有可能在事务提交之前就写入硬盘中。·在SGA区的数据库缓丰中记录了事务对数据库所进行的修改。这些修改

7、也有可能在事务提交之前就写入硬盘中。提交事务时完成的工作:·在为该事务指定的回退段中的内部事务表内记录下这个事务已经被提交,并且生成一个惟一的SCN记录在内部事务表中,用于惟一标识这个事务。·LGWR后进进程将SGA区重做日志缓存中的重做记录写入联机重做日志文件。在写入重做日志的同时还将写入该事务的SCN。·Oracle服务进程释放事务所使用的所有记录锁与表锁。·Oracle通知用户事务提交完成。·Oracle将该事务标

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。