什么是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_Undo与Redo的通俗 Oracle中的Undo和Redo是两个非常重要的概念,它们都是Oracle数据库中事务管理和恢复机制的关键组件。Undo和Redo都是为了确保数据库的一致性和可靠性。 什么是REDO? REDO记录transaction...
在Oracle中,日志文件发挥着关键作用,其中Undo日志和Redo日志是最核心的两种日志类型。 Undo日志,也称为撤销日志,主要用于事务处理中。它的主要作用是记录事务执行之前的数据库状态,即数据块在被修改之前的所有...
Oracle redo undo 是 Oracle 数据库中的一种机制,用于确保事务的可恢复性和撤销性。下面是对 redo undo 机制的详细解释。 redo 机制 redo 机制是 Oracle 数据库中的一种机制,用于记录事务的所有操作,以便在...
Oracle 中的 redo 和 undo 机制是数据库的核心组件,它们一起协作以确保数据库的事务一致性和可靠性。在本文中,我们将深入探讨 redo 和 undo 机制的工作原理和协作机制。 Undo Mechanism Undo 机制是 Oracle 中的...
在Oracle数据库管理中,了解不同操作模式下REDO与UNDO的生成量以及这些操作对执行速度的影响至关重要。这有助于优化性能并确保数据完整性。本文将深入探讨NOLOGGING、APPEND、ARCHIVE和PARALLEL等不同模式下,REDO、...
### Oracle的Temp表空间与UNDO表空间处理详解 #### 一、Temp表空间处理 在Oracle数据库中,Temp表空间主要用于存储临时对象,如排序、分组等操作产生的临时数据。这些操作可能会导致Temp表空间迅速增大。然而,...
Undo信息与重做日志(Redo Log)有所不同,Redo Log记录了如何重新生成更改,用于数据库的向前滚动恢复,而Undo则记录如何还原更改,用于回退和读取一致性。 管理Undo数据主要包括监控Undo表空间的空闲空间,防止...
ORACLE的UNDO表空间是Oracle数据库中一个非常重要的组件,playing a crucial role in maintaining data consistency and providing a way to undo changes made to the database. 在本节中,我们将了解UNDO表空间的...
在Oracle数据库系统中,撤销(Undo)和重做(Redo)是两个至关重要的概念,它们主要用于事务管理和数据恢复。撤销操作允许用户撤销对数据库的最近更改,而重做操作则用于在系统崩溃或错误发生时恢复数据。 撤销日志...
"redo与undo_a.pdf"很可能是关于这个主题的一个详细教程或研究报告,可能涵盖了如何配置和管理redo日志文件,如何使用undo来支持事务的ACID属性(原子性、一致性、隔离性和持久性),以及如何在Oracle数据库中实现...
### Oracle数据库常见维护问题手册-精典 #### 数据库基础 **数据库启动方式** Oracle数据库启动通常通过`SQL*Plus`工具来进行。首先确保已经安装并配置了正确的Oracle客户端环境,然后通过以下命令来启动数据库:...
在存储和I/O优化方面,本书会探讨数据块设计、表和索引的分区策略、redo log和undo segment管理,以及如何配置Oracle的缓存机制(如Buffer Cache和Redo Log Buffer)以减少磁盘I/O。此外,还会涉及数据库的内存结构...
1. 回滚事务:Undo信息记录了事务在提交之前的修改,如果事务需要回滚,Oracle数据库可以利用这些信息撤销已经执行的操作,恢复到事务开始前的状态。 2. 实例恢复:在实例故障后,Oracle数据库通过redo日志来恢复未...
在事务处理过程中,为了确保数据的一致性和事务的原子性,Oracle数据库需要一种机制来记录事务执行前的数据状态。这一机制便是`Undo`。简而言之,`Undo`记录的是事务开始之前的原始数据状态,以便在事务需要回退时...
### Linux环境下手动创建Oracle 10g数据库详细步骤与知识点解析 #### 一、环境配置与准备工作 在Linux系统中手动创建Oracle 10g数据库,不仅能够深入了解Oracle数据库的安装与配置流程,还能帮助更好地掌握数据库...
在Oracle数据库系统中,"重做undo表空间"是一个至关重要的概念,它是数据库事务处理的基础。Undo表空间是用来存储事务撤销操作时所需信息的地方,这些信息被称为重做日志(Redo Log)。当一个事务对数据进行修改时,...
### Oracle 10g XE 版本更改数据库字符集 在进行Oracle 10g XE数据库的字符集修改时,需要理解几个关键的概念和技术点。本文将详细介绍如何更改Oracle 10g XE数据库的字符集,并提供具体的操作步骤。 #### 一、...
本文档是 Oracle 数据库复习题集,涵盖了 Oracle 数据库的各种知识点,包括控制文件、实例、数据库对象、数据字典、undo 表空间、redo 日志、归档模式、监听进程、数据库连接、SQL 语句、表空间管理、序列号、profil...
Checkpoint 是 Oracle 自动执行的一种操作,当检查点操作时,数据库中的所有缓冲区会写回磁盘,所有数据库的控制文件被更新。Checkpoint 频繁发生会加快数据库的恢复,但是增加了 I/O 次数,会降低系统的性能。修改 ...
Oracle 11g冷备份并迁移整个数据库到另一台服务器 Oracle 11g冷备份是指在不停止数据库的前提下,对数据库进行备份的操作。cold backup是相对于hot backup的,hot backup是在数据库运行时进行备份,而cold backup是...