ASH报告缺少关键会话大概率因视图选择、时间窗口或采样条件错误:v$active_session_history为1小时内存环形缓冲区,dba_hist_active_sess_history仅存1/10样本且依赖AWR快照;查空需先验证_ash_enable=TRUE、MMNL进程正常、ASH buffers充足,并用精确时间范围和快照存在性检查定位。
ASH报告缺少关键会话,大概率不是数据丢了,而是你查的视图、时间窗口或采样条件没对上——v$active_session_history 本身是内存滚动缓冲区,1小时内数据随时可能被覆盖,而 dba_hist_active_sess_history 又只存1/10的样本且依赖AWR快照节奏。
很多升级到19c后突然查不到ASH数据的案例,根源是隐含参数被重置或后台进程异常:
_ash_enable = FALSE 是最常见原因,尤其在ADG备库或升级后未显式启用;执行 SELECT value FROM v$parameter WHERE name = '_ash_enable' 验证,若为 FALSE,需重启实例前加 ALTER SYSTEM SET "_ash_enable"=TRUE SCOPE=SPFILE
MMNL 进程挂了:查 SELECT program, status FROM v$process WHERE program LIKE '%MMNL%',缺失或状态非 ACTIVE 就得排查实例告警日志v$sgastat 中 ASH buffers 分配不足(比如11g默认4MB,高并发下实际需30MB+),可临时调大 _ash_size,但必须重启历史表不是“全量录像”,它是每10秒从内存采一次样,且只保留最近1小时(默认)——你看到的“空”,往往是时间窗口和采样节奏没咬合:
SAMPLE_TIME > SYSDATE - 1/24(一小时)容易跨过采样点;改用精确范围,比如死锁发生在 14:22:37,就查 SAMPLE_TIME BETWEEN TIMESTAMP '2026-07-28 14:22:30' AND TIMESTAMP '2026-07-28 14:22:45'
SELECT MIN(snap_id), MAX(snap_id) FROM dba_hist_snapshot WHERE end_interval_time > SYSDATE - 1/24,若无结果,说明那段历史根本没入库blocking_session 在历史表里大量为空:19c以前版本该字段不稳定,优先用 final_blocking_session(12c+)替代,但仅限 v$active_session_history,历史表不带这个字段ASH默认只采非空闲会话,但某些短时等待(如持锁300ms)可能因采样偏差漏掉,或被误判为其他事件:
event LIKE 'enq: TX%':enq: TX - allocate ITL entry 和 enq: TX - row lock contention 完全不同,后者才是真行锁;前者是ITL不足,查 p3 值区分——行锁争用的 p3 通常是 0x0 或小整数,ITL的是 0x2000000+session_state = 'WAITING' + wait_class = 'Concurrency' 组合里,单独查 event 容易漏;例如 library cache lock 有时伪装成TX类等待SQL*Net message from client)不会进ASH主分析流,但它占满连接池时,会把真正干活的会话挤出采样窗口——先查这类长等待,再看是否影响了核心事务采样率最常被忽略的点:ASH不是“所有会话的完整日志”,它是个带偏差的统计抽样。你找不到某个会话,未必是它没活动,更可能是它等得太短、太散,或者刚好卡在两次采样中间。诊断时永远先锁定时间、事件、状态三要素,再决定查内存视图还是历史表,而不是反过来。
Tplink企业版路由器WiFi名称的默认设置介绍(Tplink企业版路由器WiFi名称的默认设置是什么)
Tplink路由器灯常亮无法上网的原因分析(如何解决Tplink路由器灯常亮无法上网的问题)
Tplink千兆企业级路由器自动重启的作用和优势介绍(如何设置Tplink千兆企业级路由器自动重启功能)
一根天线的tplink路由器有哪些(一根天线的Tplink路由器的特点和优势介绍)
tplink路由器外网访问不了nas(Tplink路由器外网访问NAS的原因分析)
Tplink无法搜到路由器的原因分析(如何解决Tplink无法搜到路由器的问题)