unix 操作系统拥有虚拟内存(virual memory),在虚拟内存设置中,可以使用特殊的交换磁盘区,
(swap disk area)以扩大现存的ram存储器.
虚拟内存是一种策略:该策略依赖于这样一个事实:并不是每个执行的任务都要经常访问其ram存储区域,因为所有ram区域并不是经常处于使用状态,所以unix已经开发了一种页面调度算法,当下一刻不需要ram内存时,该算法能将ram内存移动到交换磁盘.
当内存区域建立时,unix将不拒绝ram请求已超过ram现有数量的新任务,更确切的说,unix将最近最少使用的ram内存页交给交换磁盘,以便为新来的请求让出空间,当超过ram的物理限制时,unix能清除ram区域,因为这些区域已经被写人交换磁盘.
当要为交换而清除ram区域时,任何原始程序引起的对内存的后续访问都要求unix拷贝在ram中的内存页,以便使这些内存页仍可访问,操作中的unix页面请求需要调用磁盘i/o,并且这是执行缓慢的一个根源,因此对于一个dba来说,避免操作中的unix页面请求至关重要.
1.交换出(page out)操作
预计有额外的ram内存区域请求时,unix通常交换ram页,ram的异步写操作通常是对标记为可交换的所有的内存区域进行的,总之,交换出操作并不能使ram内存区域从ram中物理移出,它只是一种暂时的状态,当unix决定将区域从ram中移走时,已经将ram中的内存copy到磁盘.
2.交换入(page in)操作
因为已经确定unix实际上不从ram中删除区域,所以交换出操作并不能引起关注,然而,当unix执行交换入操作时调用磁盘i/o,当unix从交换磁盘中取回区域并将其重新装入ram区域时,请求任务要等待很长的时间(数毫秒)
因此,对于oracle任务来说,ram交换入操作是一件不愿发生的事情,oracle dba必须经常监视交换入操作并采取适当的措施.
减少交换入的几种方法
为unix服务器增加额外的ram
通过减少数据库缓冲的尺寸来缩小数据库的sga大小
将关键区域sga标记为不可交换的空间

