如何在Oracle中获取会话性能指标(CPU/IO/Memory)历史信息



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

现在我是Oracle的新手。如果有人能通过连接系统表来提供类似的视图名称或查询,那就太好了我们可以获得会话方式的CPU I/O和查询信息,至少在过去7天。已经尝试形成如下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的所有会话的历史记录。

感谢您的帮助。

提前谢谢。

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%';

另一种选择是使用网格控制AWR报告(如果您已经设置了(。这是一个webby DBA工具。

最新更新