ITPub博客

首页 > 数据库 > Oracle > 数据库内存抖动

数据库内存抖动

原创 Oracle 作者:tianya_2011 时间:2014-06-30 14:44:21 0 删除 编辑

在数据库巡检的过程中,发现在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博客 ” ,链接:https://blog.itpub.net/25373498/viewspace-1199792/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 运维85条军规
请登录后发表评论 登录
全部评论

注册时间:2011-04-11

  • 博文量
    85
  • 访问量
    631249