在数据库中,可以设置初始化参数log_checkpoints_to_alert为True,则数据库会将检查点的执行情况记入告警日志文件,这个参数的初始值为FALSE:
SQL> show parameter checkpoints_to NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_checkpoints_to_alert boolean FALSE SQL> alter system set log_checkpoints_to_alert=true; System altered.
复制
当数据库执行各类检查点时,日志文件中会记录详细信息,以下是来自Oracle10g告警日志文件中的信息摘录。
注意以下信息中,共发生了两次检查点,触发条件都是LOG SWITCH,在日志中,注意RBA信息和检查点SCN同时出现,这就是检查点队列的作用,LOG SWITCH检查点的特别之处在于需要同时在控制文件和数据文件头上标记检查点进度:
Wed Jul 19 17:33:05 2006 Thread 1 cannot allocate new log, sequence 44 Private strand flush not complete Current log# 3 seq# 43 mem# 0: /opt/oracle/oradata/alexhell/redo03.log Beginning log switch checkpoint up to RBA [0x2c.2.10], SCN: 8914464526139 Thread 1 advanced to log sequence 44 Current log# 4 seq# 44 mem# 0: /opt/oracle/oradata/alexhell/redo04.log Wed Jul 19 17:34:33 2006 Beginning log switch checkpoint up to RBA [0x2d.2.10], SCN: 8914464533295 Thread 1 advanced to log sequence 45 Current log# 5 seq# 45 mem# 0: /opt/oracle/oradata/alexhell/redo05.log Wed Jul 19 17:38:30 2006 Completed checkpoint up to RBA [0x2c.2.10], SCN: 8914464526139 Wed Jul 19 17:39:39 2006 Completed checkpoint up to RBA [0x2d.2.10], SCN: 8914464533295
复制
从以上信息还可以观察到,检查点的触发和检查点完成具有一定的时间间隔,这进一步说明,检查点仅仅是一个数据库事件,发生检查点时CKPT进程负责通知DBWR执行写出,但是检查点不会等待写出完成,它会在下一次触发时写出上一次成功完成的检查点信息。
在告警日志文件你可能还会看到类似如下信息:
Thu Jul 20 16:35:33 2006 Incremental checkpoint up to RBA [0x31.6f79.0], current log tail at RBA [0x31.7108.0] Thu Jul 20 17:05:39 2006 Incremental checkpoint up to RBA [0x31.77f8.0], current log tail at RBA [0x31.7f42.0] Thu Jul 20 17:06:23 2006 Beginning log switch checkpoint up to RBA [0x32.2.10], SCN: 8914464684949 Thread 1 advanced to log sequence 50 Current log# 5 seq# 50 mem# 0: /opt/oracle/oradata/eygle/redo05.log Thu Jul 20 17:11:27 2006 Completed checkpoint up to RBA [0x32.2.10], SCN: 8914464684949 Thu Jul 20 17:35:46 2006 Incremental checkpoint up to RBA [0x32.652.0], current log tail at RBA [0x32.809.0]
复制
这些信息和检查点的另外一个触发条件有关。为了保证检查点不会滞后整个日志文件,Oracle限制最长的检查点跨度不超过最小日志大小的90%。所以数据库在运行过程中会根据LOG TAIL进行计算,主动触发增量检查点。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
684次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
634次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
543次阅读
2025-04-20 10:07:02
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
491次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
488次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
476次阅读
2025-04-22 00:13:51
一页概览:Oracle GoldenGate
甲骨文云技术
468次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
418次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
372次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
353次阅读
2025-05-05 19:28:36