今天用户投诉系统慢,查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住日志文件了.
相关推荐
5. **写入Redo Log文件**:当满足一定条件时(如Log Switch或Checkpoint),Redo Buffer中的Redo Entry会被写入到Redo Log文件中。 6. **更新数据文件**:最后,数据块的更改被写回到磁盘上的数据文件中。 #### 四、...
Checkpoint v3.7.5就是这样一款专为Switch用户设计的高效存档管理软件,它不仅能够帮助我们轻松导出和导入游戏存档,还兼容TX OS和大气层等主流系统。 首先,让我们深入了解Checkpoint v3.7.5的功能特性。这款工具...
在进行日志组的删除和添加之前,需要先将原有的Redo Log日志组切换到非活动状态,即当前没有正在写入的Redo Log文件。可以通过以下命令实现: ```sql ALTER SYSTEM SWITCH LOGFILE; ALTER SYSTEM SWITCH LOGFILE; ...
基于 Log 的通用增量Checkpoint 本文讨论了基于 Log 的通用增量Checkpoint,主要介绍了Checkpoint的性能优化之路、Change...Checkpoint的设计目标、设计机制、性能测试等方面都是非常重要的,需要详细的分析和讨论。
Changelog增量Checkpoint的工作流程包括状态写入、状态读取、定时Materialize和Truncate以及定期持久化Changelog。在Checkpoint过程中,状态数据首先写入到State table,然后持久化到DSTL(Durable Short-term Log)...
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...
在分析和优化数据库性能时,我们可能会关注到redo log buffer的相关指标,如redo generation rate(redo日志生成速率)和log file sync等待事件。通过对这些指标的监控和调整,我们可以更好地管理redo log buffer,...
然而,redo log并不是无限制增长的,它有一个循环使用的机制,需要定期被归档,以便释放空间,这就涉及到checkpoint的概念。 在讨论redo log时,我们还经常听到“预写式日志”(WAL)和“异步提交”等概念。预写式...
它会查找最后的检查点,然后应用检查点之后的redo log条目,将数据库状态更新至事务完成时的状态。 redo log buffer的管理和优化是数据库性能的关键因素。过大的buffer可能导致内存浪费,而过小的buffer可能会增加...
标题中的"cpfile.rar_CPFile-v1.1_checkpoint_cpfile"揭示了这是一个关于NILFS(New I/O Log File System)的文件,版本为v1.1,并且与checkpoint操作和cpfile驱动程序有关。NILFS是一种日志文件系统,设计用于提供...
6. **故障恢复**:系统崩溃后,InnoDB通过检查点(checkpoint)和Redo Log进行恢复。检查点记录了当前系统已知的稳定状态,通过检查点和Redo Log,可以确定哪些事务已提交,哪些需要回滚。 总之,Undo Log和Redo ...
在Oracle数据库管理中,...Checkpoint是Oracle数据库高可用性和数据安全性的基石之一,通过合理配置Checkpoint相关的参数,可以显著提高系统的性能和可靠性,同时确保在故障发生时能够快速恢复数据库到一致状态。
`ALTER SYSTEM SWITCH LOGFILE` 用于在当前redo log文件组完成后,立即切换到下一个redo log文件,确保事务记录的连续性。 2. **强制检查点**: `ALTER SYSTEM CHECKPOINT` 强制数据库完成所有未完成的I/O操作,...
`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 ...
频繁的redo log切换可能表明存在checkpoint not complete等问题,需检查alert日志并监控系统I/O状态,必要时增大redo log文件大小以改善性能。 #### 四、redo log状态解析 v$log视图提供了redo log的当前状态信息...
利用V$LOG和V$LOGFILE动态视图,可以查看和分析重做日志的当前状态和信息。此外,Oracle提供了LogMiner工具,通过建立字典文件、指定重做日志、分析重做日志来追踪数据库的改变。建立字典文件(dbms_logmnr_d.build...
1. **强制日志切换** (`ALTER SYSTEM SWITCH LOGFILE`): 当数据库需要切换到新的redo log file时,此命令可以强制执行,确保事务记录不丢失。 2. **强制检查点** (`ALTER SYSTEM CHECKPOINT`): 这个命令用于立即完成...
一个快速简单的自制保存管理器,用于用C ++编写的3DS和Switch。 为什么要使用Checkpoint? 按照简单和高效的思想创建Checkpoint。 UI的设计旨在压缩尽可能多的选项,同时使其易于使用。 此外,Checkpoint极其轻巧...
使用`ALTER SYSTEM SWITCH LOGFILE`命令可以强制数据库进行日志切换,确保当前的日志文件被归档或替换,避免日志文件满导致的问题。 2. **强制检查点(Forcing Checkpoints)** `ALTER SYSTEM CHECKPOINT`命令可...