2、他人借鉴:(http://space.itpub.net/13805349/viewspace-232342)
今天具体的了解到了pre_page_sga这个参数的具体应用。oracle实例启动时,只会在物理内存中载入sga的各个内存的最小的大小(以粒度为单位),而剩余的sga只会在虚拟内存中分配。只有当进程touch到相应的page时,才会置换到物理内存中。但是,我们也希望oracle在启动后,所有的sga全部分配到物理内存上面,这时我们可以把这个参数设置成true(默认值是false)。
当参数设置为TRUE时,不仅在实例启动时,需要touch所有的SGA页,并且由于每个oracle进程都会访问SGA区,所以每当一个新进程启动时(在Dedicated Server方式中,每个会话都会启动一个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锁定在物理内存中了。但是有的系统不支持内存锁定,这时这个参数就无效了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22929167/viewspace-688645/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22929167/viewspace-688645/