`
peter.lee
  • 浏览: 11857 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

log file switch (checkpoint incomplete)和Redo log状态分析

 
阅读更多

今天用户投诉系统慢,查DB,出现大量的log file switch (checkpoint incomplete) event的进程.

查redo log的status:

SQL> select * from v$log;

 

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIV STATUS                           FIRST_CHANGE# FIRST_TI

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

         1          1      97783  524288000          2 YES    ACTIVE                              7.9606E+10 2013-07-23 14:13

         2          1      97782  524288000          2 YES    ACTIVE                              7.9606E+10 2013-07-23 14:05

         3          1      97784  524288000          2 NO     CURRENT                        7.9606E+10 2013-07-23 14:19

 

原因为大量IO,DBWn未能及时将dirty cache data写入datafile,而造成redo log未能正常切换.解决方法,在现有的硬件的状态下,增加redo log file或增大redo log的size即可.

该下不探讨解决方法,而是提出一个疑问:

   我们知道,当redo log switch时发触发一个完全检查点,checkpoint将完成以下动作:

1. LGWR清空日志缓存,将重做记录写入redo log.

2.DBWn将脏数据写入datafile

3.CKPT将最新SCN及RBA写入数据文件头部及控制文件.

    我们再来了解一下redo log active状态下是一个什么的情况.当日志写满或alter system switch logfile时,LGWR会触发切换日志,新产生的日志的status就是Current,旧的日志会是Inactive或Active,Inactive是指可以被覆盖了,Active呢?Active和Current一样,是实例恢复所需要的,不能覆盖,那Active时,该redo log在玩些什么呢?Active时,代表datafile最近一次rba(scn)小于该日志最后一条重做记录的rba(scn),

   如此,就有一问题 :

  当下current的redo3,之前由redo2 switch来的,但switch log file时发生检查点应将redo log所有重做记录涉及的脏数据已写入datafile了,那又何来datafile的scn少于该日志的scn呢?

  原因应为,LGWR和DBWn是并行工作的,switch log file是触发的检查点只是将脏数据写入datafile的任务分给DBWn,然后LGWR就自己去产生新的日志继续写了,而不是等checkpoint完成后才生出新的日志继续干活.当脏数据比较多的时候,DBWn忙不过来,就只能一直active住日志文件了.

分享到:
评论

相关推荐

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

    5. **写入Redo Log文件**:当满足一定条件时(如Log Switch或Checkpoint),Redo Buffer中的Redo Entry会被写入到Redo Log文件中。 6. **更新数据文件**:最后,数据块的更改被写回到磁盘上的数据文件中。 #### 四、...

    switch存档工具Checkpoint v3.7.5游戏存档导出导入工具软件加简单教程

    Checkpoint v3.7.5就是这样一款专为Switch用户设计的高效存档管理软件,它不仅能够帮助我们轻松导出和导入游戏存档,还兼容TX OS和大气层等主流系统。 首先,让我们深入了解Checkpoint v3.7.5的功能特性。这款工具...

    rac数据库修改redolog日志组大小及数量.docx

    在进行日志组的删除和添加之前,需要先将原有的Redo Log日志组切换到非活动状态,即当前没有正在写入的Redo Log文件。可以通过以下命令实现: ```sql ALTER SYSTEM SWITCH LOGFILE; ALTER SYSTEM SWITCH LOGFILE; ...

    基于 Log 的通用增量 Checkpoint.pdf

    基于 Log 的通用增量Checkpoint 本文讨论了基于 Log 的通用增量Checkpoint,主要介绍了Checkpoint的性能优化之路、Change...Checkpoint的设计目标、设计机制、性能测试等方面都是非常重要的,需要详细的分析和讨论。

    俞航翔|基于Log的通用增量Checkpoint.pdf

    Changelog增量Checkpoint的工作流程包括状态写入、状态读取、定时Materialize和Truncate以及定期持久化Changelog。在Checkpoint过程中,状态数据首先写入到State table,然后持久化到DSTL(Durable Short-term Log)...

    oracle改redo日志方法.doc

    ALTER DATABASE ADD LOGFILE GROUP 4 '/u01/app/oradata/orcl/redo04.log' SIZE 50M; ALTER DATABASE ADD LOGFILE GROUP 5 '/u01/app/oradata/orcl/redo05.log' SIZE 50M; ALTER DATABASE ADD LOGFILE GROUP 6 '/u01...

    行业-44 redo log buffer中的缓冲日志,到底什么时候可以写入磁盘?l.rar

    在分析和优化数据库性能时,我们可能会关注到redo log buffer的相关指标,如redo generation rate(redo日志生成速率)和log file sync等待事件。通过对这些指标的监控和调整,我们可以更好地管理redo log buffer,...

    41 在Buffer Pool执行完增删改之后,写入日志文件的redo log长什么样.pdf

    然而,redo log并不是无限制增长的,它有一个循环使用的机制,需要定期被归档,以便释放空间,这就涉及到checkpoint的概念。 在讨论redo log时,我们还经常听到“预写式日志”(WAL)和“异步提交”等概念。预写式...

    行业-43 直接强行把redo log写入磁盘?非也,揭秘redo log buffer.rar

    它会查找最后的检查点,然后应用检查点之后的redo log条目,将数据库状态更新至事务完成时的状态。 redo log buffer的管理和优化是数据库性能的关键因素。过大的buffer可能导致内存浪费,而过小的buffer可能会增加...

    cpfile.rar_CPFile-v1.1_checkpoint_cpfile

    标题中的"cpfile.rar_CPFile-v1.1_checkpoint_cpfile"揭示了这是一个关于NILFS(New I/O Log File System)的文件,版本为v1.1,并且与checkpoint操作和cpfile驱动程序有关。NILFS是一种日志文件系统,设计用于提供...

    innodb log漫游 @何登成1

    6. **故障恢复**:系统崩溃后,InnoDB通过检查点(checkpoint)和Redo Log进行恢复。检查点记录了当前系统已知的稳定状态,通过检查点和Redo Log,可以确定哪些事务已提交,哪些需要回滚。 总之,Undo Log和Redo ...

    ORACLE中的checkpoint

    在Oracle数据库管理中,...Checkpoint是Oracle数据库高可用性和数据安全性的基石之一,通过合理配置Checkpoint相关的参数,可以显著提高系统的性能和可靠性,同时确保在故障发生时能够快速恢复数据库到一致状态。

    oracle 命令大全.doc

    `ALTER SYSTEM SWITCH LOGFILE` 用于在当前redo log文件组完成后,立即切换到下一个redo log文件,确保事务记录的连续性。 2. **强制检查点**: `ALTER SYSTEM CHECKPOINT` 强制数据库完成所有未完成的I/O操作,...

    Oracle数据库管理员的常用命令

    `alter database rename file 'c:/oracle/oradata/oradb/redo01.log' to 'c:/oracle/oradata/redo01.log';` 更改redo log文件的名称。 6. **Dropping Online Redo Log Group**: `alter database drop logfile ...

    Oracle日志介绍

    频繁的redo log切换可能表明存在checkpoint not complete等问题,需检查alert日志并监控系统I/O状态,必要时增大redo log文件大小以改善性能。 #### 四、redo log状态解析 v$log视图提供了redo log的当前状态信息...

    Oracle数据库管理分析过程.pptx

    利用V$LOG和V$LOGFILE动态视图,可以查看和分析重做日志的当前状态和信息。此外,Oracle提供了LogMiner工具,通过建立字典文件、指定重做日志、分析重做日志来追踪数据库的改变。建立字典文件(dbms_logmnr_d.build...

    oracle 常用命令

    1. **强制日志切换** (`ALTER SYSTEM SWITCH LOGFILE`): 当数据库需要切换到新的redo log file时,此命令可以强制执行,确保事务记录不丢失。 2. **强制检查点** (`ALTER SYSTEM CHECKPOINT`): 这个命令用于立即完成...

    Checkpoint:用于3DS和Switch的快速,简单的自制保存管理器

    一个快速简单的自制保存管理器,用于用C ++编写的3DS和Switch。 为什么要使用Checkpoint? 按照简单和高效的思想创建Checkpoint。 UI的设计旨在压缩尽可能多的选项,同时使其易于使用。 此外,Checkpoint极其轻巧...

    oracle常用命令

    使用`ALTER SYSTEM SWITCH LOGFILE`命令可以强制数据库进行日志切换,确保当前的日志文件被归档或替换,避免日志文件满导致的问题。 2. **强制检查点(Forcing Checkpoints)** `ALTER SYSTEM CHECKPOINT`命令可...

Global site tag (gtag.js) - Google Analytics