结论
1,memory_max_target及memory_target参数的配置,则会启用全自动内存管理功能
2,memory_target=sga_target+max(pga_aggregate_target+maximum pga allocated)
3,memory_target分配范围必须要在参数memory_max_target
4,memory_max_target参数分配原则,一要考虑数据库负载的持续变化发展以及物理内存的空间是否充足
5,sga_target及pga_aggregate_target若配置为0,则全自动内存管理,SGA及PGA组件分配完全由ORACLE根据业务负载分配,没有最小值的限制
否则,若2参数为非0,则SGA及PGA分配不能少于指定的值
6,建议在生产环境采用第5步后者的分配方式,以防内存分配抖动大量出现,引发严重的性能问题
7,数据库启动可以采用SPFILE或者PFILE,二者调整参数稍有不同,一定要注意二者的区别
8,对于RAC数据库,若采用ALTER SYSTEM方式调整开启全自动内存管理方式,且是一个实例一个实例调整,一定要添加选项sid='sid值',否则会报错
调整完当前节点,再调整其它节点
9,本文测试环境为RAC 2节点11.2.0.3数据库,基于ASM存储的SPFILE,并在另一篇文章测试基于PFILE调整全自动内存管理的RAC数据库
背景
如果在启动oracle 11g数据库后,想由原来的SGA及PGA自动管理改为SGA及PGA全自动内存管理,需要作哪些工作,又要了解哪些参数呢?
与全自动内存管理的参数memory_max_size及memory_target的值如何设定呢?
本文我们主要学习这些知识,供后期运维所需。
测试
1,查看SGA_TARGET的参数值
SQL> show parameter sga_target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_target big integer 556m
2,查看PGA参数值
SQL> show parameter pga_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 187M
3,查看自数据库启动以来PGA分配过的最大值
SQL> select value from v$pgastat where name='maximum PGA allocated';
VALUE
----------
161836032
SQL> select 161836032/1024/1024 mb from dual;
MB
----------
154.338867
4,综上所述,从理论上来讲,memory_target=sga_taget + max(pga_aggregate_target + maximum PGA allocated)
memory_target=556m+max(187m,154m)=556m+187m=743m
注意:如果你物理内存充足,可用空间充足,可以把memory_target在上述计算的基础再增大一点
5,与全自动内存管理还有一个参数memory_max_size,又该如何设定呢?
首先此参数配置有几个原则:
1,此参数控制memory_target可以分配的最大值
2,分配此参数值一定要考虑业务发展的需要,可以把此参数值在第4步计算的基础上加大一些
所以,配置memory_max_target=800m
6,现在全自动内存管理的2个参数的值已经计算完毕,开始在数据库层面进行具体的调整,这里根据是否采用SPFILE或者PFILE,动作稍稍有所区别
7,先看如果数据库启动采用SPFILE
---即设定为第5步计算的值(若为RAC,添加选项sid)
alter system set memory_max_target=800m scope=spfile sid='*';
8,重启数据库实例
shutdown immediate
startup
9,动态调整memory_target及sga_target及pga_aggregate_target几个参数的值
---743m为第4步计算的值
--- 对于当前操作的RAC数据库实例,一定要添加 sid='jingfa1',否则会报ORA-32018: parameter cannot be modified in memory on another instance
alter system set memory_target=743m;
alter system set sga_target=0;
alter system set pga_aggregate_target=0;
注意:如果你配置sga_target及pga_aggregate_target为0,则完全由ORACLE动态根据数据库负载无限制调整sga及pga的大小(这种方式到时内存分配抖动过大,会引发严重的性能问题);
但是,如果你配置sga_target及pga_aggregate_target为非0值,则为内存动态调整时,其为最小值,即不能少于这个值(建议在生产环境采用这种方式)
10,如果是RAC数据库,还要启动其它的节点
startup nomount
alter system set memory_target=743m sid='jingfa2';
alter system set sga_target=0 sid='jingfa2';
alter system set pga_aggregate_target=0 sid='jingfa2';
alter database mount;
alter database open;
个人简介
8年oracle从业经验,具备丰富的oracle技能,目前在国内北京某专业oracle服务公司从事高级技术顾问。
服务过的客户:
中国电信
中国移动
中国联通
中国电通
国家电网
四川达州商业银行
湖南老百姓大药房
山西省公安厅
中国邮政
北京302医院
河北廊坊新奥集团公司
项目经验:
中国电信3G项目AAA系统数据库部署及优化
中国联通4G数据库性能分析与优化
中国联通CRM数据库性能优化
中国移动10086电商平台数据库部署及优化
湖南老百姓大药房ERR数据库sql优化项目
四川达州商业银行TCBS核心业务系统数据库模型设计和RAC部署及优化
四川达州商业银行TCBS核心业务系统后端批处理存储过程功能模块编写及优化
北京高铁信号监控系统RAC数据库部署及优化
河南宇通客车数据库性能优化
中国电信电商平台核心采购模块表模型设计及优化
中国邮政储蓄系统数据库性能优化及sql优化
北京302医院数据库迁移实施
河北廊坊新奥data guard部署及优化
山西公安厅身份证审计数据库系统故障评估
国家电网上海灾备项目4 node rac+adg
贵州移动crm及客服数据库性能优化项目
贵州移动crm及客服务数据库sql审核项目
深圳穆迪软件有限公司数据库性能优化项目
联系方式:
手机:18201115468
qq : 305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-1804586/
,如需转载,请注明出处,否则将追究法律责任。