pre_page_sga引數總結

楊奇龍發表於2010-06-29

    例項啟動時,只會在實體記憶體中載入sga的各個記憶體的最小的大小(以粒度為單位),而剩餘的sga只會在虛擬記憶體中分配。只有當程式touch到相應的page時,才會置換到實體記憶體中。但是,我們也希望oracle在啟動後,所有的sga全部分配到實體記憶體上面,這時我們可以把這個引數設定成true(預設值是false)。

    當引數設定為TRUE時,不僅在例項啟動時,需要touch所有的SGA頁,並且由於每個oracle程式都會訪問SGA區,所以每當一個新程式啟動時(在Dedicated 方式中,每個會話都會啟動一個Oracle程式),都會touch一遍該程式需要訪問的所有頁。因此,每個程式的啟動時間頁增長了。所以,這個引數的設定需要根據系統的應用情況來設定。在這種情況下,程式啟動時間的長短就由系統記憶體的頁的大小來決定了。例如,SGA大小為100M,當頁的大小為4K時,程式啟動時需要訪問100000/4=25000個頁,而如果頁大小為4M 時,程式只需要訪問100/4=25個頁。頁的大小是由作業系統指定的,並且是無法修改的。 但是,要記住一點:PRE_PAGA_SGA只是在啟動時將實體記憶體分配給SGA,但並不能保證系統在以後的執行過程不會將 SGA 中的某些頁置換到虛擬記憶體中,也就是說,儘管設定了這個引數,還是可能出現 Page In/Out。如果需要保障SGA不被換出,就需要由另外一個引數LOCK_SGA 來控制了。

  lock_sga這個引數的預設值是false,為了保證sga被鎖定在實體記憶體中,而不必頁入/頁出,可以把這個引數設定為true。這時就可以將全部的sga鎖定在實體記憶體中了。但是有的系統不支援記憶體鎖定,這時這個引數就無效了。

參考:

http://space.itpub.net/13805349/viewspace-232342

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-666642/,如需轉載,請註明出處,否則將追究法律責任。

相關文章