Oracle可以通过查询v$sqlarea得出数据库所查询的语句的执行时间 从而能让我们快速定位问题
其中ELAPSED_TIME是总执行时间 单位是微秒
EXECUTIONS是总执行次数
所以通过round()函数 四舍五入小数点两位 得出总执行时间 和平均执行时间 和 所执行的SQL语句
select *
from (
select sa.SQL_TEXT,
sa.SQL_FULLTEXT,
sa.EXECUTIONS "执行次数",
round(sa.ELAPSED_TIME/1000000 , 2) "总执行时间",
round(sa.ELAPSED_TIME / 1000000/sa.EXECUTIONS, 2) "平均执行时间",
sa.COMMAND_TYPE,
sa.PARSING_USER_ID "用户ID",
u.username "用户名",
sa.HASH_VALUE
from v$sqlarea sa
left join all_users u
on sa.PARSING_USER_ID = u.user_id
where sa.EXECUTIONS > 0
order by (sa.ELAPSED_TIME / sa.EXECUTIONS) desc
)
WHERE "平均执行时间">60
and SQL_TEXT like '%%'
and sa."SQL_TEXT" like '%%'
and u.username = ''
where rownum <= 50