`

Oracle检查点checkpoint 基础知识

 
阅读更多

 

在Oracle里面,检查点分为两种:完全检查点和增量检查点。

 

1、完全检查点(full checkpoint)

在Oracle8i之前,数据库的发生的检查点都是完全检查点,完全检查点会将数据缓冲区里面所有的脏数据块写入相应的数据文件中,并且同步数据文件头和控制文件,保证数据库的一致。完全检查点在8i之后只有在下列两种情况下才会发生:

(1、)DBA手工执行alter systemcheckpoint的命令;

(2、)数据库正常shutdown(immediate,transcational,normal)。

由于完全检查点会将所有的脏数据库块写入,巨大的IO往往会影响到数据库的性能。因此Oracle从8i开始引入了增量检查点的概念。

 

2、增量检查点 (incrementalcheckpoint)

检查点队列,用于记录数据库里面当前所有的脏数据块的信息,DBWR 根据这个队列而将脏数据块写入到数据文件中。检查点队列按时间先后记录着数据库里面脏数据块的信息,里面的条目包含RBA(Redo Block Address),重做日志里面用于标识检查点期间数据块在重做日志里面第一次发生更改的编号)和数据块的数据文件号和块号。

 

在检查点期间不论数据块更改几次,它在检查点队列里面的位置始终保持不变,检查点队列也只会记录它最早的RBA,从而保证最早更改的数据块能够尽快写入。当DBWR将检查点队列里面的脏数据块写入到数据文件后,检查点的位置也要相应地往后移,CKPT每三秒会在控制文件中记录检查点的位置,以表示Instance Recovery时开始恢复的日志条目,这个概念称为检查点的“心跳”(heartbeat)。

 

注意:增量检查点并不去更新数据文件头,只是在控制文件中记录了checkpoint progress record这个区域,记下lowrba,on-disk rba等信息。这些信息就可以用来快速恢复。

 

每隔3秒钟ckpt会去更新控制文件中的checkpoint progress recored区域,记录checkpoint执行的情况。

 

解疑:这里应该是只更新控制文件,每3秒不是更新数据文件头,而是在控制文件中记录checkpoint的执行情况,基于增量检查点和checkpoint  queue的原理,在发生检查点的时候,ckpt 进程每次只是告诉dbwr,写dirty buffe要一直写到最新这个位置(发生检查点:也就是alter system checkpoint),这样做呢,仅仅是告诉dbwr一个checkpoint queue中的结束点,ckpt绝对不会等到dbwr写完所有脏数据在更新控制文件和数据文件头,而是每3秒钟,在控制文件中的checkpoint progress recored区域中报告一下dbwr最新写入的位置(也就是dbwr的写状态的scn)。这样使得,比如数据库要做恢复的时候(instance recovery)可以从这个最新报告的scn位置开始做恢复,而不是从数据文件中的checkpoint  scn开始做恢复,这样将缩短恢复时间,尤其是instance  crash的情况下启动更快。另外要注意的是,检查点发生的时候,ckpt 去更新数据文件头和控制文件,并不是把当前检查点发生时候的scn 更新进去,而是把上一次dbwr写入已经完成的检查点发生时候的  scn 更新进去,也就是说,更新控制文件和数据文件头是滞后于检查点的发生的,这个从恢复的原理也很容易理解,因为检查点发生的时候dirtybuffer还没有写入,自然不能立即更新成当前的scn了。

 

检查点位置发生变更后,Oracle里面通过4个参数用于控制检查点位置和最后的重做日志条目之间的距离。在这里面需要指出的是,多数人会将这4个参数看作控制增量检查点发生的时间。事实上这是错误的,这4个参数是用于控制检查点队列里面的条目数量,而不是控制检查点的发生。

(1)fast_start_io_target

该参数用于表示数据库发生Instance Recovery的时候需要产生的IO总数,它通过v$filestat的AVGIOTIM来估算的。比如我们一个数据库在发生Instance Crash后需要在10分钟内恢复完毕,假定OS的IO每秒为500个,那么这个数据库发生Instance Recovery的时候大概将产生500*10*60=30000次IO,也就是我们将可以把fast_start_io_target设置为 30000。

(2)fast_start_mttr_target

我们从上面可以看到fast_start_io_target来估算检查点位置比较麻烦。Oracle为了简化这个概念,从9i开始引入了 fast_start_mttr_target这么一个参数,用于表示数据库发生InstanceRecovery的时间,以秒为单位。这个参数我们从字面上也比较好理解,其中的mttr是mean time to recovery的简写,如上例中的情况我们可以将fast_start_mttr_target设置为600。当设置了 fast_start_mttr_target后,fast_start_io_target这个参数将不再生效,从9i后fast_start_io_target这个参数被Oracle废除了。

(3)log_checkpoint_timeout

该参数用于表示检查点位置和重做日志文件末尾之间的时间间隔,以秒为单位,默认情况下是1800秒。

(4)log_checkpoint_interval

该参数是表示检查点位置和重做日志末尾的重做日志块的数量,以OS块表示。

(5)90% OFSMALLEST REDO LOG

除了以上4个初始化参数外,Oracle内部事实上还将重做日志文件末尾前面90%的位置设为检查点位置。在每个重做日志中,这么几个参数指定的位置可能不尽相同,Oracle将离日志文件末尾最近的那个位置确认为检查点位置。


分享到:
评论

相关推荐

    Oracle DBA基础知识

    ### Oracle DBA基础知识 #### 一、Oracle体系结构 ##### 1.1 Oracle Server Oracle Server 是Oracle数据库的核心组件,负责处理用户请求并提供数据库服务。它由两大部分组成:系统全局区(SGA)和程序全局区(PGA)。...

    Oracle架构的基础知识(入门级)

    ### Oracle架构的基础知识(入门级) #### 一、Oracle数据库结构概述 在Oracle数据库系统中,数据被组织成一系列逻辑和物理结构。了解这些结构对于理解Oracle如何存储和管理数据至关重要。 ##### 1. 数据库文件...

    Oracle基础知识培训.ppt

    - **Checkpoint (CKPT)**:在数据库产生检查点时协调DBWR工作,更新数据文件和控制文件的检查点信息。 5. **Oracle存储结构管理**: - **表空间管理**:创建表空间(如`CREATE TABLESPACE`),删除表空间(`DROP ...

    Oracle基础知识培训.pptx

    3. **后台进程**:Oracle的后台进程如Database Writer (DBWR)负责将内存中的更改写入数据文件,Checkpoint (CKPT)在检查点时更新数据和控制文件,确保数据一致性。 4. **存储结构**:表空间是Oracle数据库存储管理...

    Oracle基础知识_第六讲PPT课件.pptx

    本课件主要讲解了Oracle数据库的联机重做日志文件及其相关概念,包括归档日志文件,旨在帮助学习者掌握数据库恢复的基础知识。 联机重做日志文件的作用在于记录数据库的所有事务操作,即使数据库因硬件故障或操作...

    解析学习Oracle架构所应了解的基础知识

    - CKPT(Checkpoint Process):在检查点时更新控制文件和数据文件的状态信息,确保一致性。 - 归档进程:处理归档日志的生成和管理。 - 服务进程和用户进程:处理客户端请求和服务数据库操作。 了解Oracle的...

    Oracle 体系结构 入门基础

    此外,日志切换时还会产生检查点 CKPT(Checkpoint),这是数据库恢复的重要步骤之一。 #### 六、数据库参数文件 - **服务器参数文件 (spfile)**:二进制格式的参数文件,通常用于设置数据库实例的动态参数。 - **...

    Oracle基础知识_第六讲PPT学习教案.pptx

    `ALTER SYSTEM SWITCH LOGFILE`命令用于强制切换日志,而`ALTER SYSTEM CHECKPOINT`或设置`FAST_START_MTTR_TARGET`参数可触发检查点,以提高故障恢复速度。 `ARCHIVE_LAG_TARGET`参数允许用户设置一个目标值,以...

    oracle原厂培训笔记

    - **增量检查点** (Checkpoint Not Complete): 仅更新控制文件中的SCN。 - **完全检查点** (Handy Checkpoint): 更新控制文件和数据文件。 - **恢复机制**: - **SMON (System Monitor)**: 负责恢复失败的事务至...

    oracle归档日志笔记

    ### Oracle归档日志知识点详解 ...以上内容详细介绍了Oracle数据库中在线重做日志的基础概念、特点、管理方法以及日志切换与检查点的相关操作。了解这些知识对于维护Oracle数据库的稳定性和安全性至关重要。

    Oracle基础培训.pptx

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其基础培训主要涵盖了Oracle的体系结构、内存结构、进程结构、存储结构以及数据库的启动、关闭、跟踪和排错等基础知识。以下是对这些内容的详细阐述: ...

    ORACLE基础教程

    了解这些基础知识是学习Oracle数据库管理的关键。通过深入学习这些概念,你可以更好地理解Oracle数据库的工作原理,从而更有效地管理和优化数据库性能。随着对Oracle的深入学习,你还将接触到其他高级主题,如存储...

    oracle 基础教程I

    - **CKPT (Checkpoint Process)**:执行检查点操作,同步数据库状态。 - **LGWR (Log Writer Process)**:将重做日志缓冲区中的重做记录写入重做日志文件。 #### 四、用户与服务器进程交互 - **用户进程 (User ...

    oracle 书籍

    - **CKPT (Checkpoint)**:协调检查点操作,确保数据库的一致性。 ##### 逻辑结构 - **表空间**:逻辑上将数据库分成多个部分,便于管理和分配空间。 - **段**:数据库对象的集合,如表、索引等。 - **区间**:...

    Oracle课堂笔记(很全很详细的Oracle笔记)

    - **CKPT (Checkpoint Process)**: 控制检查点的发生。 - **SMON (System Monitor Process)**: 清理未使用的临时段,并在数据库启动时进行恢复。 - **PMON (Process Monitor Process)**: 监视失败的会话,并清除...

    ORACLE 数据库入门视频

    - CKPT(Checkpoint):标记检查点,确保数据库在下次启动时能够快速恢复到一致状态。 - ARCH(Archiver):负责归档日志文件,用于备份和恢复。 7. **SQL语句执行流程** - 用户发送SQL请求,打开游标。 - SQL...

    Oracle基础.doc

    - CKPT(Checkpoint)进程触发检查点,同步数据文件与控制文件的状态。 2. 内存:内存主要分为SGA(System Global Area)和PGA(Program Global Area)。 - SGA包括共享池(Share Pool)、数据缓冲区(DB Buffer ...

    ORACLE 数据库入门.ppt

    Oracle有多个后台进程执行特定任务,如PMON(Process Monitor)、SMON(System Monitor)、LCKN(Lock Manager)、RECO(Recovery Process)、DBWR(Database Writer)、LGWR(Log Writer)、CKPT(Checkpoint ...

    ORACLE+数据库入门ORACLE+数据库入门

    CKPT(Checkpoint)触发检查点;ARCH(Archiver)处理归档备份。 当用户执行SQL语句时,系统会经历一系列步骤:解析SQL,将其放入共享池,从数据文件读取相关数据到缓冲区,进行操作并可能将更改记录到重做日志缓冲...

Global site tag (gtag.js) - Google Analytics