为什么Oracle在有FREE空闲物理内存情况下仍使用SWAP交换空间换页?
oracle仅仅做为操作系统上的一个普通用户要求操作系统给其分配资源而已,其中包括内存资源,在许多unix/linux上使用shmget()函数调用申请内存, 对于分配到的内存 如果没有特殊配置的话,Oracle是不计较Unix/linux给它的到底是什么内存的,可能是可用的物理内存也可能是SWAP交换空间。而且在Oracle使用内存的过程中,也可能被操作系统换页到SWAP上。除非使用了LOCK_SGA、HUGE PAGE、PIN SHM等特性外,否则操作系统并不保证给Oracle的内存一定在物理内存里。
另外对于Unix/Linux换页的原理而言, 其仅仅是说在物理内存有压力时会更多考虑换页,但这不是说有物理内存就不换页,这是2个概念。所以你还是能看到系统有很多剩余物理内存,但却在使用一定量换页空间的情况,这并不奇怪。
对于十分纠结使用换页空间的环境,完全可以考虑使用上述LOCK_SGA、HUGE PAGE、PIN SHM等特性让Oracle尽量不被换页。这也是这些特性被设计出来的初衷。
Leave a Reply