由於幾乎所有的操作系統都支持虛擬內存,所以即使我們使用的內存小於物理內存,也不能避免操作系統將SGA換到虛擬內存(SWAP)。所以我們可以嘗試使得SGA鎖定在物理內存中不被換到虛擬內存中,這樣減少頁面的換入和換出,從而提高性能。但在這裏遺憾的是,windows是無法避免這種情況的。下面我們來參考在不同的幾個系統下怎麼實現lock_sga
AIX 5L(AIX 4.3.3以上)
logon aix as root
cd /usr/samples/kernel
。/vmtune (信息如下) v_pingshm已經是1
。/vmtune -S 1
然後oracle用戶修改initSID.ora 中 lock_sga = true
重新啓動數據庫
HP UNIX
Root身份登陸
Create the file "/etc/privgroup": vi /etc/privgroup
Add line "dba MLOCK" to file
As root, run the command "/etc/setprivgrp -f /etc/privgroup":
$/etc/setprivgrp -f /etc/privgroup
oracle用戶修改initSID.ora中lock_sga=true
重新啓動數據庫
SOLARIS (solaris2.6以上)
8i版本以上數據庫默認使用隱藏參數 use_ism = true ,自動鎖定SGA於內存中,不用設置lock_sga, 如果設置 lock_sga =true 使用非 root 用戶啓動數據庫將返回錯誤。
WINDOWS
不能設置lock_sga=true,可以通過設置pre_page_sga=true,使得數據庫啓動的時候就把所有內存頁裝載,這樣可能起到一定的作用。