Oracle Undo 和 Redo
1. REDO(重做信息)
Redo log file(重做日志文件),是数据库的事务日志。
Oracle维护着两类重做日志文件:在线(online)重做日志文件和归档(archived)重做日志文件,这两类重做日志文件用于实例失败或是介质失败时数据的恢复;
如果数据库所在主机突然断电导致实例失败,则Oracle会使用在线重做日志将系统恰好恢复到掉电之前的时间点;
如果硬盘出现故障(即介质失败),Oracle会使用归档重做日志和在线重做日志将硬盘上的数据恢复到适当的时间点;
另外如果你无意地上除了某些重要信息并提交了这个操作,那么可以恢复受影响数据的一个备份,并使用在线和归档重做日志文件把它恢复到之前的一个时间点;
重做日志文件可能是数据库中最重要的恢复结构,但同时其他部分(如undo段、分布式事务恢复等)也不可或缺,重做日志是数据库区别于传统文件系统的一个重要特征;
2. UNDO(撤销信息)
当对数据执行DML(增、删、改)时,数据库会生成undo信息,万一你执行事务或语句由于某些原因失败时,或者你用一条语句rollback语句请求回滚时,数据库就可以利用这些undo信息将数据返回到修改前的样子。
3. REDO 和 UNDO 区别
① Redo用于在失败时恢复事务,undo用于取消一条语句或者一组语句的作用;
② Undo信息存储在数据库内部一组特殊段中(undo segment);
③ Undo并不是使数据库物理地回复到执行语句或者事务之前的样子,数据库只是逻辑地回复到原来的样子,所有的修改都被逻辑地取消,但是数据库结构以及数据库块在回滚后可能还与回滚前保持一致;
因为在多用户系统中,可能会有数百或者上千个并发事务,不仅仅你的事务在修改一些块,其他许多人的事务也可能在修改这些块,因此,不能简单地将一个块放到你事务开始前的样子,这样很可能会撤销其他人的事务工作。
例如:
假设你的事务执行了一个insert语句,这条语句导致分配了一个新的区段;
通过执行这个insert,你将会获得一个新的数据库块,并在格式化该块后在其中放入一些数据;
此时,可能出现另外的事务,它也往这个块中插入数据;如果你要回滚你的事务,显然蹦年取消对这个数据块已有的格式化和空间分配,否则会影响到另外的那个事务的工作。
因此回滚是,Oracle实际上会做与之前逻辑上相反的工作,即:
对于每个insert,会执行一个delete;
对于每个delete,会执行一个insert;
对于每一个update,会执行一个“反update”,或者执行另一个update将修改前的行放回去;
还有一点需要特别注意:undo对于直接路径操作(即使用append提示进行insert)不适用,直接操作能绕过表上的undo生成。
分区索引:https://www.cnblogs.com/Dreamer-1/p/6132776.html
Oracle Undo 和 Redo的更多相关文章
- oracle undo redo 解析
Undo是干嘛用的? 简单理解,就相当于Windows下的回收站. 你对数据执行修改时,数据库会生成undo信息,这样万一你执行的事务或语句由于某种原因失败了,或者如果 ...
- Oracle 中UNDO与REDO的差别具体解释
一 为了更清楚的看出2者差别,请看下表: UNDO ...
- oracle undo回滚段详解
1.Undo是干嘛用的? 在介绍undo之前先说一下另外一个东西 transaction ,翻译成交易或事务.我们在进行一个事务的过程中需要申请许多资源,一个复杂的事务也需要很多步来完成.那么一个 ...
- Oracle undo 镜像数据探究
Oracle undo 镜像数据探究 今天是2013-08-18,隔别一周的 ...
- Oracle undo我们需要掌握什么
<Oracle undo我们需要掌握什么> 引言:undo 是Oracle数据库的重要组件,刚入门的朋友建议要把undo的原理和机制理解明白,尤其是和redo组件的区别和联系.了解undo ...
- Oracle重做日志REDO
什么是重做? 重做日志包含所有数据产生的历史改变记录. 重做日志目的是保证数据的安全,如果数据因特殊原因没有写到磁盘上,可以通过重做日志来恢复. 重做日志文件通常用于 恢复(实例恢复和介质恢复) 日志 ...
- Oracle logminer 分析redo log(TOAD与PLSQL)
Oracle logminer 分析redo log Oracle 11g r2 RAC centos 6.5 设置时间格式 select to_char(sysdate,'yyyy-mm-dd hh ...
- Oracle Dataguard Standby Redo Log的两个实验
在Data Guard环境中,Standby Redo Log是一个比较特殊的日志类型.从最新的DG安装指导中,都推荐在Primary和Standby端,都配置Standby Redo Log. 简单 ...
- 命令模式-实现undo和redo
这次实验主要是实现多次redo和undo,即程序的撤回和恢复,这里只实现加法的撤回和恢复. 程序的撤回和恢复就是由所使用的软件来记录操作步骤,可以将数据恢复到某个操作状态. 撤回这个指令很常见,Win ...
随机推荐
- 不要忽视Web编程中的小细节
概述:长时间以来,我们创造了某些在构造和范围内用以提升网站易用性的约定和实践.然后在我们进行web编程的时候总有一些疏忽和纰漏.这里总结了一些web编程时容易出现的小错误,并给出了相应的补救方法,希望 ...
- Uva1149
每个bin最多只能放两个,所以最佳的贪心策略是从大的开始放,如果有空间放第二个,尽量放最大的. #include <bits/stdc++.h> using namespace std; ...
- 07.Spring Bean 加载 - BeanDefinitionReader
基本概念 BeanDefinitionReader ,该接口的作用就是加载 Bean. 在 Spring 中,Bean 一般来说都在配置文件中定义.而在配置的路径由在 web.xml 中定义.所以加载 ...
- ELK(ElasticSearch, Logstash, Kibana) v5.3.2 分布式日志收集分析最佳解决方案 基于CentOS 7 ( 一 )
[root@localhost temp]# .tar.gz -C /usr/local/ [root@localhost temp]# vim logstatsh_test.conf ======= ...
- Java面向对象_内部类
概念:内部类就是类的内部定义的类 成员内部类格式如下:class Outer{ class Inner{} } 编译上述代码会产生两个文件:Outer.class和Outer$Inner.class ...
- RabbitMQ使用教程(四)如何通过持久化保证消息99.99%不丢失?
1. 前情回顾 RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例 RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置 RabbitMQ使用 ...
- 【JavaEE】tomcat部署项目的几种方式 .
一.静态部署1.直接将web项目文件件拷贝到webapps 目录中 Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用.所以可以将JSP程 ...
- shell脚本之前的基础知识
日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位 ...
- HDU 5452——Minimum Cut——————【树链剖分+差分前缀和】ACdream 1429——Diversion——————【树链剖分】
Minimum Cut Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 65535/102400 K (Java/Others)Tota ...
- 给浏览器绑定鼠标滚动事件(兼容FireFox)
var bs = new Browser(); if(bs.userBrowser() == 'firefox'){ document.body.addEventListener("DOMM ...