嗨,我试图找到长期运行的查询沿着与数据库示例名称,节点名称,但我不确定有时节点名称和数据库示例名称是相同的。
请检查我使用的查询
select
A.SQL_ID,
B.MACHINE AS SQL_ID_INSTANCE,
CASE
WHEN C.MACHINE LIKE '%NODE%' Then 'NODE TRIGGER'
WHEN B.MACHINE LIKE '%DB_INSTANCE%' Then 'DB_INSTANCE_TRIGGER'
END AS FIRED_FROM_WHICH_INSTANCE ,
CASE
WHEN C.MACHINE LIKE '%NODE%' Then 'NODE TRIGGER'
WHEN B.MACHINE LIKE '%DB_INSTANCE%' Then 'DATABASE'
END AS RAN_ON_WHICH_NODE,
C.MACHINE AS NODE_NAME,
B.MODULE AS APPLICATION,
B.PROGRAM AS DB_INSTANCE_MACHINE,
B.SQL_OPNAME AS OPERATION
from
V$SQL A JOIN gv$active_session_history B ON A.SQL_ID=B.SQL_ID
JOIN dba_hist_active_sess_history C ON C.SQL_ID=B.SQL_ID
WHERE C.SAMPLE_TIME LIKE '%14-JUN-23%';
1条答案
按热度按时间g0czyy6m1#
您提出的问题对于解决性能问题非常有用,因为它可以帮助确定占用大量资源并导致数据库变慢的查询。
您可以使用
v$session_longops
视图。此视图包含有关数据库中所有活动会话的信息以及会话的开始时间、会话已运行的时间量和已完成工作的百分比。还有另一种使用SQL Query Profiler优化Oracle查询的方法,它可以以最有效的方式识别比预期花费更长时间的查询,并优化Oracle查询的性能。它可以帮助您跟踪会话统计信息,并直观地比较分析结果。