我需要在一天内报告某个模块执行的所有查询的总时间。
-- sum over all queries executed the last 24 hours
select
u.username,
sum(round(v.ELAPSED_TIME / 3600000000 * 60,2)) ELAPSED_TIME_MINUTES,
sum(round(v.ELAPSED_TIME / 3600000000,2)) ELAPSED_TIME_HOURS,
v.module
from gv$sql v
left join dba_users u
on v.parsing_user_id = u.user_id
where u.username like '%XYZ' and module = 'WEBSERVER'
and to_date(v.FIRST_LOAD_TIME,'yyyy-mm-dd hh24:mi:ss') > (trunc(sysdate,'DD') - interval '1' day)
group by username,module;
但我问自己以下几点:
感谢您参加讨论!
CREATE TABLE
消失。MODULE
设置DBMS_APPLICATION_INFO.SET_MODULE(mod_name, action_name);
并获得许可的SQL调优,那么只需使用自动工作负载管理(AWR)框架;它包括它可以生成的报告中的MODULE信息,并为您提供执行次数以及许多其他信息。FIRST_LOAD_TIME
可能是几天前,或者是几天前。我会远离V $ SQL - 它对你想做的事情太过动态了;并使用SET_MODULE
设置模块名称,并可能为代码的不同部分设置不同的操作名称。