【数据库】Oracle重做日志文件

oracle重做日志文件详细 oracle重做日志文件详细 redo log file 1 redo log file的作用 ​redo log file记录了对数据库的所有修改信息。有了这些修改信息,我们就可以用于恢复数据。如果数据库所在主机突然断电,导致实例失败,通电启动后oracle会使用在线重做日志将系统恢复到断电前的那个时刻。如果包含数据文件的磁盘驱动器出现了永久性故障,oracle会使用归档重做日志以及在线重做日志,将磁盘驱动器的备份恢复到适当的时间点。另外,如果你“无意地”删除了一个表,或者删掉了一些重要的信息,而且提交了 阅读详情

重做日志文件

重做日志文件时为了数据库恢复的物理文件,其中保存了数据库的变更操作信息。

一、概述

重做日志文件(Redo Logfile)又被称为事务日志文件(Transaction Logfile)。

它对ORACLE数据库来说至关重要。ORACLE中每执行一条更新操作时,都会引起数据库的变化,因此都会生成一定数量的重做日志,他们将被记录到重做日志文件中。以便在数据库出现例程失败或介质故障时,可以利用重做日志文件来恢复数据库

重做日志文件是ORACLE三类文件中最为复杂的一类。在ORACLE 10G安装完毕后,会自动创建3个重做日志文件。

  1. 重做日志文件主要以重做记录的形式记录、保存对数据库所作的修改(或事务)。

  2. 如果在一段时间内只对数据库进行了查询操作,则不产生重做日志记录信息。

  3. 如果对一个表的数据进行了修改,并完成了事务的提交,这时数据文件只存储修改后的数据,但重做日志文件中要记录两类数据:

    1. 一类是修改前的数据;
    2. 一类是修改后的数据。

    所以重做日志文件的管理方式与数据文件的管理方式有所不同。

二、作用与目的

重做日志文件在数据库的恢复过程中起着非常重要的作用,可以用来进行例程和介质恢复(其中介质恢复需要借助于归档日志文件),以及事务的撤销。

  • 重做日志文件是为了数据库恢复的物理文件,其中保存了数据库的变更操作信息。
  • 通过重做日志文件通常是通过重做(REDO)或者是回退(UNDO)实现的。
  • 重做(REDO)就是有些原因到导致事务对数据库的操作的修改在写入数据文件之前丢失了,此时就可以利用重做日志文件做该事务对数据库的变更。
  • 回退(UNDO)如果用户在事务提交之前想回滚事务,那么可以利用重做日志文件撤销事务对数据库所做的变更。

三、工作原理

重做日志文件记录所有对数据的改变,并提供由系统或媒体失败带来的恢复机制。

每个数据库至少有两个重做日志文件,采用循环写的方式进行工作。这样就能保证当一个重做日志文件在进行归档时,还有另一个重做日志文件可用。当一个重做日志文件被写满后,后台进行就开始写下一个重做日志文件。当所有的重做日志文件都写满后,LGWR进程再重新开始写入第一个重做日志文件,开始新的循环。

通常LGWR进程再开始下一个重做日志之前要确定: 该重做日志文件中的所有重做记录所对应的变更操作结果必须全部写入数据文件中。如果数据库处于“归档模式”,要确定对该重做日志文件进行了归档。


重做日志写进程(LGWR)在任意时刻只能写一组重做日志组,LGWR后台进程正在写的重做日志组叫做当前重做日志组。

  • LGWR将完全相同的信息从重做日志缓冲区复制到改组的每个重做日志文件中。
  • LGWR是以循环的方式写重做日志组的,当写满一个重做日志组时,就会开始写下一组重做日志,这称为日志切换,当写满最后一组时,LGWR又开始写第一组重做日志。
    • 这被称为日志切换
    • 检查点操作也产生
    • 信息被写入控制文件
  • 如果数据库运行在归档模式下(oracle默认为非归档模式),当LGWR的写操作从一个重做日志组切换到下一个重做日志组后,归档写进程(ARCH/ARCH0)就会将原来的重做日志文件中的信息复制到归档日志文件中。
  • oracle服务器保证在归档写进程没有将重做日志文件中的信息复制到归档日志文件中之前,LGWR进程不能再写这组重做日志。

