oracle将memory_target改为自动管理方式,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 pinvirtualavailable

memory125.22 18.2 107.06 5.74 17.4 107.05pg space16.0 0.05work pers clnt other

pin2.04 0 0.13 3.57

in use 17.4 0 0.73# svmon-G -O unit=GB

Unit: GB-------------------------------------------------------------------------------size inuse free pinvirtualavailable

memory125.00 102.58 22.4 19.7 77.9 43.0pg space16.0 0.21work pers clnt other

pin16.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 systemset memory_max_target=0 scope=spfile;

alter systemset memory_target=0 scope=spfile;

alter systemset sga_max_size=64G scope=spfile;

alter systemset 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' frommemory;

create pfile='/tmp/20190125_spfile_node2.ora' fromspfile;

#拷贝编辑

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.6and later

SYMPTOMS

When trying toset SGA_TARGET usingan 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 wasset to 0.

CAUSE

The problemis 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 setat all.

SOLUTION

The solutions to the problem are:

1.0 本次使用的是方法1

create a PFILEfrom the SPFILE being used and remove the MEMORY_MAX_TARGET=0 and MEMORY_TARGET=0lines.

After that, use the modified PFILE to create anew SPFILE and start the instance with this newsetup.

2.0 另一种方式是通过参数rest重置清空参数(如果是隐含参数,使用reset将恢复默认值(待验证))

should the instance be running, then use the following commands to remove theexplicit 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。

未验证(如果是我下一次操作,可能会进行测试,这种影响较小,操作简便)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值