Oracle-11g
SQL 區域意外擴展
我們在 Oracle 11.1.0.7 上使用自動記憶體管理。上週五,共享池意外地從 ~600MB 增加到 ~850MB。記憶體來自從 ~400 到 ~150 的緩衝區記憶體。毋庸置疑,系統執行的磁碟讀取操作比以前要多得多。到目前為止,我還無法證明這是一個不正確的更改,但它在我看來確實不正確。我想知道是什麼原因造成的,所以我希望可以扭轉它。
我對之前和之後的 AWR 進行了比較,我注意到共享池的增加幾乎完全在 sql 區域。我使用如下查詢查看了儲存在那裡的 SQL,但沒有發現任何最近會改變的東西:
--Replace anything in quotes and numbers with % so that statements not using --bind variables group together. SELECT count(*), Trunc(sum(sharable_mem)/1024/1024) SharableMemory, regexp_replace(regexp_replace( sql_text,'.\''.+\''','''%'''),'[0-9]+','%') || ''';' sql FROM v$sql GROUP BY regexp_replace(regexp_replace( sql_text,'.\''.+\''','''%'''),'[0-9]+','%') HAVING sum(sharable_mem) > 2*1024*1024 ORDER BY Trunc(sum(sharable_mem)/1024/1024) DESC;
我還嘗試刷新共享池。系統不會將任何共享池放棄給緩衝區記憶體,可能是因為刷新後大小增加得太快。
我還嘗試為緩衝區記憶體設置最小大小,以強制它放棄共享池中的記憶體。在我的測試系統上,這種方法允許我將緩衝區記憶體增加大約 100MB,但在我的實時系統上,它甚至不會增加 3MB,然後給我一個錯誤,表明沒有足夠的記憶體來執行操作。
警報日誌顯示“掃描事件
$$ 77273 $$:completed" 在更改發生的時間附近。我在metalink上找不到太多關於它的資訊。它也表明DIA0在那個時間附近重新啟動,但我不明白這有什麼關係。 這裡有幾個可能不相關的註釋。AWR 顯示庫記憶體中所有命名空間的 pin 請求數量幾乎是問題開始前的兩倍。大約一個月前,數據庫從 10.2.0.4 升級。問題發生前大約一周,會話數從約 200 次增加到約 250 次。
我將重啟實例作為最後的手段,因為我不知道它是否會有所幫助。
任何建議,將不勝感激。
重啟!