[20211111]补充完善ash_wait_chains脚本.txt
--//tanel poder 提供的脚本ash_wait_chains对于分析阻塞很好用.
--//但是我写的命令太长了,昨天查找我以前写的脚本浪费许多时间.我决定把它打个包,便于自己以后调用.
@ tpt/ash/ash_wait_chains BLOCKING_SESSION||','||BLOCKING_SESSION_SERIAL#||',@'||BLOCKING_INST_ID||'=>'||session_id||','||SESSION_SERIAL#||',@'||inst_id||'=>'||event 1=1 sysdate-1/1440 sysdate
--//脚本如下:
$ cat wcx.sql
@ tpt/ash/ash_wait_chains BLOCKING_SESSION||','||BLOCKING_SESSION_SERIAL#||',@'||BLOCKING_INST_ID||'=>'||session_id||','||SESSION_SERIAL#||',@'||inst_id||'=>'||event 1=1 &&1 &&2
$ cat wcy.sql
@ tpt/ash/ash_wait_chains BLOCKING_SESSION||','||BLOCKING_SESSION_SERIAL#||',@'||BLOCKING_INST_ID||'=>'||session_id||','||SESSION_SERIAL#||',@'||inst_id||'=>'||event "&&3" &&1 &&2
--//简单说明一下:
--//参数1 监测开始时间. 参数2 监测结束时间 注意不要有空格 参数3一些过滤条件.我加了双引号.
--//另外取时间范围不要太长,一般取5-10分钟为佳.
--//例子:
@ wcx sysdate-5/1440 sysdate
@ wcy sysdate-1/24 sysdate "event='latch free'"
--//注:第3个参数有空格,必须使用双引号.
--//另外作者还提供dash_wait_chains脚本查询dba_hist_active_sess_history视图.因为阻塞一般很少事后分析,d开头命令我很少用。
--//不过使用时我遇到问题,才发现我写错一个地方。
SYS@book> @tpt/ash/dash_wait_chains "blocking_session||','||blocking_session_serial#||',@'||blocking_inst_id||' => '||session_id||','||session_serial#||'@'||inst_id||' => '||event2" 1=1 sysdate-0.3/1440 sysdate
-- Display ASH Wait Chain Signatures script v0.6 BETA by Tanel Poder ( https://tanelpoder.com )
, REPLACE(SYS_CONNECT_BY_PATH(blocking_session||','||blocking_session_serial#||',@'||blocking_inst_id||' => '||session_id||','||session_serial#||'@'||inst_id||' => '||event2, '->'), '->', ' -> ')||CASE WHEN CONNECT_BY_ISLEAF = 1 AND d.blocking_session IS NOT NULL THEN ' -> [idle blocker '||d.blocking_inst_id||','||d.blocking_session||','||d.blocking_session_serial#||(SELECT ' ('||s.program||')' FROM gv$session s WHERE (s.inst_id, s.sid , s.serial#) = ((d.blocking_inst_id,d.blocking_session,d.blocking_session_serial#)))||']' ELSE NULL END path -- there's a reason why I'm doing this
*
ERROR at line 63:
ORA-00904: "INST_ID": invalid identifier
--//顺便说一下前几天我升级了ash_wait_chains.sql,dash_wait_chains.sql,因为链接
--//http://blog.itpub.net/267265/viewspace-2795478/ => [20211012]ORA-12850.txt 的原因。
--//理论讲两个脚本的区别就算一个访问v$active_session_history,另外一个访问dba_hist_active_sess_history的区别。
--//对比两个视图结构才发现dba_hist_active_sess_history使用INSTANCE_NUMBER。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2841682/ ,如需转载,请注明出处,否则将追究法律责任。