1. 重做日志文件的写入

  • 为保证数据库是可以恢复的,写入重做日志文件时必须遵守如下两个原则:
  1. 写入的次序要严格按并发事务的执行次序;
  2. 必须先写入重做日志文件再写入数据文件。
  • 循环写入
  • 日志切换或日志序列号
  • 检查点

2. 强迫日志切换和启动检查点

  1. 日志切换

    可以使用ALTERSYSTEM SWITCH LOGFILE命令来启动

  2. 启动检查点

    • 设置fast_start_mttr_target参数

    • ALTER SYSTEM CHECKPOINT命令

    • ALTER SYSTEM CHECKPOINT;
      

3. 启动检查点进程的时机

  1. 重做日志切换

    即当一组重做日志写满时切换到下一组重做日志时。

  2. 关闭数据库

    使用NORMAL,TRANSACTIONAL,IMMEDIATTE选项关闭数据库时,启动检查点。

  3. 表空间脱机或被设置成BACKUP模式

  4. 手动检查点

    可以使用ALTER SYSTEM CHRCKPOINT手动设置一个检查点

  5. 时间检查点

    每隔多长时间执行一次检查点。可以通过调整LOG_CHECKPOINT_TOMEOUT和LOG_CHECKPOINT_INTERVAL参数来改变检查点执行的间隔。调整时小心,不要让间隔时间太长,也不要添加不必要的检查点。

  6. 初始化参数LOG_CHECKPOINT_TO_ALTER

    如果将设置成TRUE,则关于每个检查点的信息都将被记录到预警日志文件中。该参数默认值是FALSE,表示不记录检查点的信息。如果在预警日志文件中看到关于检查点没有完成的信息,就应该给数据库添加新的重做日志文件,这样会给检查点的完成提供更多的时间,也保证了检查点产生的不是很频繁。

四、概述重做日志文件的结构

当写满一个重做日志组时,就会开始写下一组重做日志。当写满最后一组时,LGWR又开始写第一组重做日志。

重做日志文件的结构

重做记录

重做记录

