OracleUNDO
UNDO作用
- 数据的回滚
- 一致性读
- 表的闪回(事务,查询的闪回....)
- 失败会话的恢复
SQL> rollback; 回滚的过程就是从回滚段里拿到刚刚执行的这条语句产生的回滚,然后应用到以前的数据块上. 回滚的前提是没有commit.一旦提交了,就不能回滚了. 如果网络中断,会话中断,oracle会强制回滚 SQL> insert into t1 values('b'); 1 row created. SQL> select * from t1; X - a b SQL> rollback; Rollback complete. SQL> select * from t1; X - a |
|||||||||||||||
为了保证数据读取的一致性,获取数据的结果是发出sql语句的时间一致。如果数据块上的数据已经被改变了,oracle就会用到回滚. 如:9点01分发出的sql查询,数据在9点03分已经修改了,但是这时候oracle返回的依然是9点01分时候的数据的值,这个值是从回滚段里面读取的.
不小心把表的数据修改了,这是你可以去查询在某个时间数据块的值.
如果会话意外终止,可以使用undo将失败的会话恢复. |
|||||||||||||||
|
Undo的产生
|
|||||||||||||||
|
Undo V.S. Redo
|
|||||||||||||||
|
修改一个数据块时,oracle里纠结做了什么? 1、发出一条SQL语句,将员工1234的工资更新为10,从下面可以看出原来工资为5.
2、ORACLE会从内存里找1234员工的数据块,如果没有内存里没有,就从磁盘上读取数据块到内存中.
3、找回滚段数据块(来装之前的数据),同样,如果内存里面没有,就从回滚段数据文件里读取到内存中.
4、oracle将5这个数据块写到回滚段里.
5.因为我修改了回滚段数据块,产生了undo的redo.
6.将原始数据块从5改为10.
7.原始数据块修改后,产生了本身数据块的redo
|
|||||||||||||||
|
Undo 表空间
SQL> show parameter undo; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO--------------自动管理undo回滚段 undo_retention integer 900--------------undo数据默认保留的时间(过期的数据会被覆盖) undo_tablespace string UNDOTBS1 SQL> select file_name,bytes from dba_data_files where tablespace_Name='UNDOTBS1'; FILE_NAME -------------------------------------------------------------------------------- BYTES ---------- /u01/app/oracle/oradata/gaga01/undotbs01.dbf 78643200 |
|||||||||||||||
|
自动管理回滚段表空间
|
|||||||||||||||
|
Undo 数据的保留时间
|
|||||||||||||||
|
Undo 表空间的损坏
|
OracleUNDO的更多相关文章
随机推荐
- CentOS6.x修改主机名,关闭防火墙
一.centos默认主机名为localhost,不方便管理,此次,我修改为noi. 1.修改网络配置文件:/etc/sysconfig/network 首先,备份一下源文件,注意date命令和加号之间 ...
- HDOJ 4884 & BestCoder#2 1002
TIANKENG’s rice shop Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- windows server 2003下搭建amp环境
参考: http://blog.csdn.net/binyao02123202/article/details/7578914 http://4359260.blog.51cto.com/434926 ...
- qt中执行 sql文件的方法
由于qt中没有原生的执行sql文件的方法.因此我们需要根据sql文件中的流的特点,将其分解成一个个语句单独执行. 1.首先通过Qfile读取sql文件 2.将sql文件中的内容通过“:”进行拆解 3. ...
- Jquery学习笔记(9)--注册验证复习(未用到ajax)
纯复习,在$(this).val()这里浪费了时间,val()只适合input里面的value值,如果是span等标签里包裹的文本要用text()!! <!DOCTYPE html> &l ...
- go 语言学习笔计之结构体
go 语言中的结构体方法 结构体名称的大小写有着不同的意义: 小写表示不能被别的包访问 package main import "fmt" type Rect struct { w ...
- java 获取用户真实ip
/** * 获取用户真实ip * @param request * @return */ public static String getIpAddr(HttpServletRequest reque ...
- CAP定理(原则)以及BASE理论
CAP定理(原则)以及BASE理论 CAP定理(原则)概念 CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partiti ...
- HIBERNATE与 MYBATIS的对比,在这里做一下总结
我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和 ...
- Tuning SQL 11
这一章还是概述性的说明 优化器 现在都是在用 Cost-based 这种调优器 注意这本书的作者是个大牛, 他就是说 DBA OVER 那个人, Jonathan Lewis hint 是人告诉SQL ...










