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