重做日志文件是由一条一条重做记录组成的,重做记录(REDO RECORD)是有一个个修改向量(CHANGE VECTOR)组成的。每个修改向量记录了对数据库中的某个数据块所作的修改。
重做记录记录了可以用来对数据可进行恢复的所有修改的数据,包括回退段。因此,重做日志文件同样也会保护回退数据。当使用重做日志文件来进行数据库恢复时,ORACLE将读取其中的重做记录(包括其中的修改向量),并且将这些修改用于相关的块中。
在ORACLE中,对数据库所作的修改实际上都是先在内存中进行的。当满足一定条件时先将修改操作产生的在SGA区的重做日志高速缓存中的修改结果,以重做记录的形式成批的写入重做日志文件中(此时就认为该事务已成功提交,因为此时可以进行事务的回退了,这种机制被称为“快速提交",然后才将内存中的在SGA区的数据告诉缓存中的修改结构成批的写入数据文件进行永久保存。因此,只要某项修改操作的重做记录没有丢失,就可以通过重做记录来恢复该项的修改操作。
在相应的数据提交之前,重做记录也可以被写入到重做日志文件中。如当SGA区的重做日志告诉缓存已经填满,或者提交了另一个事务,那么即使某些重做记录还没有提交,LGWR也会将重做日志缓存区中的所有重做记录全部写入到某个重做日志文件中,以便获得更多的空闲空间。这样,如果需要,ORACLE就可以回退这些修改了。

oracle之物理数据库结构概述(数据文件、重做日志文件,控制文件等各种数据库文件) oracle之物理数据库结构概述 (数据文件、重做日志文件,控制文件等各种数据库文件) 阅读详情

相关推荐

Oracle重做日志详细分析及示例

通过查询相关的系统视图,我们可以查看和监控重做日志的使用情况,并获取具体的重做日志记录信息。重做日志(Redo Log)是Oracle数据库中非常重要的组成部分,它记录了数据库的所有变更操作,包括事务的提交和回滚,以及数据文件的修改。通过查看具体的重做日志记录,我们可以了解每个日志记录的详细信息,如LSN、事务ID、操作类型、数据修改等。通过查询"v$log"视图,可以获取当前正在使用的重做日志文件的信息,包括日志序列号、日志序号、日志组号、日志文件名等。我们可以通过查询数据库的视图来查看重做日志的记录。

WaFlask的博客 245

Oracle之重做日志(Redo Log)管理

恢复操作最关键的结构是重做日志,它由两个或多个预先分配的文件组成,在数据库发生更改时这些文件存储所有更改。Oracle数据库的每个实例都有一个相关的重做日志,以在实例故障情况下保护数据库。1.重做线程在多数据库实例的环境中,每个数据库实例的重做日志也被称为一个重做线程。在典型的配置中,只有一个数据库实例访问Oracle数据库,因此只有一个线程存在。然而,在Oracle Real Application Clusters环境中,两个或多个实例同时访问一个数据库,并且每个实例都有自己的重做线程。

qq_54128287的博客 2799

Oracle数据库从入门到精通系列之四:重做日志文件

当数据库修改块(比如说更新块上的一行)时,这些修改会在内存中完成,它会修改高速缓存内的数据块,与此同时,数据库也会把重做这些修改所需的信息保存在重做日志缓冲区(redo log buffer)中。在Oracle数据库中完成的所有操作都会生成redo,并写入到在线重做日志文件中。例如,创建索引后,数据库将向SYS.OBJ$表中插入一行,以表示索引存在数据库中,这个插入动作会记入日志,以后如果表上有插入、更新和删除等操作,那么相应的索引的维护动作也会记入日志,但是最初写入磁盘的创建索引的操作不会记入日志中。

zhengzaifeidelushang的博客 1193

oracle 重做日志(Redo LogBuffer)

重做日志文件用于记录事务操作所引起的数据的变化,包括回滚段事务表、回滚块、数据块上的事务槽、数据行的变化等,当执行DDL、DML操作时,有LGWR进程将日志缓冲区中与事务相关的重做记录写入到重做日志文件中。当丢失或损坏数据库中的数据时,Oracle会根据redo文件中的记录 恢复丢失的数据。

睡不醒的每天 2197

Oracle数据库从入门到精通系列之十九:CDB、PDB、非CDB、SGA、PGA、重做日志、数据文件、临时文件、控制文件、闪回日志、表空间、连接Oracle数据库

重做日志是由一组物理文件组成的,这些文件被称为重做日志文件组。这样,在数据库发生故障时,可以使用重做日志文件来恢复数据库到故障发生前的状态。重做日志的作用在于保证数据库的一致性和持久性,以及在数据库发生故障时,可以使用重做日志来恢复数据库到故障发生前的状态。总之,非CDB环境下的数据库实例是一种传统的单租户数据库实例,虽然不能实现多租户功能,但在一些特定的场景下,仍然具有一定的应用价值。Oracle数据库的重做日志(Redo Log)是一种记录数据库所有修改操作的机制,它可以保证数据库的持久性和一致性。

zhengzaifeidelushang的博客 747

Oracle数据库从入门到精通系列之二十二:在线增大Oracle 19c 数据库重做日志redo log文件大小

可以通过以上的步骤再将group 4,5,6 切换成 group 1,2,3。,直至要删除的重做日志组状态变为inactive后执行删除。手动切换日志组,重复执行。

zhengzaifeidelushang的博客 790

Oracle数据库管理重做日志文件

管理重做日志文件: 重做日志文件也称联机重做日志,目的是恢复数据。 在数据库运行过程中,用户更改的数据会暂时存放在数据库的高速缓冲区中。为了提高写数据库的速度,并不是一旦有数据变化,就把变化的数据写到数据库文件中。频繁的读写磁盘会使数据库系统效率降低,所以,要等到数据库高速缓冲区中的数据达到一定的量或满足一定条件时,DBWR进程才会将变化了的数据写到数据文件中。这种情况下,如果DBWR把变化了...

玩IT的川 1943

25、Oracle数据库:丢失重做日志组和密码文件的恢复指南

本文详细介绍了在Oracle数据库中,当丢失重做日志组和密码文件时的恢复方法和最佳实践。针对重做日志组丢失的不同状态(INACTIVE、ACTIVE、CURRENT),提供了相应的恢复步骤,并涵盖了密码文件丢失后的重新创建流程及认证方法的选择。同时,通过实际案例分析帮助读者更好地理解操作步骤。无论您是数据库管理员还是Oracle用户,本文都能为您提供有价值的指导,保障数据库的稳定运行和数据安全。

apple5的专栏 110

oracle数据库重做日志的作用,说明Oracle数据库重做日志文件的工作方法

说明Oracle数据库重做日志文件的工作方法答: 采用循环写的方式进行工作,保证当一个重做日志文件在进行归档时,还有另一个重做日志文件可用。当一个重做日志文件被写满后,后台进程LGWR开始写入下一个重做日志文件,及日志切换,同时产生一个“日志序列号”,并将这个号码分配给即将开始使用的重做日志文件。当所有日志文件都写满后,LGWR进程再重新写入第一个日志文件。建筑高度超过100m,称之为( )建筑。...

weixin_32821643的博客 844

利用Matlab绘制非线性系统相图:从理论到实践

本文详细介绍了如何利用Matlab进行非线性系统的相图绘制与相平面分析。从理论基础的状态空间转换出发,通过无阻尼线性谐振子和范德波尔振荡器等实例,手把手演示了使用ode45求解器绘制相图、分析平衡点与极限环的完整流程,并分享了方向场绘制、参数分岔探索及常见错误解决方案等高级技巧,为动力学系统分析与控制设计提供了直观强大的可视化工具。

yhn456789的博客 905

Java课程设计——扫雷游戏程序

使用Java语言对扫雷游戏的复刻

m0_60671275的博客 3498

oracle数据库重做日志文件管理常用操作

1.查看日志视图 select * from v$log; select * from v$logfile; 2.强制执行日志切换 alter system switch logfile; 3.强制执行检查点操作 ALTER SYSTEM CHECKPOINT; 4..添加联机重做日志文件组 ALTER DATABASE ADD LOGFILE GROUP 1

似曾相识燕归来的博客 1186

新手入门:N-CMAPSS数据集解析与实战指南

本文详细解析了N-CMAPSS数据集的结构与应用,为新手提供航空发动机故障预测的实战指南。通过Python代码示例展示数据加载、探索和特征工程技巧,帮助读者快速掌握剩余寿命(RUL)预测的关键步骤,并分享常见问题解决方案与进阶学习路径。

weixin_29056701的博客 376

oracle数据库重做日志文件管理

本文主要敘述oracle重做日志文件的設定由來,幫助理解oracle内部結構。

m0_70247753的博客 214

Profinet从站开发初体验:用p-net开源库和树莓派快速搭建一个IO设备模拟器

本文详细介绍了如何使用p-net开源库和树莓派快速搭建Profinet从站IO设备模拟器。从开发环境准备、p-net源码编译到设备模拟器功能实现,提供了全流程实战指南,帮助开发者快速掌握工业通信协议开发技巧,适用于工业自动化领域的设备互联测试与验证。

weixin_30384217的博客 383

halcon3D 点云拟合球体

halon3D 点云拟合球面

weixin_43213429的博客 1639

创建重做日志组和成员

规划数据库的重做日志,并在数据库创建期间创建所有必需的组和重做日志文件的成员。但是,您可能希望创建其他组或成员。例如,将组添加到重做日志可以纠正重做日志组可用性问题。 要创建新的重做日志组和成员,您必须具有ALTER DATABASE系统特权。数据库最多可包含MAXLOGFILES组。 有关ALTER DATABASE语句的完整说明,请参见Oracle数据库SQL语言参考 ...

330

保姆级教程:在MounRiver Studio上为CH32V307配置FreeRTOS与LwIP网络栈

本文提供了一份详细的教程,指导如何在MounRiver Studio上为CH32V307配置FreeRTOS与LwIP网络栈。从开发环境搭建到网络功能验证,涵盖了FreeRTOS内核定制、LwIP协议栈配置、硬件抽象层实现等关键步骤,帮助开发者快速掌握RISC-V架构下的嵌入式网络开发。

weixin_29275257的博客 362

Oracle案例--迁移数据库控制文件、数据文件、重做日志文件

如:原先控制文件在/opt/oracle/oradata/mmsgdb/目录下,修改为/home/oradata/mmsgdb/ (这个目录手工建立,并改变属主)数据库启动可以指定使用哪个pfile文件,但不能指定使用spfile文件。数据文件、控制文件较大,占用当前磁盘空间,而且当前磁盘剩余空间严重不足。(2) startup pfile=‘pfile文件路径’本文章著作权归作者所有,任何形式的转载都请注明出处。来源: Transcendent。文章作者: Gavin Wang。

Gavin Blog 1300

Oracle EBS 帐套(Ledger/SOB)如何定义会计主体、如何支撑多准则 / 多报告、组织与帐套的绑定关系、以及项目落地时的设计差异。下面从实现逻辑、核心要素、组织模型、多账簿、科目设计、项

本文对比了Oracle EBS R12与SAP S/4HANA在帐套(Ledger)设计上的核心差异。Oracle采用4C架构(科目/币种/日历/准则),帐套作为独立会计主体,主辅账物理隔离;SAP则以公司代码为主体,通过平行分类账在同一凭证中实现多准则核算。关键差异体现在:Oracle强调边界隔离,适合差异大的集团;SAP注重统一视图,适合实时合并需求。实施时需注意:Oracle避免过度建账套,SAP需统筹科目与维度设计。两者分别体现了"盒子"与"滤镜"的设计哲学。

金牌架构师 417

深度学习注意力机制新突破:YOLOv8结合SimAM无参数注意力模块,让目标检测更精准!

在计算机视觉领域,注意力机制已成为提升模型性能的关键技术。然而,传统的注意力模块如SENet、CBAM等往往引入大量额外参数,增加了模型的复杂度和计算负担。本文介绍一种创新的无参数注意力机制——SimAM(Simple Parameter-Free Attention Module),并将其成功应用于YOLOv8目标检测框架。SimAM基于神经科学理论,通过定义能量函数为特征图计算3D注意力权重,无需任何额外参数即可显著提升模型性能。本文详细阐述了SimAM的理论基础、实现原理,并提供了完整的YOLOv8集

YOLO 99

oracle9i查看数据库文件,oracle9i中移动控制文件,数据文件,日志文件

oracle9i中移动控制文件,数据文件,日志文件ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成。一.移动数据文件:ALTER TABLESPACE方法:用此方法,要求此数据文件既不属于SYSTEM表空间,也不属于含有ACTIVE回滚段或临时段的表空间。$ sqlplus '/as sysdba'#把需要移动的数据文件对应的表空间offlineSQL> alter tabl...

weixin_42403124的博客 231

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

oracle数据库重做日志的作用,Oracle数据库重做日志文件的分析及其应用

0引言随着社会的发展和科技的进步,一个企业要在竞争激烈的环境中生存发展,就必须采用高效、便捷、功能强大的计算机技术来处理日常业务。其中数据库是必不可少的一个重要组成部分,每个企业都有大量的数据需要进行统一管理和处理,一个好的数据库系统能为企业提供强有力的业务支持。Oracle是一个功能强大、性能稳定,能够满足大多数现代企业对数据存储的要求的数据库系统。作为一个面向企业应用的数据库系统,它提供了完善...

weixin_34512840的博客 683

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【云原生进阶之数据库技术】第二章-Oracle-原理-4.2.5-联机重做日志文件解析

日志文件是Oracle数据库的事务日志,用于记录数据库的变更操作。它包含了所有已提交的事务的更改信息,包括INSERT、UPDATE、DELETE等操作。日志文件的主要作用是支持数据库的恢复和故障恢复。Oracle数据库有两种类型的日志文件:联机重做日志文件(Online Redo Log File)和归档日志文件(Archive Redo Log File)。联机重做日志文件是当前正在使用的日志文件,它记录了正在进行中的事务的更改操作。

junbaozi的专栏 2139

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

oracle数据库在线日志大小,Oracle 增大在线重做日志文件大小

今天发现Oracle数据库很慢,看到大量进程在等待log file switch (checkpoint incomplete),日志文件的使用情况如下:SYS@TEST15>select group#,sequence#,bytes/1024/1024 "BYTES(M)",members,archived,status from v$log;GROUP# SEQUENCE# BYT...

weixin_42413377的博客 423

oracle之物理数据库结构概述(数据文件、重做日志文件,控制文件等各种数据库文件)...

oracle之物理数据库结构概述(数据文件、重做日志文件,控制文件等各种数据库文件) 2011年02月16日   [b] oracle之物理数据库结构概述(数据文件、重做日志文件,控制文件等各种数据库文件) [/b][b]收藏 [/b]   oracle之物理数据库结构概述   oracle的物理结构其实是由各种各样的文件组成的,   其中与数据库相关的有:   数据文件...

nmv884rp 472
上一篇: 【数据库】Oracle数据库的启动过程和关闭模式
下一篇: 【数据库】Oracle存储结构
欧恩意
博客等级 码龄7年 677粉丝 138原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧恩意

如有帮助,感谢打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值