Oracle_Undo与Redo的通俗
Oracle_Undo与Redo的通俗 Oracle中的Undo和Redo是两个非常重要的概念,它们都是Oracle数据库中事务管理和恢复机制的关键组件。Undo和Redo都是为了确保数据库的一致性和可靠性。 什么是REDO? REDO记录transaction logs,分为online和archived。REDO的主要目的是为了恢复数据库到失败点,以便在发生故障时能够快速恢复数据库。例如,机器停电后,需要使用online redo logs来恢复系统到失败点;磁盘坏了,需要使用archived redo logs和online redo logs来恢复数据;truncate一个表或其他操作,需要使用REDO来恢复到之前的状态。 什么是UNDO? UNDO是为了撤销你做的操作,例如你执行了一个TRANSACTION,但是执行失败了或你自己后悔了,则需要使用ROLLBACK命令回退到操作之前。ROLLBACK是在逻辑层面实现的,而不是物理层面,因为在一个多用户系统中,数据结构、blocks等都在时时变化。如果你想ROLLBACK,那么显然物理上撤销是不可能的,因为这会影响其他用户的操作。所以,ROLLBACK是逻辑上回滚,例如对INSERT来说,那么ROLLBACK就是DELETE。 COMMIT和ROLLBACK的区别 COMMIT和ROLLBACK是两个相反的操作。COMMIT是将事务提交到数据库,而ROLLBACK是撤销事务。COMMIT的时间和TRANSACTION的大小无关,但是ROLLBACK的时间和TRANSACTION的大小有直接关系,因为ROLLBACK必须物理上恢复数据。 UNDO表空间 UNDO表空间用于存放UNDO数据。当执行DML操作时,Oracle会将这些操作的旧数据写入UNDO段。管理UNDO数据不仅可以使用回滚段,还可以使用UNDO表空间。 UNDO数据的作用 UNDO数据的作用是当用户执行DML操作修改数据时,UNDO数据被存放在UNDO段,而新数据则被存放到数据段中,如果事务操作存在问题,就需要回退事务,以取消事物变化。例如,执行完UPDATE语句后,发现应该修改雇员的工资,而不是之前的值,那么需要执行ROLLBACK语句。 读一致性 读一致性是指用户检索数据时,Oracle总是使用户只能看到被提交过的数据。这是由Oracle自动提供的。当用户修改数据,但是没有提交时,另外一个用户使用SELECT语句查找该值时,该值就是从undo表空间中取得的。 事务恢复 事务恢复是例程恢复的一部分,它是由Oracle Server自动完成的。如果在数据库运行过程中出现故障,那么当启动Oracle Server时,后台进程SMON会自动执行例程恢复。执行例程恢复时,Oracle会重做所有未应用的记录。然后打开数据库,回退未提交事务。 倒叙查询 倒叙查询用于取得某一特定时间点的数据库数据。 UNDO_MANAGEMENT 使用初始化参数用于指定UNDO数据的管理方式。如果使用自动管理模式,必须设置该参数为AUTO,此时采用UNDO表空间管理UNDO数据;如果使用手工管理模式,必须设置该值为MANUAL,此时采用回滚段管理UNDO数据。
- 粉丝: 1
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助