oracle wait 时间过长,如何确定Oracle数据库中最近的WAIT事件?

问题:

您想找出数据库中最近的重要等待以及负责大多数等待的用户,SQL语句和对象。

Oracle为我们提供了V $ACTIVE_SESSION_HISTORY,以获取有关最常见的等待事件以及SQL语句,数据库对象和负责这些等待的用户的信息。

SQL查找等待事件

示例SELECT event,

SUM(wait_time + time_waited) total_wait_time

FROM v$active_session_history

GROUP BY event

ORDER BY total_wait_time DESC;

要找出等待时间最多的用户,我们可以在SQL下面使用。

示例SELECT s.sid,

s.username,

SUM(a.wait_time + a.time_waited) total_wait_time

FROM v$active_session_history a,

v$session s

WHERE a.session_id=s.sid

GROUP BY s.sid,

s.username

ORDER BY total_wait_time DESC;

为了找出等待时间最多的对象,我们可以在SQL下面使用。

示例SELECT a.current_obj#,

d.object_name,

d.object_type,

a.event,

SUM(a.wait_time + a.time_waited) total_wait_time

FROM v$active_session_history a,

dba_objects d

WHERE a.current_obj# = d.object_id

GROUP BY a.current_obj#,

d.object_name,

d.object_type,

a.event

ORDER BY total_wait_time;

最后,我们可以使用以下查询来确定等待最长时间的SQL语句。

示例SELECT a.user_id,

u.username,

s.sql_text,

SUM(a.wait_time + a.time_waited) total_wait_time

FROM v$active_session_history a,

v$sqlarea s,

dba_users u

WHERE  a.sql_id  = s.sql_id

AND a.user_id = u.user_id

GROUP BY a.user_id,

s.sql_text,

u.username;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值