oracle - 如何在 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 所有会话的历史记录。
任何帮助表示赞赏。
提前致谢。
解决方案
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 工具。
推荐阅读
- c# - 在 C# 中部署的 Matlab DLL 出错(位置 2 中的索引超出数组边界(不得超过 1))
- ruby-on-rails - 只允许一个用户成为管理员
- angular - Angular 7 - 如何检查用户是否直接导航到页面
- julia - Julia 中的字段和属性有什么区别?
- microsoft-graph-api - 尝试创建新事件时出现错误 423
- azure-data-factory - 链接服务错误:找不到“System.EnterpriseServices.Wrapper.dll”
- django - 如何区分 Django 中的 1 个可选参数和第一个函数名
- javascript - 未涵盖语句 - 无法进入函数内部
- laravel - Nginx 仅用于主页的不同根目录
- c# - 发送带附件的电子邮件(不使用磁盘空间)