Oracle
oracle 阻塞會話
我正在嘗試調查 Oracle 11 RAC 上的一些並發問題。到目前為止,我擁有的最有用的工具是企業管理器的“阻止會話”視圖,它告訴我哪個查詢正在阻止其他人以及它在等待什麼。但是,為了利用這種觀點,我需要在問題發生時抓住它。因此,我正在尋找一種方法來查詢 oracle 的歷史數據,這將為我提供類似於企業管理器中“阻塞會話”螢幕必須提供的數據。
假設您已獲得使用 AWR 的許可,您可以在
gv$active_session_history
視圖中查詢更新的數據或dba_hist_active_sess_history
較舊的數據。gv$active_session_history
將在每秒鐘的頂部對每個活動會話所做的事情進行快照,並將該數據保存幾個小時。dba_hist_active_sess_history
基本上,每 10 個快照都會包含數據,gv$active_session_history
但它會保留更長的時間(無論您的 AWR 保留期是多少)。這兩個視圖都會有一個
BLOCKING_SESSION
,BLOCKING_SESSION_SERIAL#
,BLOCKING_INST_ID
這會告訴你哪個會話持有被阻塞會話正在等待的鎖。然後,您還可以查看阻塞會話大約在同一時間執行的查詢——阻塞會話在您正在查看的特定快照中很可能不是活動的,但它可能在一兩秒前就在快照中。