Oracle DB的JDBC超时

时间:2017-05-19 23:21:01

标签: database oracle performance jdbc

在为会话发出JDBC超时时,是否可以找出在Oracle数据库中正在执行/等待的查询?

我检查了会话,我可以看到P2TEXT ='中断'和P3TEXT ='超时'和wait_class ='系统I / O',但sql_id为空,p2为0。

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用活动会话历史记录(ASH)数据来查找正在运行的内容和时间。

ASH数据基于抽样。不要指望在精确的毫秒内找到确切的查询。但是如果存在性能问题,它应该在这样的查询中突出显示:

select username, sample_time, sql_id
from gv$active_session_history
join dba_users
    on gv$active_session_history.user_id = dba_users.user_id
where sample_time between timestamp '2017-05-20 09:00:00' and timestamp '2017-05-21 09:05:00'
order by sample_time desc;

该视图通常仅包含过去一天的数据,具体取决于系统的繁忙程度。如果您需要及时返回,您可以使用DBA_HIST_ACTIVE_SESS_HISTORY。