1.redo

redo 有在线redo日志和归档redo日志, 从Oracle 10g开始还新增加了flashback技术。

每个Oracle数据库至少有2个在线重做日志组,循环写。

只有INSERT, DELETE, UPDATE,MERGE才会生成redo日志,

redo日志用于数据库故障恢复,比如系统崩溃,磁盘介质问题。

2.undo

undo 与redo相反, 修改数据时,会生成undo信息,以便回到更改前的状态。

undo存放在数据库中一组undo变空间和undo段中。

每次用undo恢复数据时,只是逻辑回滚,就是将数据恢复到更改前的状态。 物理变化不会被回滚,比如执行INSERT, 数据库为之创建了新的Extents, 此时回滚的话,这个新创建的extents就不会被消除。

做个试验,通过启用autotrace,查看insert空和insert大量数据后, 再执行SELECT的I/O情况。

3.多次提交和一次提交多个语句。

执行COMMIT的开销

(1) 增加和数据库的通信。

(2) 每次提交都需要将redo写到磁盘,导致等待I/O, 只要是log file sync。

再执行COMMIT之前,大多数工作都已经被完成, 比如

(1) 已经在SGA中生成undo块

(2) 已经在SGA中生成了已修改数据块

(3) 已经在SGA中生成了前2项的redo

(4) 取决于#1,2,3数据量大小,有些可能已经被输出到磁盘, LGWR一直在后台不停的工作。

(5) 已经得到全部锁

所以提交的时候,做的事情就下面几件

(1) 生成一个SCN

(2) 将余下的redo缓存输出到磁盘,并把SCN记录到其中. 到这里事物就已经提交,再v$transaction中已经查不到该transaction

(3) 释放锁,块清除。

从上面可以看出COMMIT的开销并不大。但是大量的频繁的提交小transaction,也可能带来长时间的lgwr I/O等待。

执行Rollback操作时,要撤销已做的修改。从undo段读回数据。

后续内容

分析redo, 分析undo

Oracle 9 - redo和undo的更多相关文章

  1. 【转】ORACLE的REDO与UNDO

    一.什么是redo?redo:oracle在在线或者归档重做日志文件中的记录的信息,外以出现失败时可以利用这些数据来"重放"事务.每个oracle数据都至少有二个在线重做日志组,每 ...

  2. 【Oracle】redo与undo

    一 .redo(重做信息) 是Oracle在线(或归档)重做日志文件中记录的信息,万一出现失败时可以利用这些数据来“重放”(或重做)事务.Oracle中记录这些信息的文件叫做redo log file ...

  3. Oracle redo与undo

    Undo and redo Oracle最重要的两部分数据,undo 与redo,redo(重做信息)是oracle在线(或归档)重做日志文件中记录的信息,可以利用redo重放事务信息,undo(撤销 ...

  4. Oracle redo与undo 第一弹

      一. 什么是redo(用于前滚数据) redo也就是重做日志文件(redo log file),Oracle维护着两类重做日志文件:在线(online)重做日志文件和归档(archived)重做日 ...

  5. 【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较

    [知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 ...

  6. Oracle redo与undo浅析

    http://liwenshui322.iteye.com/blog/1488949 一. 什么是redo(用于前滚数据) redo也就是重做日志文件(redo log file),Oracle维护着 ...

  7. 09 redo and undo

    本章提要-----------------------------------------------redo, undo 定义redo, undo 如何工作如何访问 redo, undo提交和回滚- ...

  8. Current online Redo 和 Undo 损坏的处理方法

    转自:http://blog.csdn.net/tianlesoftware/article/details/6261475 Oracle 不同故障的恢复方案 http://blog.csdn.net ...

  9. 如何理解redo和undo

    redo和undo的区别    redo--> undo-->datafileinsert一条记录时, 表跟undo的信息都会放进 redo 中, 在commit 或之前, redo 的信 ...

随机推荐

  1. js 统计字符串中出现次数最多的字符?

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. sql server 中更改默认实例

    因为安装了多个版本的sql server,会造成同时存在多个实例的情况. 1.关闭旧版本的sql server实例,并设置为手动启动 2.按下图步骤操作,把tcp端口设置为1433 3.重启sql s ...

  3. [大牛翻译系列]Hadoop(15)MapReduce 性能调优:优化MapReduce的用户JAVA代码

    6.4.5 优化MapReduce用户JAVA代码 MapReduce执行代码的方式和普通JAVA应用不同.这是由于MapReduce框架为了能够高效地处理海量数据,需要成百万次调用map和reduc ...

  4. Debian7系统安装配置手册

    一.安装系统 系统版本:Debian7 参考资料:http://www.myhack58.com/Article/48/66/2013/39802.htm 二.配置源 vi /etc/apt/sour ...

  5. linux下配置Apache基于加密的认证访问

    1.首先要确认安装了 mod_ssl模块 我的机器是centos是系统,执行下面命令 yum install -y mod_ssl 2.用openssl工具生成密钥,证书请求文件,证书 在/usr/l ...

  6. [Solved] install Gentoo in VBox: network interface eth0 does not exist

    ERROR:interface eth0 does not exist; ensure that you have loaded the correct kernel moudle for your ...

  7. 第一次比赛的 C题 (好后面才补的....) CodeForces 546B

    Description Colonel has n badges. He wants to give one badge to every of his n soldiers. Each badge ...

  8. MySQL性能优化的最佳20+套经验

      今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操 ...

  9. eclipse增加浏览器chrome

    1.安装完了google chrome游览器后,如何让eclipse直接用chrome打开jsp 2.添加到eclipse环境中即可, Window(菜单) -- preferences 增加成功后, ...

  10. oracle-11g创建用户名的时候默认区分大小写

    oracle11g-11.2.0.3.0 - 64bit oracle-11g创建用户名的时候默认区分大小写 设置不区分大小写: alter system set sec_case_sensitive ...