`

Oracle的Redo的作用及原理

 
阅读更多

Redo的作用:

 

Oracle通过Redo来保证数据库的事务可以被重演,从而使得在故障之后,数据可以被恢复。Redo对于Oracle数据库来说至关重要。

在数据库中,Redo的功能主要通过3个组件来实现:Redo Log Buffer、LGWR后台进程和Redo Log File(在归档模式下,Redo Log File最终会经由ARCn进程写出为归档日志文件)。

Redo Log Buffer位于SGA之中,是一块循环使用的内存区域,其保存数据库变更的相关信息。这些信息以重做条目(Redo Entries)形式存储(Redo Entries也经常称为Redo Records)。Redo Entries包含重构、重做数据库变更的重要信息,这些变更包括INSERT、UPDATE、DELETE、CREATE、ALTER或者DROP等。

Redo Entries的内容被Oracle数据库进程从用户的内存空间(PGA)复制到SGA中的Redo Log Buffer之中。Redo Entries在内存中占用连续的顺序空间,由于Redo Log Buffer是循环使用的,Oracle通过一个后台进程LGWR不断把Redo Log Buffer的内容写出到Redo Log File中,Redo Log File同样是循环使用的。

 

SELECT * FROM V$LOG;
SELECT * FROM V$BACKUP_REDOLOG;

 

Redo的原理:

 

我们知道,用户数据通常在Buffer Cache中修改,Oracle通过高速缓存来提高数据操作的性能。当用户在Buffer Cache中修改数据时,Oracle并不会立即将变更数据写出到数据文件上,因为独立的离散写出效率会很低。到目前为止,计算机系统中最容易出现瓶颈的仍然是磁盘的I/O操作,Oracle这样做的目的是为了减少IO的压力,当修改过的数据达到一定数量之后,可以进行高效地批量写出。

大部分传统数据库(当然包括Oracle)在处理数据修改时都遵循no-force-at-commit策略。也就是说,在提交时并不强制写。那么为了保证数据在数据库发生故障时(例如:断电)可以恢复,Oracle引入了Redo机制,通过连续的、顺序的日志条目的写出将随机的、分散的数据块的写出推延。这个推延使得数据的写出可以获得批量效应等性能提升。

同Redo Log Buffer类似,Redo Log File也是循环使用的,Oracle允许使用最少两个日志组。缺省的,数据库创建时会建立3个日志组。

sys@NEI> select group#,members,status from v$log;

    GROUP#    MEMBERS STATUS

---------- ---------- ----------------

         1          1 INACTIVE

         2          1 CURRENT

         3          1 INACTIVE

当一个日志文件写满之后,会切换到另外一个日志文件,这个切换过程称为Log Switch。Log Switch会触发一个检查点,促使DBWR进程将写满的日志文件保护的变更数据写回数据库。在检查点完成之前,日志文件是不能被重用的。

由于Redo机制对于数据的保护,当数据库发生故障时,Oracle就可以通过Redo重演进行数据恢复。那么一个非常重要的问题是,恢复应该从何开始呢?如果读取的Redo过多,那么必然导致恢复的时间过长,在生产环境中,我们必须保证恢复时间尽量的短。

Oracle通过检查点(Checkpoint)来缩减恢复时间。检查点只是一个数据库事件,它存在的根本意义在于减少恢复时间。

当检查点发生时(此时的SCN被称为Checkpoint SCN)Oracle会通知DBWR进程,把修改过的数据,也就是此Checkpoint SCN之前的脏数据(Dirty Duffer)从Buffer Cache写入磁盘,在检查点完成后CKPT进程会相应地更新控制文件和数据文件头,记录检查点信息,标识变更。

在检查点完成之后,此检查点之前修改过的数据都已经写回磁盘,重做日志文件中的相应重做记录对于崩溃/实例恢复不再有用。如果此后数据库崩溃,那么恢复只需要从最后一次完成的检查点开始恢复即可。如果数据库运行在归档模式(所有生产数据库,都建议运行在归档模式),日志文件在重用之前必须写出到归档日志文件,归档日志在介质恢复时可以用来恢复数据库故障。 

分享到:
评论

相关推荐

    Redo Log之一:理解Oracle redo log

    总体来说,Oracle redo log不仅是数据恢复的关键,它还是数据一致性、日志管理以及数据库性能优化的一个基础,对数据库管理员(DBA)来说,深入了解redo log的工作原理和管理方法是必备技能之一。

    oraclerman备份原理[参照].pdf

    Oracle 数据库的在线备份原理基于 REDO LOG BUFFER。REDLOG BUFFER 中的信息记录下来,就可以记录所有 DML 语句对数据库的修改。这个纪录过程由 Oracle 的另一个后台进程来完成,将 REDO LOG BUFFER 保存下来到后台...

    介绍Oracle redo log 恢复步骤的文档

    本文档将详细介绍Oracle Redo Log的工作原理以及如何利用Redo Log进行数据库恢复的过程。 #### 二、Redo Log的基本概念 1. **Redo Log文件**:是Oracle数据库中用于存储所有事务更改记录的一组文件。这些文件对于...

    oracle_redo_undo

    在本文中,我们将深入探讨 redo 和 undo 机制的工作原理和协作机制。 Undo Mechanism Undo 机制是 Oracle 中的一种逻辑回滚机制,它可以将数据库恢复到事务开始前的状态。但是,Undo 机制并不是简单地将数据库物理...

    oracle在线备份原理

    总的来说,Oracle在线备份原理的核心在于理解DML语句的处理流程,特别是redo log files的角色,以及Oracle数据库的运行模式。通过实时捕获并保存redo log files的信息,就能实现对数据库的连续备份,保证业务的连续...

    oracle ogg原理详解

    Oracle GoldenGate原理主要基于捕获源数据库的事务日志,然后将这些日志转换成OGG能理解的格式,并通过网络传输到目标数据库。在目标端,OGG再将这些事务应用到目标数据库,以实现数据的同步。OGG12.3对这一同步原理...

    Dissecting the Redo Logs

    #### Oracle Redo Logs的工作原理概述 每当对数据库状态做出更改时,会生成一个称为redo条目的记录,并写入服务器系统的缓冲区中。接下来,当这些缓冲区被写入磁盘时,redo条目也会随之被写入redo日志文件中。为了...

    Oracle9i原理及应用

    本文将基于Oracle9i原理及应用的课件内容,详细阐述这一经典数据库系统的关键技术和应用方法。 第一章的课件内容集中在Oracle9i的基本架构上。其中,数据库实例是Oracle9i运行的核心,包含了数据库实例和数据库两个...

    ORACLE Standby数据库工作原理及程序设计.pdf

    在Oracle数据库中,Standby数据库主要通过归档日志(archived redo logs)的方式来实现与主数据库的同步。主数据库需要配置为归档模式(归档日志模式),这样它所产生的所有事务日志都会被归档成归档日志文件。...

    Oracle性能调优原理及具体手段

    ### Oracle性能调优原理及具体手段 #### 一、Oracle结构与实例 ##### 1.1 Oracle实例(Instance) - **定义与作用**:Oracle实例是访问Oracle数据库的一个途径,它仅能打开一个数据库。 - **组成**:由SGA(系统...

    oracle checkpoint工作原理

    在深入探讨Oracle Checkpoint的工作原理之前,我们首先理解Checkpoint在数据库系统中的核心作用及其对Oracle数据库性能和数据一致性的影响。 #### 一、Checkpoint 的基本概念 **Checkpoint** 在Oracle数据库中扮演...

    ORACLE 11G RAC 和DG原理和安装配置

    **Oracle 11g RAC 原理与配置** 1. **RAC概述**:RAC 是 Oracle 提供的一种集群数据库技术,它允许多个服务器节点共享同一个物理数据库。这种架构提高了系统的可扩展性和高可用性,当一个节点出现故障时,其他节点...

    oracle rac 原理

    这篇讲解将深入探讨Oracle RAC的基本原理,帮助你理解和掌握这一关键的技术。 首先,我们来看看Oracle RAC的核心组件: 1. **全局缓存区(Global Cache)**:这是Oracle RAC最核心的部分,所有的数据块在所有实例...

    Oracle+RAC原理浅谈.ppt

    Oracle RAC 原理浅谈 Oracle RAC(Real Application Clusters)是一种高可用性、高性能、可扩展的集群解决方案,旨在提供高效、可靠的数据库服务。以下是 Oracle RAC 的一些关键知识点: RAC 部署技巧及维护注意...

    oracle10gRAC+Data Guard环境配置以及原理说明(非常详细)

    本篇将详细阐述这两种技术的配置过程及工作原理。 首先,Oracle RAC 是一个集群数据库解决方案,允许多台服务器共享同一个数据库实例,以实现负载均衡和故障切换。在Oracle 10g RAC环境下,数据存储在共享的存储...

    Oracle数据库原理及运维概述.pptx

    总的来说,Oracle数据库原理及运维是一个深入且广泛的领域,涵盖了许多关键概念和技术。通过深入学习和实践,我们可以更好地理解和掌握这个强大的数据库系统,为企业的智慧IT解决方案提供坚实的基础。

    Oracle_RAC原理浅谈

    在Oracle RAC中,每个实例都有自己的内存结构,包括SGA(System Global Area),其中包含了如Redo Log Buffer、Shared Pool、Data Dictionary Cache、Library Cache等关键组件。DBWR(Database Writer)和SMON...

    Oracle原理,ppt文档。

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其复杂性和高效性能使得理解其工作原理对数据库管理员和开发人员至关重要。本讲座主要聚焦于Oracle数据库的部分原理,旨在帮助读者深入理解Oracle RDBMS...

    REDO INTERNALS AND TUNING BY REDO

    5. **使用闪回技术**:Oracle的闪回功能可以在一定程度上替代重做日志的作用,通过闪回数据存档和闪回查询等功能减少重做日志的依赖。 ### 检测与诊断过量重做日志 要检测过量的重做日志生成,可以利用Oracle的AWR...

    Oracle Standby Database技术的原理及实现.pdf

    Oracle Standby Database技术是Oracle数据库系统提供的一种高可用性和灾难恢复解决方案。...通过理解和掌握Oracle Standby Database的原理和实施细节,可以更好地规划和实施数据库的备份和容灾方案。

Global site tag (gtag.js) - Google Analytics