深入理解Oracle Checkpoint

一、Checkpoint(检查点)核心理解

把检查点类比成 Word 的保存,分为手动检查点、自动检查点两类。

核心流程:

CKPT(检查点进程)定期通知 DBWR(数据库写进程),将内存缓冲区(Buffer Cache)里被修改过的脏块,持久化写入磁盘数据文件。

  1. 核心作用:缩小内存脏块规模,保证内存与磁盘数据一致性;
  2. 最终目的:数据库异常宕机后,大幅缩短崩溃恢复(Crash Recovery)时长。
    原理:已写入磁盘、后续未再修改的脏块,重启恢复时可直接跳过,无需重做日志回放。
    检查点级别(Oracle 10g 及以上)
    共 4 个层级,粒度由大到小:
    数据库级 → 表空间级 → 数据文件级 → 对象级(Object)
    二、触发 DBWR 写脏块的常见场景
    满足任一条件,都会触发 DBWR 刷写脏块:
  3. 执行 Checkpoint 检查点操作
  4. 到达预设刷写时间阈值
  5. Buffer Cache 内脏块数量达到上限阈值
  6. 在线重做日志(Redo Log)发生切换
    补充:若脏块写入压力大、单 DBWR 效率不足,可启用多 DBWR 进程并行刷写,提升性能。
    运维提示:不同 Oracle 版本,脏块阈值、DBWR 调度算法存在差异,日常运维无需深究底层算法细节(Oracle 为闭源商业软件)。
    三、Redo 日志中记录 DBWR 刷块信息(Oracle 9i+)
    从 Oracle 9i 开始,在线重做日志(Online Redo Log)会记录 DBWR 写脏块行为,对应标识为 OP:23.1。
    该日志记录可让崩溃恢复进程快速识别 "已落盘且未再修改的数据块",直接跳过恢复逻辑,进一步提速。
    四、实操演示(Oracle 10g 环境日志转储)
  7. 查看数据库版本
    select * from v$version where rownum<2;

输出:Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Prod

  1. 转储指定重做日志(筛选层 23、操作码 1,即 DBWR 刷块记录)

alter system dump logfile '/archlog/ora10205/1_64_788264706.dbf' layer 23 opcode 1;

  1. 操作系统层统计 & 查看跟踪文件
  2. 统计本次转储中Block Written(数据块已写入)总条数:
    bash

cat ora10205_ora_13871.trc|grep "Block Written"|wc -l

结果:4644 条,代表本次日志里共记录4644个被DBWR刷入磁盘的数据块

  1. 查看跟踪文件详情:
    cat ora10205_ora_13871.trc

关键字段解读(日志片段)

Block Written - afn: 4 rdba: 0x01002408 ... scn: 0x0000.000a1ecd

• Block Written:标识这是 DBWR 写入数据块的日志记录

• afn:文件编号

• rdba:数据块地址

• scn:系统改变号,标记数据块落盘时的版本

相关推荐
星恒随风6 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
无奈笑天下7 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
xiaoye-duck8 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
AllData公司负责人9 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析
2601_967987379 小时前
Sqlite参考手册
数据库·python·sqlite·api·教程
隔窗听雨眠10 小时前
Oracle日志体系分层结构与故障定位路径
数据库·oracle·故障排查
为思念酝酿的痛10 小时前
C语言操作MySQL
数据库·mysql
ShineWinsu10 小时前
对于Qt:QTabWidget常见属性的解析
开发语言·数据库·c++·qt·浏览器·qtabwidget·标签页
星恒随风20 小时前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
吴名氏.1 天前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent