扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在Oracle中有一个事件叫Heartbeat,这个词在很多地方被提及,并且有着不同的含义(比如RAC中),我们这里要讨论的是CKPT的Heartbeat机制。
Oracle通过CKPT进程每3秒将Heartbeat写入控制文件,以减少故障时的恢复时间(这个我们后面再详细阐述)。
我们可以通过如下方法验证这个过程。
1.首先在系统级启用10046时间跟踪
并重新启动数据库使之生效
[oracle@jumper oracle]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Thu Jan 19 09:24:04 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> alter system set event='10046 trace name context forever,level 12' scope=spfile; System altered. SQL> shutdown immediate; SQL> startup Total System Global Area 114365800 bytes |
2.检查bdump目录下生成的跟踪文件
目录在$ORACLE_HOME/admin/$ORACLE_SID/bdump目录下,每个后台进程都会生成一个跟踪文件。
[oracle@jumper bdump]$ ls |
3.检查CKPT进程的跟踪文件
我们可以很容易的发现CKPT进程每3秒都对控制文件进行一次写入
[oracle@jumper bdump]$ tail -f conner_ckpt_2563.trc |
4.检查控制文件的变更
通过2次dump控制文件,比较其trace文件输出可以比较得到不同之处,我们发现,Oracle仅仅更新了Heartbeat这个数值。
[oracle@jumper udump]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Wed Jan 18 22:44:10 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> alter session set events 'immediate trace name CONTROLF level 10'; Session altered. SQL> exit SQL*Plus: Release 9.2.0.4.0 - Production on Wed Jan 18 22:44:18 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> alter session set events 'immediate trace name CONTROLF level 10' ; Session altered. SQL> exit [oracle@jumper udump]$ ls 63c63 |
In 8.0.5 a heartbeat mechanism was included in CKPT's timeout action (every 3 seconds) to update the checkpoint progress record for the thread in the controlfile.
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者