开发者社区> 苍雪明南> 正文

数据库内存抖动

简介: 在数据库巡检的过程中,发现在AWR报告中(该报告的采集间隔为1小时),两个采集点的Buffer Cache和Shared Pool Size发生了较大变化: 接着查询v$SGA_RESIZE_OPS视图: 确实在报告对应的时间里发生了shared pool的增长与buffer cache的收缩。
+关注继续查看

在数据库巡检的过程中,发现在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的错误。对于各组件设置多大合适,我们参照AWRShared Pool AdvisoryBuffer 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

数据库已修改为内存手动管理。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
⭐️ C语言进阶 ⭐️数据在内存中的存储(深度剖析)(二)
本文主要讲解点 数据类型详细介绍 整形在内存中的存储:原码、反码、补码 大小端字节序介绍及判断 浮点型在内存中的存储解析
21 0
⭐️ C语言进阶 ⭐️数据在内存中的存储(深度剖析)(一)
本文主要讲解点 数据类型详细介绍 整形在内存中的存储:原码、反码、补码 大小端字节序介绍及判断 浮点型在内存中的存储解析
14 0
【线下首场 免费报名】阿里云-2020云内存数据库峰会 年度开发者盛宴!
为了让更多开发者解决应用面对的困惑,感受云内存数据库的使用之美。阿里云首场线下云内存数据库峰会即将亮相北京,本届峰会以“实时在线、数智未来”为主题,聚焦云原生内存数据库的技术与理论,凝聚行业界、学术界领袖大咖,知名企业技术leader和开发者,资深媒体等共议云原生内存数据库的趋势发展和实践,并且还将震撼发布云内存数据库白皮书,与广大业内人士共同定义未来5年的云内存数据库的发展新思路。
8217 0
【测试验证】数据库加载到内存占用大小
介绍     数据库大小加载到内存占用是不是数据库的本身大小哪?今天忽然突发奇想于是就测试一下。首先我要说明的是我是在EF框架下进行测试的,不知道会不会与ado.net连接方式差生不同的结果,我仅仅是做记录,若有不足还请海涵。
878 0
ADO.NET访问数据-(2) DataSet本地缓存与数据库的交互过程,以及应用
大半夜的睡不着觉 ,被宿舍的一群狼给吵醒了,于是就继续写博客。。。。       在前面一个 ADO.NET  数据库文章中  我说过  ADO.NET  允许用户在断网的情况下 对数据库进行 "操作" ,注意这里的操作 我带了 引号 !!!     其实在ADO.NET 中  我们可以先从数据库将 一个数据库的子集下载 到本地内存中,然后这个子集 会驻留在客户机中,这时候 我们对数据库的修改 实际上是对 本地缓存的    修改,等一切操作完成之后 ,我们再将位于本地缓存中经过修改后的数据库子集 反映到数据源。
724 0
+关注
苍雪明南
主流数据库:Oracle、MySQL、DB2 编程语言:Java、Python、shell 大数据工具:ZooKeeper、kafka
412
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载