Oracle内存管理方式由amm切换为asmm

Oracle内存管理方式由amm切换为asmm,第1张

概述(一)ASMM和AMM 在Oracle 10g时,Orale推出ASMM(Automatic Shared Memory Managed),实现了SGA和PGA各自内部的自调节。在Oracle 11g

(一)ASMM和AMM

在Oracle 10g时,Orale推出ASMM(automatic Shared Memory Managed),实现了SGA和PGA各自内部的自调节。在Oracle 11g,又推出了AMM(automatic Memory managed),实现了SGA和PGA的统筹管理。
在linux平台中,还是比较建议使用ASMM,因为linux启用hugepage特性需要使用ASMM,而不能使用AMM。见
https://docs.oracle.com/cd/E11882_01/server.112/e10839/appi_vlm.htm#UNXAR391
因此,需要将ASMM调整为AMM,需要调整的参数有:
1.删除memory_max_target、memory_target
2.将sga_max_size、sga_target、pga_aggregate_target设置为非0值,其中sga_target要小于或等于sga_max_size。

 

(二)一次将AMM转换为ASMM的记录

初始参数:

 

在修改参数之前,要备份spfile为pfile(建议在修改Oracle的参数时,均要备份spfile)

sql> create pfile='/home/oracle/orcl_20180502.pfile' from spfile;

 

改参数:

sqlalter system set memory_max_target=0 scope=spfile;sqlset memory_target0 scope set sga_max_size=700M scopeset sga_targetset pga_aggregate_target=100M scope=spfile;

改完参数,再次对spfile进行备份,为什么要备份,且看后面

sql/home/oracle/20180502_orcl.pfile.bak' from spfile;

重启数据库,使修改的参数生效:

 

发现数据库无法重启,提示SGA_TARGET的值应该小于MEMORY_MAX_TARGET。很明显,在修改了之后,sga_target=700M,而memory_max_target=0。这个问题的原因是Oracle启动过程中对于参数的内部检查。因为MEMORY_MAX_TARGET被“显式”的赋值,与SGA_TARGET赋值相冲突。

解决办法是,将备份的pfile文件中的memory_max_target和memory_target删除。

[oracle@redhat6 ~]$ vim 20180502_orcl.pfile.bak

 

删除黄色的2行。

然后使用pfile启动数据库

 

再利用pfile重建spfile

 

检查参数:

 

 修改成功,至此 AMM转换为ASMM成功。

 

 

 

总结

以上是内存溢出为你收集整理的Oracle内存管理方式由amm切换为asmm全部内容,希望文章能够帮你解决Oracle内存管理方式由amm切换为asmm所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1153854.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存