Oracle 提交大小大于可用内存,但 v$memory_target_advice 显示 OK

Oracle 提交大小大于可用内存,但 v$memory_target_advice 显示 OK

在 Windows 2012R VM(VMWare)上运行 Oracle 18c。(我无法访问任何 VM 管理工具。)

VM 有 5 个 vCPU 和 12GB Ram(这据称是 VM 团队为减少 CPU 争用而提出的建议...)但我注意到已提交的内存(由 Oracle 使用)明显高于机器可用的 Ram。


任务管理器性能选项卡中的代码片段显示已使用 36GB 中的 18.9GB


任务管理器“详细信息”选项卡中的代码片段显示了 Oracle 进程的细分情况




v$memory_target_advice没有暗示通过增加内存目标可以获得任何改进......


在此处输入图片描述


问题

  1. 这是否意味着 Oracle 的很大一部分位于页面文件中?
  2. 由于 3GB 仍然可用,这是否意味着如果 Oracle 需要(或者如果 Windows 决定应该允许 Oracle 访问)额外的 RAM,它就可以访问?(意味着不需要更改任何内容?)

答案1

Oracle 的优化器曾经有一个错误,导致它错误地计算了对数据进行排序所需的内存。这个错误的计算导致它分配了大量的内存,在许多情况下超过了可用内存量。这并不是说它曾经使用过这些内存,所以它被分配在页面文件中但从未被使用过。

然而,这个错误据称已在版本 12 中修复。一种可能性是它仍然存在。

另一种可能性是 Oracle 存在内存泄漏。您可以在重新启动后立即测试此问题,以验证 Oracle 启动后和执行 SELECT 后提交的内存。

如果您的测试指出 Oracle 内存分配中存在错误,您应该报告它。

相关内容