ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle性能测试之pre_page_sga 参数

oracle性能测试之pre_page_sga 参数

原创 Linux操作系统 作者:emotionking 时间:2011-03-08 13:32:41 0 删除 编辑
1、官方解释:
 

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锁定在物理内存中了。但是有的系统不支持内存锁定,这时这个参数就无效了。

3、工作经验
 在一次修正数据库参数后,压力测试发现系统速度迅速变慢。
起初并不知道是这个参数的原因,在网上查找一片文章:
 http://www.ciw.com.cn/News/coveragepage/2006-07-24/6909.shtml (捕获问题SQL解决过度CPU消耗问题)
以为是SQL的原因.最后发现我们的等待事件不一样。发现:数据库出现大量SQL*Net message from client等待事件。又看了AWR报告首要问题是:CPU time和os thread startup,回想查看下修改过的参数发现pre_page_sga说明中会影响startup时间和进程.
修改之并测试监控,发现OK了。
找来开发的同事确认我们的系统session经常重建,这样就要经常的去启动进程从而大大消耗系统资源。
就此修改pre_page_sga=false。
 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22929167/viewspace-688645/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 漂流也许更好
请登录后发表评论 登录
全部评论

注册时间:2009-11-25

  • 博文量
    12
  • 访问量
    25976