在 Windows 2012R VM (VMWare) 上執行 Oracle 18c。 (我無權存取任何虛擬機器管理工具。)
VM 有 5 個 vCPU 和 12GB RAM(這應該是 VM 團隊建議減少 CPU 爭用...)但是我注意到提交的記憶體(由 Oracle 使用)明顯高於機器的可用 RAM 。
v$memory_target_advice
並沒有暗示透過增加記憶體目標有任何改進...
問題
- 這是否意味著 Oracle 的大部分內容都在頁面文件中?
- 由於 3GB 仍然可用,這是否意味著如果 Oracle 需要(或如果 Windows 決定允許 Oracle 存取)額外的 RAM,它就能夠做到嗎? (意思是不需要改變任何東西?)
答案1
Oracle 的優化器曾經存在一個錯誤,導致其無法正確計算排序資料所需的記憶體。這種錯誤的計算導致它分配大量內存,在許多情況下超過了可用內存量。這並不是說它曾經使用過該內存,因此它被分配在頁面文件中但從未使用過。
然而,這個錯誤據稱已在版本 12 中修復。
另一種可能是Oracle存在記憶體洩漏。您可以在重新啟動後立即驗證 Oracle 啟動後和執行 SELECT 後提交的記憶體來測試這一點。
如果您的測試指出 Oracle 記憶體分配中存在錯誤,您應該報告它。