v$active_session_history的wait_time和time_waited 列

最近在弄informix,oracle调优也好久没碰了,今天朋友问我v$active_session_history的wait_time和time_waited 怎么看,只记得用过,一下也没想起。连忙验证了下

wait_time 这列,对于在采样时,正在等待的事件,该列为0。对应session_state列。不为0的行是在进行CPU

time_waited这列,是这次等待的等待时间,如果该种类的等待的时间的超时时间大于1秒,那么如果等待了超过了1秒,本次采样的time_waited为0,在最后一次采样到该等待时,置上等待时间。单位百万分之一秒。也就是说,time_waited为0的行也不用看,因为等待时候在后面会体现,其和最后的行是同一次等待。

下面是以前用过的一个SQL

SELECT EVENT,
    COUNT(*) TOTAL_WAITS,
    TRUNC(SUM(TIME_WAITED) / 1000000) SECONDS_IN_WAIT
 FROM V$ACTIVE_SESSION_HISTORY
 WHERE SESSION_STATE = 'WAITING'
  AND TIME_WAITED > 0
  AND SAMPLE_ID BETWEEN 1800000 AND 2000000
  AND SESSION_ID = 144
  AND SQL_ID = 'cgb71p2hy4zfj'
 GROUP BY EVENT

其实v$active_session_history就是一个语句在运行中遇到的所有等待的统计,可以一定程度上代替10046来查看SQL遭遇的等待

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8242091/viewspace-613107/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8242091/viewspace-613107/

参考资源链接:[Oracle v$session 和 v$session_wait 深度解析](https://wenku.csdn.net/doc/3oaab0hi97?utm_source=wenku_answer2doc_content) 在Oracle数据库中,通过分析V$SESSION和V$SESSION_WAIT视图,可以有效地监控系统会话行为并诊断性能瓶颈。V$SESSION提供当前所有会话的详细信息,有助于了解系统中正在运行的会话情况。例如,可以使用以下SQL语句来查看会话的等待事件: SELECT s.sid, s.serial#, s.username, s.program, sw.wait_time, sw.wait_class, sw.event FROM v$session s, v$session_wait sw WHERE s.sid = sw.sid AND sw.state = 'WAITING'; 此查询将显示每个会话的SID、序号、用户名、客户端程序、等待时间、等待类别及事件,这对于识别可能正遭受资源等待的会话尤其重要。 对于V$SESSION_WAIT视图,它反映了会话正在等待的事件。通过这些信息,可以定位那些因等待特定资源而延迟的会话。例如,可以通过查询等待事件中的事件名称来发现是否有会话长时间处于特定类型的等待状态: SELECT event, total_waits, time_waited, avg_wait FROM v$session_wait WHERE event NOT IN ('SQL*Net message from client', 'SQL*Net message to client') ORDER BY total_waits DESC; 此查询将排除客户端与服务器间通信的等待事件,专注于可能影响性能的内部等待事件。 除了这些视图外,还有V$SESSTAT和V$STATNAME可以用来获取会话级别的统计信息。例如,统计特定会话的SQL执行次数: SELECT s.sid, s.username, sn.statistic#, sn.name, st.value FROM v$sesstat st, v$session s, v$statname sn WHERE st.sid = s.sid AND st.statistic# = sn.statistic# AND s.username = '特定用户' ORDER BY st.value DESC; 这将出该用户会话的统计信息,帮助DBA了解会话行为并判断是否存在性能问题。 当发现有会话处于长时间等待时,可能需要使用ALTER SYSTEM KILL SESSION命令来强制结束会话,例如: ALTER SYSTEM KILL SESSION 'sid,serial#'; 最后,建议详细阅读《Oracle v$session 和 v$session_wait 深度解析》以获得更深入的理解和更全面的故障排查技巧,从而在面对性能问题时能够快速定位并有效解决。 参考资源链接:[Oracle v$session 和 v$session_wait 深度解析](https://wenku.csdn.net/doc/3oaab0hi97?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值