`
quanhy5
  • 浏览: 57271 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

oracle undo与redo及引发出来的数据库执行细节

阅读更多
什么是REDO
  REDO记录transaction logs,分为online和archived。以恢复为目的。

  比如,机器停电,那么在重起之后需要online redo logs去恢复系统到失败点。

  比如,磁盘坏了,需要用archived redo logs和online redo logs区恢复数据。

  比如,truncate一个表或其他的操作,想恢复到之前的状态,同样也需要。

  什么是UNDO

  REDO 是为了重新实现你的操作,而UNDO相反,是为了撤销你做的操作,比如你得一个TRANSACTION执行失败了或你自己后悔了,则需要用 ROLLBACK命令回退到操作之前。回滚是在逻辑层面实现而不是物理层面,因为在一个多用户系统中,数据结构,blocks等都在时时变化,比如我们 INSERT一个数据,表的空间不够,扩展了一个新的EXTENT,我们的数据保存在这新的EXTENT里,其它用户随后也在这EXTENT里插入了数据,而此时我想ROLLBACK,那么显然物理上讲这EXTENT撤销是不可能的,因为这么做会影响其他用户的操作。所以,ROLLBACK是逻辑上回滚,比如对INSERT来说,那么ROLLBACK就是DELETE了。

  COMMIT 以前,常想当然地认为,一个大的TRANSACTION(比如大批量地INSERT数据)的COMMIT会花费时间比短的TRANSACTION长。而事实上是没有什么区别的,

  因为ORACLE在COMMIT之前已经把该写的东西写到DISK中了,

  我们COMMIT只是

  1,产生一个SCN给我们TRANSACTION,SCN简单理解就是给TRANSACTION排队,以便恢复和保持一致性。

  2,REDO写REDO到DISK中(LGWR,这就是log file sync),记录SCN在ONLINE REDO LOG,当这一步发生时,我们可以说事实上已经提交了,这个TRANSACTION已经结束(在V$TRANSACTION里消失了)

  3,SESSION所拥有的LOCK(V$LOCK)被释放。

  4,Block Cleanout(这个问题是产生ORA-01555: snapshot too old的根本原因) ROLLBACK ROLLBACK和COMMIT正好相反,ROLLBACK的时间和TRANSACTION的大小有直接关系。因为ROLLBACK必须物理上恢复数据。 COMMIT之所以快,是因为ORACLE在COMMIT之前已经作了很多工作(产生UNDO,修改BLOCK,REDO,LATCH分配), ROLLBACK慢也是基于相同的原因。

  1. UNDO表空间用于存放UNDO数据。当执行DML操作时,Oracle会将这些操作的旧数据写入UNDO段。管理UNDO数据不仅可以使用回滚段,还可以使用UNDO表空间。

  2. UNDO数据的作用:当用户执行DML操作修改数据时,UNDO数据被存放在UNDO段,而新数据则被存放到数据段中,如果事务操作存在问题,就需要回退事务,以取消事物变化。

  例如:执行完UPDATE emp SET sal=1000 WHERE empno=7788后,发现应该修改雇员7963的工资,而不是7788.此时应该执行ROLLBACK语句。

  3.读一致性

  用户检索数据时,ORACLE总是使用户只能看到被提交过的数据,这是由Oracle自动提供的。当用户修改数据,但是没有提交时,另外一个用户使用select语句查找该值时,该值就是从undo表空间中取得的。

  4.事务恢复

  事务恢复是例程恢复的一部分,它是由Oracle Server自动完成的。如果在数据库运行过程中出线历程失败,那么当启动Oracle Server时,后台进程SMON会自动执行例程恢复。执行例程恢复时,Oracle会重做所有未应用的记录。然后打开数据库,回退未提交事务。

  5.倒叙查询

  倒叙查询用于取得某一特定时间点的数据库数据。

  6.UNDO_MANAGEMENT

  使用初始化参数用于指定UNDO数据的管理方式。如果使用自动管理模式,必须设置该参数为AUTO,此时采用UNDO表空间管理UNDO数据;如果使用手工管理模式,必须设置该值为MANUAl,此时采用回滚段管理UNDO数据。

  7.UNDO_TABLESPACE

  用于指定例程所要使用的UNDO表空间。使用自动UNDO管理模式时,通过配置该参数可以指定例程所要使用的UNDO表空间。

  使用RAC结构时,必须为每个例程配置一个独立的UNDO表空间。

  8.UNDO_RETENTION

  该参数用于控制UNDO数据的最大保留时间,其默认值为900秒,该值时倒叙查询可以查看到的最早时间点。

  9.UNDO表空间上不能建立任何数据对象。
分享到:
评论

相关推荐

    双数据库(Oracle+MySQL)大神级系列教程分享(实战超越OCP.OCM)

    双数据库(Oracle+MySQL)大神级系列教程分享1.3-11(实战超越OCP.OCM)

    ORACLE数据库体系架构视频教程详细完整版

    第二章:实例管理及数据库的启动/关闭 第三章:控制文件 第四章:redo日志 1 第五章:归档日志 archivelog 第六章:日志挖掘 logminer 第七章:管理undo 第八章: 检查点 checkpoint 第九章:实例恢复机制 第二部分...

    oracle undo

    如果说Redo是用来保证在故障时事务可以被恢复,那么Undo则是用来保证事务可以被回退或者撤销。 在修改操作中,对于回退段的操作存在多处,在事务开始时,首先需要在回滚段表空间获得一个事务槽,分配空间,然后创建...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    13.1.3日志线程与联机Redo日志 13.1.4 UNDO表空间 13.2实例恢复 13.2.1 RAC的实例恢复 13.2.2实例恢复的阶段 13.3介质恢复 13.3.1介质恢复的过程 13.3.2物理坏块和逻辑坏块 13.3.3坏块的检测工具 13.3.4块...

    Oracle中如何对超大规模数据(如超过2亿条)直接用SQL语句入库?

    在实际生产环境下,有时需将超大... from tab的Oracle SQL方式直接执行将导致redo、undo日志暴增,使数据库容易假死。针对此问题,采用文中方法可完美解决,且对系统性能几乎无影响(不管是分区表还是普通堆表均可)。

    oracle 12c 数据库 教程

    (三)使用 DBCA 创建 Oracle 数据库 21 (四)验证 Oracle Database 12cR2 环境 25 (五)使用 oracle-database-server-12cR2-preinstall 包 25 三、管理数据库实例 27 (一)管理工具 27 (二)初始化参数 27 (三...

    【数据库维护】-oracle远程维护程序

    通过远程连接Oracle数据库的方式实现对数据库进行管理维护 功能列表: 1) 查询优化SQL所需的表、索引的统计信息相关属性。 2) 获取ASM磁盘组信息。 3) 查询UNDO表空间状态及UNDO使用信息。 4) 查询当前节点当前...

    Oracle 9i 10g编程艺术:深入数据库体系结构

    然后讨论一些重要的数据库主题,如锁定、并发控制、事务、redo和undo,还会解释为什么了解这些内容很重要。最后,我们再来分析数据库这的物理结构,如表、索引和数据类型,并介绍哪些技术能最优地使用这些物理结构。

    深入解析OracleDBA入门进阶与诊断案例 3/4

     针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识...

    深入解析OracleDBA入门进阶与诊断案例 2/4

     针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识...

    深入解析OracleDBA入门进阶与诊断案例 4/4

     针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识...

    linux系统给oracle数据库增加新的实例.pdf

    linux系统给 系统给oracle数据库增加新的实例 数据库增加新的实例 eg: 新建实例名orcl 1、新增实例的⽬录 su - oracle cd $ORACLE_BASE/admin mkdir orcl cd orcl mkdir dbdump mkdir adump mkdir pfile cd $ORACLE_...

    深入解析Oracle.DBA入门进阶与诊断案例

    针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手...

    linux系统给oracle数据库增加新的实例(1).pdf

    linux系统给 系统给oracle数据库增加新的实例 数据库增加新的实例 eg: 新建实例名orcl 1、新增实例的⽬录 su - oracle cd $ORACLE_BASE/admin mkdir orcl cd orcl mkdir dbdump mkdir adump mkdir pfile cd $ORACLE_...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    第9章 redo与undo 281 9.1 什么是redo? 281 9.2 什么是undo? 282 9.3 redo和undo如何协作? 285 9.4 提交和回滚处理 289 9.4.1 COMMIT做什么? 289 9.4.2 ROLLBACK做什么? 296 9.5 分析redo 297 9.5.1 测量...

    Oracle常用技术资料合集.zip

    二、《Oracle数据库SQL执行计划的取得和解析》PPT(附SQL文件) 三、Oracle 常用脚本 2pc_clean.txt ash_sql_line_id.txt ash_top_sql_event.txt ash_used awr_db_time.txt awr_event_histogram.txt awr_metric_...

    操作系统崩溃,数据库全部文件都在时,数据库恢复方法.pdf

    ⼀个朋友的Oracle数据库所在的 操作系统崩溃,现遗留下数据⽂件 ⽂件分布结构如下: d:/oracle/oradata/STAN CONTROL01.CTL CONTROL02.CTL CONTROL03.CTL INDX11.DBF INDX12.DBF INDX13.DBF INDX14.DBF REDO01.LOG ...

    Oracle 9i&10g编程艺术:深入数据库体系结构

    第1章 开发成功的Oracle应用程序 第2章体系结构概述 第3章 文件 第4章 内存结构 ...第9章 redo与undo 第10章 数据库表 第11章 索引 第12章 数据类型 第13章 分区 第14章 并行执行 第15章 数据加载和卸载

    Oracle Database concepts guide(11g2) By Thomas Kyte

    由Tom担纲编写的11g的Concepts guide作为第一本书籍,是引领你进去Oracle世界的最基础的一本书籍,...重点:oracle数据库的体系结构、内存架构、oracle的基本数据对象、并发控制与隔离级别相关内容,Undo与Redo的内容。

    深入oracle体系结构

    数据库体系结构,并强调数据库本身如何工作。深入地分析Oracle数据库体系结构,...讨论锁定、并发控制、事务、redo和undo,分析数据库这的物理结构,如表、索引和数据类型,并介绍哪些技术能最优地使用这些物理结构。

Global site tag (gtag.js) - Google Analytics