AMM调整为ASMM命令(关闭memory_target自动管理方式)

客户生产系统,AIX oracle 11.2.0.4 数据库版本,2节点RAC。

操作系统内存,均为125G,调整前,使用oracle memory_target自动调整分配方式,memory_max_target大小80G大小,但是shared pool大小为21G。

客户之前存在内存不够用(由于客户应用问题,导致几乎所有的SQL都需要重新硬解析,最终导致oracle shared pool大小不断变大、异常增长),导致数据库shutdown的情况,因此客户想调整oracle内存的分配方式。

 

本次采用治标方法:将oracle内存限制,从memory_target自动管理分配方式,进行降级使用oracle automatic shared memory management,及sga/pga分别自动管理。

一、从AMM调整为ASMM

1)查询操作系统内存大小
# svmon -G -O unit=GB Unit: GB ------------------------------------------------------------------------------- size inuse free pin virtual available memory 125.22 18.2 107.06 5.74 17.4 107.05 pg space 16.0 0.05 work pers clnt other pin 2.04 0 0.13 3.57 in use 17.4 0 0.73 # svmon -G -O unit=GB Unit: GB ------------------------------------------------------------------------------- size inuse free pin virtual available memory 125.00 102.58 22.4 19.7 77.9 43.0 pg space 16.0 0.21 work pers clnt other pin 16.0 0 0.13 3.57 in use 77.9 0 24.7 根据操作系统内存大小,进行比例分配。本次采用sga=64 /pga=24G不变大小,操作系统预留37G
2)关闭memory_target,使用oracle sga/pga分别自动管理 alter system
set memory_max_target=0 scope=spfile; alter system set memory_target=0 scope=spfile; alter system set sga_max_size=64G scope=spfile; alter system set sga_target=64G scope=spfile; pga_aggregate_target big integer 24G
3)发现一个问题,关闭节点2所在数据库,重启节点1所在数据库报错
ORA-00843: Parameter not taking MEMORY_MAX_TARGET into account
ORA-00849: SGA_TARGET 10737418240 cannot be set to more than MEMORY_MAX_TARGET 0.
本次采用的方式是一种较危险的操作,如果不熟悉oracle 参数文件管理方式,
建议使用文档后续学习的mos建议,blog链接方法

4)创建pfile参数文件,手工注释memory这两个oracle内存参数
#备份 create pfile
='/tmp/20190125_node2.ora' from memory; create pfile='/tmp/20190125_spfile_node2.ora' from spfile; #拷贝编辑 cp /tmp/20190125_spfile_node2.ora /tmp/new_pfile.ora 注释new_pfile文件中的两个memory_target内存参数 SQL> show parameter pfile NAME VALUE ------------------------------------ ----------- ------------------------------ spfile +DATANEWDG/dbcnr/parameterfile/spfile.ora
5)根据之前查询到的内容,重新覆盖生成最新的pfile文件,启动数据库即可(rac环境,使用所有的参数需要指明路径,以免出错)
create spfile='+DATANEWDG/dbcnr/parameterfile/spfile.ora' from pfile='/tmp/new_pfile.ora';

 

二、学习mos/blog搜索学习

MOS

ORA-00843, ORA-00849 When Trying To Change SGA_TARGET With MEMORY_MAX_TARGET=0 Being Active (文档 ID 1397761.1)
Oracle Database - Enterprise Edition - Version 11.1.0.6 and later


SYMPTOMS
When trying to set SGA_TARGET using an ALTER SYSTEM command, the following errors are raised:

ORA-00843: Parameter not taking MEMORY_MAX_TARGET into account
ORA-00849: SGA_TARGET 10737418240 cannot be set to more than MEMORY_MAX_TARGET 0.

CHANGES
MEMORY_MAX_TARGET was set to 0.

CAUSE
The problem is caused by the MEMORY_MAX_TARGET parameter explicitly being set to 0. In case AMM should not be used, MEMORY_MAX_TARGET should not be set at all.

SOLUTION
The solutions to the problem are:
1.0  本次使用的是方法1
create a PFILE from the SPFILE being used and remove the MEMORY_MAX_TARGET=0 and MEMORY_TARGET=0 lines. 
After that, use the modified PFILE to create a new SPFILE and start the instance with this new setup.

2.0 另一种方式是通过参数rest重置清空参数(如果是隐含参数,使用reset将恢复默认值(待验证)) should the instance be running, then use the following commands to remove the
explicit setting of MEMORY_TARGET=0 and MEMORY_MAX_TARGET=0: alter system reset memory_target; alter system reset memory_max_target;

BLOG

http://www.dbsnake.net/how-to-disable-asm-instance-amm.html
--参考
特别注意的是——如果要禁掉ASM实例的AMM,就一定不要同时reset memory_target和memory_max_target,
而是应该将memory_target设为0并只reset memory_max_target,但很恶心的是基本上所有的MOS文档都在说要同时reset memory_target和memory_max_target,
所以如果你没有注意到这一点,你会发现你怎么也禁不掉ASM实例的AMM。 未验证(如果是我下一次操作,可能会进行测试,这种影响较小,操作简便)

 

转载于:https://www.cnblogs.com/lvcha001/p/10325590.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值