暂无图片
Oracle中的redo和undo如何协作?
我来答
分享
三阳
2022-12-14
Oracle中的redo和undo如何协作?

Oracle中的redo和undo如何协作?

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新

从概念上讲,undo与redo相对。redo用于在失败时重放事务(即恢复事务),undo则用于取消一条语句或一组语句的作用。与redo不同,undo存储在数据库内部一组特殊的段中,称为undo段。

尽管undo信息存储在undo表空间和undo段中,但它也会受到redo的保护,即数据库把undo当成是表数据或索引数据一样处理,对undo的修改会生成一些redo,这些redo将记入日志缓冲区进而写到日志文件中。

暂无图片 评论
暂无图片 有用 0
暂无图片
风车
2022-12-15
对undo的修改会生成一些redo,undo信息存储在undo表空间和undo段中,但它也会受到redo的保护。
szrsu
2022-12-15
都是大佬,学习了。。。。。。。。。。。。。。。
ora_221
测试一下
暂无图片 评论
暂无图片 有用 0
尚雷

REDO是为了重新实现你的操作,而UNDO相反,是为了撤销你做的操作,比如你得一个TRANSACTION执行失败了或你自己后悔了,则需要用ROLLBACK命令回退到操作之前。回滚是在逻辑层面实现而不是物理层面,因为在一个多用户系统中,数据结构,blocks等都在时时变化,比如我们INSERT一个数据,表的空间不够,扩展了一个新的EXTENT,我们的数据保存在这新的EXTENT里,其它用户随后也在这EXTENT里插入了数据,而此时我想ROLLBACK,那么显然物理上讲这EXTENT撤销是不可能的,因为这么做会影响其他用户的操作。所以,ROLLBACK是逻辑上回滚,比如对INSERT来说,那么ROLLBACK就是DELETE了。

暂无图片 评论
暂无图片 有用 1
watson
2022-12-15
undo /redo在数据库中使用的场景也场景。
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