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