首页 > 解决方案 > 如何在 Oracle 中获取会话明智的性能指标(CPU/IO/内存)历史信息?

问题描述

我之前在 Teradata 性能工程部门工作。在 Teradata 中,我们有一个类似于 pdcrinfo.DBQLogTbl_hst 的视图,其中包含 TD DBA 配置的过去 3-4 个月的会话明智的 CPU I/O 信息以及查询文本。

现在我对 Oracle 很陌生。如果有人可以通过加入系统表来提供类似的视图名称或查询,那就太好了,我们可以通过它获得至少过去 7 天的 Session wise CPU I/O 和查询信息。已经尝试形成 1 个查询,如下所示:

Select substr(c.sid || ',' || c.serial#,0,15) sid,   c.USERNAME,c.PROGRAM,c.MACHINE,c.OSUSER,
    c.LOGON_TIME,c.TERMINAL,c.sql_address,c.sql_hash_value,
    ROUND (sum(b.CPU_TIME)) "CPU Usage",
    cast(b.sql_fulltext as VARCHAR(1000)) Query 
from 
     v$session c, sys.V_$SQL b 
where 
     b.address=c.sql_address and c.sql_hash_value=b.hash_value  and c.USERNAME='XXX_USER'     
group by substr(c.sid || ',' || c.serial#,0,15),c.USERNAME,c.PROGRAM,
     c.MACHINE,c.OSUSER,c.LOGON_TIME,c.TERMINAL,
    c.sql_address,c.sql_hash_value,
    cast(b.sql_fulltext as VARCHAR(1000))
Order by c.LOGON_TIME,sid,c.sql_address,c.sql_hash_value

但似乎 v$session 只有 XXX_USER 的当前会话信息,而不是 XXX_USER 所有会话的历史记录。

任何帮助表示赞赏。

提前致谢。

标签: oracleperformance

解决方案


V$ACTIVE_SESSION_HISTORY 也许?

看这里:

https://docs.oracle.com/cd/E11882_01/server.112/e40402/dynviews_1007.htm#REFRN30299

如果这没有帮助,请查询dict视图以获取所有视图的完整列表以及它们显示的内容,以挑选出可能具有您需要的内容:

SELECT * FROM dict WHERE comments LIKE '%HISTORY%';

如果您进行了设置,另一种选择是使用 Grid Control AWR 报告。这是一个 webby DBA 工具。


推荐阅读