Redo和Undo
-
Redo及其作用
-
Undo及其作用
-
Redo与Undo的关系
-
提交和回滚处理
-
基于LogMiner的日志分析
1
1.1 Redo及其作用
1.1.1Redo的作用是恢复已提交的事务,从而保证无论在介质失败还是实例失败时,都可以恢复用户已提交的事务,使数据库达到一致状态。
1.1.2Redo功能的实现依赖于以下三个组件:
- –Log Buffer
- –LGWR
- –联机重做日志文件和归档日志文件
1.2 Redo数据量的测量
1.2.1用SQL*Plus内置的AUTORACE功能统计(只能针对简单的DML操作,无法统计存储过程调用等复杂操作的日志信息):
1.2.2.通过动态性能视图v$mystat检索。例如:
2 Undo及其作用
2.2.1Undo的作用是:
–回滚操作;
–支持读一致性;
–恢复失败的事务。
2.2.2Undo的实现是通过Undo表空间内的undo段来实现的。每个事务只被分配一个undo段,undo段可以服务于多个事务。
2.2.3Undo机制只是逻辑地把数据恢复到修改前的状态,而不是物理地恢复。
语句中使用以下动态性能视图查询当前事务使用的undo块数:
V$MYSTAT:取得会话ID;
V$SESSION:获取事务地址;
V$TRANSACTION:找出事务使用的undo块数。
事务提交或回滚时会释放undo块占用的空间。
9.3 Redo与Undo的比较
|
Undo
|
Redo
|
记录
|
怎样还原修改
|
怎样创建修改
|
用于
|
回滚、读一致性
|
前滚、数据库修改
|
存储于
|
Undo段
|
Redo日志文件
|
保护
|
多用户系统中的读一致性
|
损失的数据
|
3.4 undo管理
管理目标是避免出现两种错误:
vORA-01650: unable to extend rollback segment
vORA-01555: snapshot too old
管理方式落实为正确配置三个参数和一个还原表空间属性:
UNDO_MANAGEMENT
UNDO_TABLESPACE
UNDO_RETENTION
RETENTION GUARANTEE
commit操作需要的时间很“平”,与事务的大小没有直接关系。
rollback操作所需的时间与事务所修改的数据量直接相关。
因此在设计事务时,不要考虑事务的大小和多少,而应以所执行的操作是否构成一个逻辑工作单元作依据。
提交前可能完成的操作
–在SGA中生成UNDO块
–在SGA中生成已修改的数据块
–在SGA中生成前两项对应的redo日志
–如果需要,前面的某些数据可能已经刷新输出到磁盘
–得到所需的所有锁
提交时要完成的操作
–为事务生成SCN
–LGWR把剩余所有缓存重做日志和SCN写入日志文件
–释放锁
–对缓冲区中的数据块进行块清理
v回滚前可能完成的操作
–在SGA中生成UNDO块
–在SGA中生成已修改的数据块
–在SGA中生成前两项对应的redo日志
–如果需要,前面的某些数据可能已经刷新输出到磁盘
–得到所需的所有锁
v回滚时要完成的操作
–撤销已做的所有修改
–释放锁
分享到:
相关推荐
Oracle Redo 和 Undo Mechanism Oracle 中的 redo 和 undo 机制是数据库的核心组件,它们一起协作以确保数据库的事务一致性和可靠性。在本文中,我们将深入探讨 redo 和 undo 机制的工作原理和协作机制。 Undo ...
在Oracle数据库的Real Application Clusters (RAC)环境中,REDO和UNDO管理扮演着至关重要的角色,确保数据的安全性、事务处理以及数据恢复。在RAC架构中,多个实例共享同一物理数据库,这就需要对REDO和UNDO管理进行...
- 应用程序接口:提供公共的AddCommand、Undo和Redo方法供其他部分调用。 6. **扩展性和性能考虑**: 框架应支持多种类型的命令,比如文本编辑、列表选择、绘图等。同时,为了防止内存消耗过大,可以设定撤销/...
在编程领域,撤销(Undo)和重做(Redo)功能是用户界面中常见的操作,它们允许用户取消或恢复最近的更改。在C#中,我们可以利用.NET框架提供的事件驱动和面向对象特性来实现这样的功能。这篇实验主要探讨了如何在...
MySQL为什么需要binlog、redo log和undo log的知识点总结 MySQL数据库管理系统需要binlog、redo log和undo log三个重要的日志系统,以确保数据的一致性和持久性。下面是对这些日志系统的详细解释: 为什么需要分层...
"redo与undo_a.pdf"很可能是关于这个主题的一个详细教程或研究报告,可能涵盖了如何配置和管理redo日志文件,如何使用undo来支持事务的ACID属性(原子性、一致性、隔离性和持久性),以及如何在Oracle数据库中实现...
下面是对 redo undo 机制的详细解释。 redo 机制 redo 机制是 Oracle 数据库中的一种机制,用于记录事务的所有操作,以便在故障时恢复事务。redo 机制可以保证事务的可恢复性。 redo 机制的工作流程如下: 1. 当...
本文将深入探讨如何在MFC应用中实现撤销(Undo)和重做(Redo)功能,这对于任何具有用户交互性的软件都是至关重要的特性。 撤销/重做功能是许多应用程序的标准组成部分,允许用户取消他们的最近操作,并在需要时...
Oracle中的Undo和Redo是两个非常重要的概念,它们都是Oracle数据库中事务管理和恢复机制的关键组件。Undo和Redo都是为了确保数据库的一致性和可靠性。 什么是REDO? REDO记录transaction logs,分为online和...
本工程用vs2008打开,但需要qt库的支持,需要先安装qt-in-vs2008,才可通过编译。或者直接将里面的代码拷贝出来,然后在自己的环境中编译也行。代码中应用了QUndoCommand来实现撤销与反撤销操作。
在IT行业中,"Redo"和"Undo"功能是用户界面设计中的重要组成部分,尤其是在文本编辑器、图形编辑软件或任何允许用户进行可逆操作的应用程序中。它们为用户提供了一种方便的方式来撤销或恢复之前的改动,增加了用户...
接下来,我们将详细介绍实现多步Undo/Redo功能的具体步骤和技术细节。 ##### 1. 建立基础类`CEditRecord` ```cpp class CEditRecord : public CObject { public: CEditRecord(); public: virtual BOOL Undo() =...
针对一个window窗体实现了undo/redo功能,包括textBox,checkBox, listBox, comboBox, radioButton以及按钮焦点变化的实现。可能有些小bug思路仅供参考。完整的工程文件,VS打开即可运行,欢迎评论~ 详细说明参见...
cpp文件 undo redo 原型设计 部分代码 class Command { public: virtual BOOL UnDo() = 0; virtual BOOL ReDo() = 0; };
在IT行业中,"redo undo"框架是用于实现撤销/重做功能的核心技术,常见于各种软件和应用程序中,如文本编辑器、图像处理软件、数据库系统等。它允许用户取消最近的操作并恢复先前的状态,提供了对用户交互的强大支持...
GIS软件中的Undo与Redo功能是编辑操作的重要组成部分,它们允许用户撤销和恢复之前的编辑行为。本文深入分析了GIS软件中Undo与Redo操作的设计与实现,其主要内容包括Undo与Redo操作的原理、机制、流程以及实现方法。...
在Oracle中,日志文件发挥着关键作用,其中Undo日志和Redo日志是最核心的两种日志类型。 Undo日志,也称为撤销日志,主要用于事务处理中。它的主要作用是记录事务执行之前的数据库状态,即数据块在被修改之前的所有...
在软件开发中,多级撤销/重做(Multiple Level Undo/Redo)是用户体验中的一个关键特性,尤其在文本编辑器、图像处理软件或者任何允许用户进行一系列可逆操作的应用中。这一功能允许用户在执行一系列操作后,通过...
MySQL数据库中有多种日志文件,其中最重要的三种是重做日志(redo log)、回滚日志(undo log)和二进制日志(binlog)。重做日志确保事务的持久性,回滚日志用于事务回滚,而二进制日志则用于数据复制和恢复。 1. ...