Oracle 如何计算 AWR 报告中的 Sessions 数量
全网最全面的Oracle AWR 专栏,持续更新中…
 在 Oracle AWR 报告的开头,有一个非常重要的指标——“Sessions”,它表示对应 Snap ID 创建快照时数据库中的会话数量。
 
这个数值来自 DBA_HIST_SYSSTAT 视图中的统计项 “logons current”。
下面通过一个简单的实验,来看看 Oracle 是如何得到这个数值的:
SELECT COUNT(*) FROM V$SESSION;SELECT value FROM V$SYSSTAT WHERE NAME = 'logons current';EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();SELECT VALUE
FROM DBA_HIST_SYSSTAT
WHERE STAT_NAME = 'logons current'AND SNAP_ID = (SELECT MAX(SNAP_ID) FROM DBA_HIST_SNAPSHOT); 

从实验结果可以看到,AWR 报告中的 “Sessions” 数值,实际上反映的是快照被创建时那一刻数据库中的会话数量。
 它不是一个平均值,也不是一个区间内的累计值,而是一个时间点值。
这一点非常值得注意:AWR 报告中大多数指标(例如 CPU、IO、Redo 等)都是区间平均或累计的结果,而 Sessions 指标则仅代表快照生成瞬间的状态,因此在快照间隔期间它可能会有明显波动。
号主在certview.oracle.com网站上的证书清单截图。
 
关于号主,姚远:
- Oracle ACE(Oracle和MySQL数据库方向)
 - 华为云最有价值专家
 - 《MySQL 8.0运维与优化》的作者
 - 拥有数十项数据库认证
 - 曾任IBM公司数据库部门经理
 - 20+年DBA经验,服务2万+客户
 - 精通C和Java,发明两项计算机专利
 - 两次获得国家部级奖
 
