利用logmnr分析歷史阻塞會話

2021-10-03 10:01:37 字數 3886 閱讀 8710

之前基於ash會話級檢視可以查當前阻塞以及被阻塞的會話資訊,如下:

示例1:

另外也可以用基於事務級別的檢視進行查詢阻塞的源頭,如下:

示例2

with ltr as

(select to_char(sysdate,

'yyyymmddhh24miss'

) tm,

s.inst_id,

s.sid,

s.serial

#, s.

status

, s.sql_id,

s.sql_child_number,

s.prev_sql_id,

xid,

t.start_scn,

to_char(t.start_date,

'yyyy-mm-dd hh24:mi:ss'

) start_time,

e.type

,e.block,

e.ctime/

3600 runtime_hour,

decode(e.ctime,0,

(sysdate - t.start_date)

*3600*24

, e.ctime) el_second

-- q.sql_text

from **$transaction t, **$session s,**$transaction_enqueue e

where t.start_date <= sysdate -

interval

'1'second

/*查詢開始多少秒的事務*/

示例1是基於事務,主要查詢的是還在進行中,未完成的事務,此指令碼雖然可以查出阻塞的源頭,但是無法取得阻塞的sql。

示例3

select a.inst_id,a.sid,a.

以上示例1-3,只能查當前阻塞與被阻塞的資訊,一旦ash在記憶體中被」flush「掉,就無法獲取歷史阻塞資訊。

雖然oracle沒有直接提供查詢阻塞源頭sql的方法,然而根據專案中多次實踐、**,我梳理了間接查詢歷史阻塞會話的方法

1、先確定好環境中阻塞發生的時間點,拉取ash報告

根據blocking session的% activity與top sessions中一樣,可以判斷出,會話4189阻塞了上面會話6245

2、在開啟追加日誌的前提下,撈取阻塞會話資訊

阻塞會話與被阻塞會話在logmnr中的記錄

select scn,

timestamp

, start_scn,

commit_scn,

xid,

operation,

seg_name,

sql_redo,

machine_name,

session_info,

thread#,

session

#,serial

#from archdump

where((

session

# = 4189 and serial# = 2382) or --blocking

(session

# = 2925 and serial# = 4336) or --blocking

(session

# = 3321 and serial# = 45918) or --blocking

(session

# = 6245 and serial# = 39240) or --blocked

(session

# = 2688 and serial# = 57682) --blocked

(session

# = 2846 and serial# = 4244) or --blocked

(session

# = 3320 and serial# = 42418)

)--blocked

and scn >=

791019425

and scn <=

791125745

and seg_name =

'frame_onlineuser'

order

by scn asc

3、在借助pl/sql高亮顯示相同功能,我們可以很清楚的看出,阻塞會話阻塞的其他會話

如上紅色的是阻塞者,綠色是被阻塞會話

4、總結

如何使用Logmnr方法分析資料庫日誌

您是不是在資料庫日誌問題上而頭痛呢?您是不是在苦於沒有想到乙個方便的解決方法而苦惱呢?本文用舉例的形式來講解使用logmnr方法分析資料庫日誌。一 安裝logminer工具 以下兩個指令碼以sysdba身份執行 oracle home rdbms admin dbmslm.sql oracle ho...

MTK 聯絡歷史分析

當聯絡歷史超過20個,且穿插撥打 本中的號碼時,聯絡歷史會出問題,表現為在聯絡歷史中的名字與其號碼不相符合,結果是 在聯絡歷史中撥號時撥的是其它號碼,與名字不符。經過反覆試驗,發現規律為 當聯絡歷史中的記錄超過10個時,撥打第11個號碼,會自動將原來第1個記錄的號碼修改為第11個的號碼,撥打第12個...

利用beautiful soup爬取歷史天氣資料

利用beautiful soup爬取歷史天氣資料 本文將會涉及requests.get 返回結果為404時,採用模擬瀏覽器訪問的模式。以及當遇到幾個相同的標籤時的處理辦法。由於本人還是個小白,故可能有不好的地方 參考了 以及 文章爬取的 為 如下 目標 爬取2019年香洲的天氣資料,包括最高氣溫,最...