在数据库巡检的过程中,发现在AWR报告中(该报告的采集间隔为1小时),两个采集点的Buffer Cache和Shared Pool Size发生了较大变化:
接着查询v$SGA_RESIZE_OPS视图:
确实在报告对应的时间里发生了shared pool的增长与buffer cache的收缩。
原因:
内存抖动指的是SGA中的内存在各内存组件之间频繁变动。在SGA内存自动管理模式下,SHARED POOL大小会倾向于自动调整到较大值,在极端情况下,容易引起性能问题。
数据库SGA现在为自动管理。
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 64000M
sga_target big integer 64000M
内存抖动危害:
1,影响系统性能
2,消耗过多CPU资源
3,导致系统宕机
解决:
通过把SGA改为手动管理来解决此问题,过大的SGA容易导致系统内存交换,过小的SGA容易导致内存争用或者内存不足,报ORA-4031的错误。对于各组件设置多大合适,我们参照AWR中Shared Pool Advisory,Buffer Pool Advisory进行设置。
SGA由自动管理改为手动管理
alter system set sga_target=0 scope=spfile sid='*';
alter system set db_cache_size=51248M scope=spfile sid='*';
alter system set shared_pool_size=12000M scope=spfile sid='*';
alter system set large_pool_size=208M scope=spfile sid='*';
alter system set java_pool_size=208M scope=spfile sid='*';
alter system set streams_pool_size=208M scope=spfile sid='*';
修改完以后重启数据库
验证是否修改成功:
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 64000M
sga_target big integer 0
数据库已修改为内存手动管理。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24742969/viewspace-1690658/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24742969/viewspace-1690658/