![为什么我的 Oracle 要从磁盘读取?](https://linux22.com/image/715999/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%20Oracle%20%E8%A6%81%E4%BB%8E%E7%A3%81%E7%9B%98%E8%AF%BB%E5%8F%96%EF%BC%9F.png)
我们的 Oracle 服务器(版本 12c)在具有 128GB RAM 的 RedHat-6.7 服务器上运行。
目前其上唯一的数据库大小只有约60GB。
然而,我们在输出中看到大量磁盘读取(在存储数据库的设备上)iostat
(以蓝色显示)。当然,也有一些写入(以黄色显示):
虽然写入永久存储是有意义的,因为我们有时会对数据进行修改,但读取却没有意义——整个数据库可以两次装入内存……事实上,我们应该能够将其存储在 USB 上并仍具有良好的读取时间。
我们应该检查和调整 Oracle 配置的哪些部分,以使服务器使用所有可用的 RAM?
更新:我们将看看在记忆中设置——感谢@lenniey。但似乎,当服务器必须(由于 RAM 短缺)决定从内存中删除哪些内容以便稍后重新读取时,INMEMORY 参数就会发挥作用。在我们的例子中没有什么永远不应该从记忆中删除,因为还有空间一切。然而,有些东西显然被一遍又一遍地重读……
答案1
您是否在该 Oracle 实例上运行多个数据库?如果是,请确保有问题的读取发生在该实例的所有数据库中。如果不是这种情况,请检查日志和进程,并尝试将其缩小到特定查询和作业。在执行此操作之前,您必须问自己从该数据库获得的性能是否足够好?您是否收到投诉?有时我们最终会尝试优化运行良好的东西。祝你好运!