掛起但未癱瘓:附連內存的 SGA 查詢
假設您使用 Oracle 企業管理器診斷和解決性能問題。一天,出現了一個棘手的問題:一個設計糟糕的應用程序引起了嚴重的庫高速緩存鎖定問題,并且數據庫呈現掛起狀態。您必須快速確定導致該問題發生的會話,并快速終止這些會話。
您可以啟動 Oracle 企業管理器來診斷此問題。且慢!如果整個數據庫充滿了掛起的會話,那么 Oracle 企業管理器中的查詢是否也會掛起?
如果使用 Oracle 數據庫 10g 第 2 版,則答案是否定的。正如我在第 2 部分中所介紹的,在該版本中,“在內存訪問模式下進行監控”選項使企業管理器可以直接從 SGA 內存(而不是 V$SESSION)中選擇會話。因為在該模式下繞過了 SQL 層,掛起的數據庫就不會阻礙此查詢的執行。相反,將自動啟動查詢。
讓我們看看該特性是如何工作的。在 Enterprise Manager 屏幕上,選擇 Performance 選項卡并滾動到該頁面底部的“Additional Monitoring Links”部分,屏幕與下圖類似。
注意紅色橢圓框中“Hang Analysis”的超鏈接。單擊該鏈接,將顯示一個與下圖類似的屏幕。
該圖展示了各種“死”會話。在該示例中,您可以看到 SID 為 193 的會話(根會話)已經阻止了其他兩個會話,即 192 和 214。該圖中的會話顏色表示會話受阻的時間。可以單擊 SID 訪問 Session Details 屏幕,以獲取更多信息。
還記得 ORADEBUG 實用程序嗎?Oracle 企業管理器使用該實用程序獲得有關系統掛起的數據。啟用 SGA 直接連接時,Oracle 將對每個實例使用一個 SQL 收集器。該收集器隨企業管理器自動啟動。檢索到以下視圖中的數據:
V$SESSION
V$SESSION_WAIT
V$SYSTEM_EVENT
V$SYSSTAT
附連內存的 SGA 查詢是一個非常強大的特性,以后肯定能幫您解決棘手問題。我們都對可“征服”數據庫的應用程序有一種親切感,為什么呢?現在,您可以給出答案了。我認為此特性是第 2 版一個最適用于數據庫管理員的特性。