控制文件的HeartBeat
在正常MOUNT 数据库的过程中,数据库的警报日志文件仅记录如下信息:
alter database mount
Sat Apr 29 10:20:42 2006
Successful mount of redo thread 1, with mount id 1408096182.
Sat Apr 29 10:20:42 2006
Database mounted in Exclusive Mode.
Completed: alter database mount
在这一步骤中,数据库需要计算mount id 并将其记录在控制文件中,然后开始启动心跳
(Heartbeat),每3 秒更新一次控制文件。可以用以下命令间隔3 秒转储2 次控制文件信息:
alter session set events 'immediate trace name CONTROLF level 8' ;
在Linux 上用diff 命令比较2 个文件可以发现,控制文件在MOUNT 状态下发生改变的
只有这个Heartbeat:
[oracle@jumper udump]$ diff conner_ora_25542.trc conner_ora_25706.trc
...
64c63
< heartbeat: 588983634 mount id: 1408096182
---
> heartbeat: 588983636 mount id: 1408096182

Heartbeat表明实例已经被特定例程所Mount,这个属性主要用于OPS/RAC环境。但是
Heartbeat在单实例环境中同样存在。可以从一个内部表(需要以SYS用户登录)中查询到当前
的Heartbeat值(X$KCCCP的含义为[K]ernel [C]ache [C]ontrolfile management [C]heckpoint
[P]rogress):
SELECT CPHBT from X$KCCCP;
从Oracle 9i 开始,Oracle 在数据库内部通过等待事件control file heartbeat 来记录这个事件
的相关等待;在Oracle 10g 中,如果使用自动存储管理技术(Automatic Storage Management,
ASM),那么还会增加一个ASM 实例的心跳事件。以下输出来自Oracle10g:
SQL> select event#,name
2 from v$event_name where name like '%heart%';
EVENT# NAME
---------- ----------------------------------------------------------------
282 ASM mount : wait for heartbeat
423 control file heartbeat
了解了启动的各个步骤,也就可以在发生问题的时候,快速定位,准确判断,从而快速
解决问题。大家其实不用看很多 只用看红的
我系统装的WIN7 不能用diff命令
还有conner_ora_25542.trc 的路径是哪
我在自己系统里面找到了F:\oracle\product\10.1.0\admin\interlib\udump\interlib_ora_4104.trc
但是我用editplus打开这个文件里面为什么找不到heartbeat呢