编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

基于TOP N等待事件如何一步一步查找出相关的会话及sql

wxchong 2024-07-22 22:29:44 开源技术 41 ℃ 0 评论

概述

分享一个我平时在数据库出故障从sql直接去找问题会涉及的几个sql,仅供参考。


查看系统等待事件(Wait Events)

SELECT wait_class,
 NAME,
 ROUND(time_secs, 2) time_secs,
 ROUND(time_secs * 100 / SUM(time_secs) OVER(), 2) pct
 FROM (SELECT n.wait_class, e.event NAME, e.time_waited / 100 time_secs
 FROM v$system_event e, v$event_name n
 WHERE n.NAME = e.event
 AND n.wait_class <> 'Idle'
 AND time_waited > 0
 UNION
 SELECT 'CPU', 'server CPU', SUM(VALUE / 1000000) time_secs
 FROM v$sys_time_model
 WHERE stat_name IN ('background cpu time', 'DB CPU'))
 ORDER BY time_secs DESC;

查看系统中,当前有哪些会话产生了db file sequential read等待事件?

select event,
 sid,
 p1,
 p2,
 p3,
 chr(bitand(p1, -16777216) / 16777215) ||
 chr(bitand(p1, 16711680) / 65535) "Name",
 (bitand(p1, 65535)) "Mode"
 from v$session_wait
 where event = 'db file sequential read';

查看系统中的当前会话,是在哪个对象上产生了产生了db file sequential read等待事件?

select ROW_WAIT_OBJ#,ROW_WAIT_FILE#,ROW_WAIT_BLOCK#,ROW_WAIT_ROW# from v$session where event='db file sequential read';

查看前面记录的数据库对象ROW_WAIT_OBJ#具体信息

select object_name,object_id from dba_objects where object_id=178246;

看看SID为79,162的会话到底在执行哪些操作导致db file sequential read等待事件?

select sid, sql_text
 from v$session a, v$sql b
 where sid in(79,162)
 and(b.sql_id = a.sql_id or b.sql_id = a.prev_sql_id);

先从当前TOP N的等待事件分析,有一个大概了解后再去定位相关的sql及会话,后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表