如何利用Oracle ASH历史采样分析数据库启动性能,追踪启动时挂起原因?
- 内容介绍
- 文章标签
- 相关推荐
本文共计986个文字,预计阅读时间需要4分钟。
相关专题:
直接说结论:oracle数据库启动时本身不产生ash数据,dba_hist_active_sess_history 里查不到“启动瞬间”的会话行为;所谓“通过ash分析启动时性能”,实际是分析启动后短时间内发生的挂起或响应迟滞,核心在于确认数据库是否真正在“启动中卡住”,还是已启动完成但被阻塞。
DBA_HIST_ACTIVE_SESS_HISTORY 查不到启动过程,因为ASH从实例启动后才开始采样
- ASH(Active Session History)依赖于后台进程
MMNL(Manageability Monitor Light),它在数据库 OPEN 状态之后才启动并开始每秒采样; - 实例处于
MOUNT或更早阶段(NOMOUNT)时,MMNL不运行,ASH 表为空; - 所以执行类似
SELECT * FROM DBA_HIST_ACTIVE_SESS_HISTORY WHERE SAMPLE_TIME > SYSDATE - 1/24,若返回零行,不说明“没挂起”,而极可能说明:- 数据库根本没成功 OPEN(停在 MOUNT 阶段);
- 或刚 OPEN 就因锁、资源争用等迅速陷入无响应,但采样尚未覆盖关键窗口。
本文共计986个文字,预计阅读时间需要4分钟。
相关专题:
直接说结论:oracle数据库启动时本身不产生ash数据,dba_hist_active_sess_history 里查不到“启动瞬间”的会话行为;所谓“通过ash分析启动时性能”,实际是分析启动后短时间内发生的挂起或响应迟滞,核心在于确认数据库是否真正在“启动中卡住”,还是已启动完成但被阻塞。
DBA_HIST_ACTIVE_SESS_HISTORY 查不到启动过程,因为ASH从实例启动后才开始采样
- ASH(Active Session History)依赖于后台进程
MMNL(Manageability Monitor Light),它在数据库 OPEN 状态之后才启动并开始每秒采样; - 实例处于
MOUNT或更早阶段(NOMOUNT)时,MMNL不运行,ASH 表为空; - 所以执行类似
SELECT * FROM DBA_HIST_ACTIVE_SESS_HISTORY WHERE SAMPLE_TIME > SYSDATE - 1/24,若返回零行,不说明“没挂起”,而极可能说明:- 数据库根本没成功 OPEN(停在 MOUNT 阶段);
- 或刚 OPEN 就因锁、资源争用等迅速陷入无响应,但采样尚未覆盖关键窗口。

