一、UNDO的使用说明
二、Undo段
在一个进程修改数据库过程中存放旧的数据,包括数据没有修改之前的位置和值。Undo段的头包含了一个事物处理表,表中存放了目前使用undo段事物处理的信息。一个系列的事物处理只使用一个undo段存放undo数据。多个并行事物处理可以同时写入一个undo段。
三、Undo段的作用
1、事务处理rollback
当一个事物处理修改了表中的一行,旧数据的映像就会存放在undo段中。如果事物处理rollback,Oracle Server就使用undo段中值再写回修改行。
2、事物处理恢复
当一个例程失败而还有一些事物处理没有完成,Oracle Server在数据库再次打开的时候就需要将所有没有提交的修改全部undo。这种rollback是事物处理恢复的一部分。由于undo段的修改也会被redo日志文件保护,因此恢复是能够进行的。
3、读取的一致性
当一个事物处理正在运行,其他的用户是不能看到任何这个事物处理没有提交的修改的。另外,在一个查询执行期间的数据改变是不应该显示在这个查询结果当中的。在undo段中的旧的数据(Undo数据)也为用户特定查询提供一个一致的映像。
四、读取的一致性
1、即使其他的事物处理修改了数据,Oracle Server也会保证一个查询看到的数据是一致的。当Oracle Server开始执行一个select查询,它将记录目前系统更改编号(SCN)并且确保这个SCN以后的任何数据修改将不会影响到这个查询结果。比如一个运行时间非常长的查询语句在执行过程中有发生了几个修改,如果一行数据在查询声明以前的修改没有提交,Oracle Server将从undo段中提取没有修改的以前的映像,并构建一个“读取一致”的行映像。
2、事物处理读取一致性
读取的一致性通常是指SQL查询语句。但是也可以通过在紧跟在事物处理声明后使用一下命令来使事物处理的读取也是一致的:
SET TRANSACTION READ ONLY; |
或者可以在事物处理使用DML语句的时候在事物处理前面使用一下命令:
SET TRANSACTION ISOLATION LELVEL SERIALIZABLE; |
使用上述两种方法都可以保证事物处理在数据读取时候的一致性,但是使用SERIALIZABLE参数将影响性能。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
对Oracle Undo与Redo的通俗理解
REDO是为了重新实现你的操作,而UNDO相反,是为了撤销你做的操作,比如你的一个事务执行失败了,则需要用ROLLBACK命令回退到操作之前。
-
浅谈在Oracle中如何利用REDO实现故障恢复(中)
由于Redo机制对于数据的保护,当数据库发生故障时,Oracle就可以通过Redo重演进行数据恢复。那么一个非常重要的问题是,恢复应该从何处开始呢?
-
浅谈在Oracle中如何利用REDO实现故障恢复(上)
在数据库中,Redo的功能主要通过3个组件来实现:Redo Log Buffer、LGWR后台进程和Redo Log File。在归档模式下,Redo Log File最终会写出为归档日志文件。
-
Oracle数据库文件恢复与备份思路(二)
什么是热备份?它有哪些优缺点?如何才能提高Oracle备份的速度?本文主要介绍了热备份定义、它的优点和不足以及提高Oracle备份速度。