Oracle

oracle 阻塞會話

  • July 25, 2013

我正在嘗試調查 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這會告訴你哪個會話持有被阻塞會話正在等待的鎖。然後,您還可以查看阻塞會話大約在同一時間執行的查詢——阻塞會話在您正在查看的特定快照中很可能不是活動的,但它可能在一兩秒前就在快照中。

引用自:https://dba.stackexchange.com/questions/46964