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的更多相关文章
随机推荐
- Windows 2003 远程桌面
- atitit.浏览器插件解决方案----ftp插件 attilax 总结
atitit.浏览器插件解决方案----ftp插件 attilax 总结 1. 界面概览 D:云盘同步文件夹p5p5f tp.demo.html1 2. 初始化1 3. 事实调用2 4. 参考2 ...
- Reveal使用教程
Reveal使用教程 Reveal是用于透视程序整体结构的一个软件,软件收费89美刀,试用期30天,不过好在有破解版,无需担心花钱的问题 在然后呢,软件在哪下,可以在我的github上下载到破解版本 ...
- 【Objective-C】03-第一个OC程序
一.打开Xcode,新建Xcode项目 二.选择最简单的命令行项目 因为我们只是学习OC语法,还未正式进入iOS开发,所以选择命令行项目即可 三.输入项目名称,选择Foundation框架进行创建项目 ...
- Java 堆内存
堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象. 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ...
- string.erase()--已解决
在代码中需要实现这样一个功能,需要将[00000001]这个存储在string中的字符串的中括号去掉,首先想到的就是string.erase()这个函数.结果... 代码: #include < ...
- Java监听模式
说明 生活中,监听无处不在.比如说,手机播放音乐功能,也是一种监听:你不点击播放按钮,手机就不放歌,当你点击时,手机就播放音乐.即触发某种行为,便执行相应的动作. 组成 Java监听模式右三个部分组成 ...
- 如何利用gdb调试程序?
程序的大体意思就是各一个数组赋值,然后输出来程序已经写在了上面,下面我们就来看一下如何产生带有调试信息的编译文件,这里我们要使用gcc的-g参数,用于在编译文件中加入一些调试信息.发现加了-g和没有加 ...
- 基于jQuery的让非HTML5浏览器支持placeholder属性的代码(转)
效果图:http://code.google.com/p/jquery-placeholder-js/ 演示代码:http://demo.jb51.net/js/2011/jqueryplacehol ...
- HBase学习笔记——概念及原理
1.什么是HBase HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. ...