首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Oracle redo undo commit rollback辨析

2012-07-05 
Oracle redo undo commit rollback剖析?在oracle工作期间,LGWR并非缓存着你所做的所有工作;实际上,随着你

Oracle redo undo commit rollback剖析

?

在oracle工作期间,LGWR并非缓存着你所做的所有工作;实际上,随着你的工作的进行,LGWR会在后台曾量式地刷新输出重做日志缓冲区的内容到在线重做日志文件中,这样做是为了避免COMMIT等待很长时间来一次性刷新输出所有的redo。直到commit执行,LGWR才将所有余下的缓存重做日志条目写至磁盘,并把SCN记录到在线重做日志文件中。这一部就是真正的COMMIT,此时事务条目会从V$TRANSACTION中删除,这说明我们已经提交。

rollback?回退事务完成的工作:?
·Oracle通过使用回退段中的回退条目,撤销事务中所有SQL语句对数据库所做的修改。?
·Oracle服务进程释放事务所使用的所有锁?
·Oracle通知事务回退成功。?
·Oracle将该事务标记为已完成?

举个例子:?
insert into a(id) values(1);(redo)?
这条记录是需要回滚的。?
回滚的语句是delete from a where id = 1;(undo)?

试想想看。如果没有做insert into a(id) values(1);(redo)?
那么delete from a where id = 1;(undo)这句话就没有意义了。?

现在看下正确的恢复:?
先insert into a(id) values(1);(redo)?
然后delete from a where id = 1;(undo)?
系统就回到了原先的状态,没有这条记录了。

热点排行