[20211111]補充完善ash_wait_chains指令碼.txt

lfree發表於2021-11-11

[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 ( )
      , 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部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2841682/,如需轉載,請註明出處,否則將追究法律責任。

相關文章