在 Windows 2012R VM(VMWare)上运行 Oracle 18c。(我无法访问任何 VM 管理工具。)
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 内存分配中存在错误,您应该报告它。