进入SQLPLUS,查询shared_pool,往往看到结果如下:
SQL> show parameter shared_pool
NAME TYPE VALUE------------------------------------ ----------- ------------------------------shared_pool_reserved_size big integer 20971520shared_pool_size big integer 419430400
在Oracle中,shared_pool包含着两部分,其中一个参数是:shared_pool_reserved_size。此参数是用来指定保留的共享池空间大小,用于满足将来的大的连续的共享池空间请求。当共享池出现过多碎片,请求大块空间会导致Oracle大范围的查找并释放共享池内存来满足请求,由此可能会带来较为严重的性能下降,通过设置合适的shared_pool_reserved_size参数,结合shared_pool_reserved_min_alloc参数可以用来避免由此导致的性能下降。
这个参数理想值应该大到足以满足任何对RESERVED LIST的内存请求,而无需数据库从共享池中刷新对象。这个参数的缺省值是shared_pool_size的5%,通常这个参数的建议值为shared_pool_size参数的10%~20%大小,最大不得超过shared_pool_size的50%。(超过50%可能会导致数据库无法启动,要注意!)
rac系统修改操作(以下修改推荐在没有启用SGA的数据库上,启用SGA的不推荐这样修改)
1.修改第一个节点:
alter system set shared_pool_size=5000M sid='rac1' scope=spfile;
alter system set shared_pool_reserved_size=500M sid='rac1' scope=spfile;
shutdown immediate
startup
2.当第一个节点启动后,修改第2个节点:
alter system set shared_pool_size=5000M sid='rac2' scope=spfile;
alter system set shared_pool_reserved_size=500M sid='rac2' scope=spfile;
shutdown immediate
startup