理解redo(6)日志却的流程和直接路径加载的REDO分析

当server process得到redo allocation latch进行redo log buffer分配之前,需要先嗅一下redo log file是否有足够的空间。倘若空间

当server process得到redo allocation latch进行redo log buffer分配之前,需要先嗅一下redo log file是否有足够的空间。倘若空间不足,则sp会发送switch log file的请求,,然后坐等log file switch completion事件的完成了。

日志却请求发出后,CKPT会进行一次增量检查点事件,而LGWR开始进行日志却换工作。

具体流程如下:

1)LGWR进程会通过控制文件中的双向链表,查找到一个可用的REDO LOG文件,作为新的CURRENT REDO LOG。

算法如下:

日志文件是inactive,并且已经归档了

优先使用unused日志文件组

2)将redo log buffer中还未写入的redo entries flush到current online redo log file,并且将最后一条redo entries的SCN作为本日志文件的high SCN记录在redo log header里面,然后关闭current online redo log file。

3)进行第二次控制文件事务,将刚刚关闭的REDO LOG标识为ACTIVE(这是个增量检查点事件,之所以标识为active,是因为它所保护的dirty buffer可能还未写到数据文件,如果已经全部写到磁盘了,则可以标识为inactive)将新的当前REDO LOG标识为CURRENT,如果数据库处于归档模式,还要将老的日志组记录到控制文件归档列表记录中,并且通知ARCn对该日志文件进行归档。

4)LGWR打开新的日志组的所有成员,在日志文件头记录当前日志sequence#和第一个redo block 的SCN(LOW SCN)

5)LGWR修改SGA中的标志位,允许生成新的REDO LOG信息

综上所述,日志切换是一种较为昂贵的操作。因为在却换期间,对数据库所有的交易都将被阻塞。但是加大REDO LOG文件大小和丢失数据的多少是无关的。理由:

1)redo entries是顺序写入的,写入一个和写入多个,对于恢复而言是一样的

2)存储故障,受影响的肯定是所有的REDO LOG文件

ARCHIVE模式下,直接路径加载会记录REDO。在非ARCHIVE LOG 模式下,直接路径加载这个动作不会记录REDO,但是Oracle由于系统改动需要维护段、区、表空间等而会产生REDO的。

下面将redo log file给dump出来

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1917490.html

(0)
上一篇 2025年2月22日 18:20:36
下一篇 2025年2月22日 18:22:29

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 理解redo(4)redo log buffer和LGWR

    redo log buffer缓存了sp产生的redo records,提高了oracle高并发的性能。LGWR则将log buffer中的records批量flush到redo file。 二者的由来,有二:    1)redo reco…

    数据库 2025年2月22日
    100
  • 理解redo(7)oracle redo并行机制的原理介绍

    由于log buffer是一块ldquo;共享rdquo;内存,为了避免冲突,它是受到redo allocation latch保护的,每个server process需要先获 在前面的文章中, 理解REDO LOG(1) 介质恢复和实例恢…

    数据库 2025年2月22日
    200
  • 理解redo(10)一个IMU的问题解释

    这是10G后Oracle的新特性:IMU。Redo先放在共享池中,Commit时,再传入Log Buffer。只有当日志传入Log Buffer时,Oracle的Redo统 先看一个现象: 以上的现象,只有commit或者flush IMU…

    数据库 2025年2月22日
    200
  • 查看Oracle的redo日志切换频率

    %ignore_a_1%,两个sql,原理是一样的,第二个用到了统计函数。 查看Oracle的redo日志切换频率 两个sql,原理是一样的,第二个用到了统计函数。   时间单位:分钟 方法一、   select * from v$log …

    数据库 2025年2月22日
    200
  • Oracle redo文件记录的内容

    对于redo日志来说,重做信息却相当精简,oracle只需要记录那些重构事务必须的信息(如事务号,文件号,块号,行号,字段等)即可,这个数据 redo的内容 Oracle通过redo来实同快速提交,一方面是因为redo log file可以…

    数据库 2025年2月22日
    200
  • Oracle redo 原理

    Oracle通过Latch来保护和协调Redo Logo Buffer的工作。同Redo相关的Latch主要有Redo Copy Latch、Redo Allocation Latch等,Redo redo log buffer位于sga_…

    数据库 2025年2月22日
    200
  • innodb中的REDO解析

    INNODB存储引擎的预写日志方式来保证事务的完整性。这意味着磁盘上的存储的数据页和内存缓冲池中的页是不同步的,对于内粗缓冲中 在innodb存储引擎中,事务日志通过重做(redo)日志文件和innodb存储引擎的日志缓冲(innodb l…

    数据库 2025年2月22日
    200
  • Oracle redo 日志调整

    日期:20130605 10:00 环境:Oracle 11.2.0.3 RAC,双节点, RedHat 5.8 +DS: DELL 3600I 查询过去24小时的日志切换之间的平均, 日期:20130605 10:00 环境:Oracle…

    数据库 2025年2月22日
    200
  • 普通表与临时表DML操作会产生REDO/UNDO对比与分析

    ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据,或者保存在一 Oracle临时表介绍: oracle数据库除了可以保存永久表外,还可以建立临时表tem…

    数据库 2025年2月22日
    200
  • Oracle undo我们需要掌握什么

    《Oracleundo我们需要掌握什么》引言:undo是Oracle数据库的重要组件,刚入门的朋友建议要把undo的原理和机制理解明白,尤其是和redo组件的区别和联系。了解undo 《oracle undo我们需要掌握什么》 引言:und…

    数据库 2025年2月22日
    200

发表回复

登录后才能评论