oracle启用amm,oracle AMM、ASMM区别以及相关用法

一、相关概念解析AMM:automatic memory management(11.1才有的特性)

即让数据库完全管理SGA、PGA的大小,而对于管理员只需要设置一个总的大小(memory_target),数据库会动态的调整SGA、PGA的大小以及其中包含的各个组件大小,如Database

buffer cache、Shared pool等等。

ASMM:automatic shared memory

management,即让设置一个SGA的目标值以及SGA的最大值,数据库来动态调整其中的各个组件,如Database buffer cache、Shared

pool等等。

AMM只需要设置一个memory_target,其中SGA、PGA数据库会根据运行的具体情况来调整这些大小,这样有一个好处即管理方便,经验不充足的人建议就设置AMM让数据库来管理各个内存空间大小的分配。

ASMM则是设置SGA_TARGET,让数据库来管理SGA中各个组件的大小。

PGA oracle强烈建议使用自动管理,在oracle 10g之前的版本,通过设置SORT_AREA_SIZE,

HASH_AREA_SIZE, BITMAP_MERGE_AREA_SIZE 、

CREATE_BITMAP_AREA_SIZE这些参数达到手动控制的目的。

不过设置这些参数过于复杂,在此不做讨论。一般只需要设置PGA_AGGREGATE_TARGET参数即可达到自动管理的目的。

下图也比较详细的概括出了AMM、ASMM以及手动管理SGA的几种情况的区别,注意这几种方式PGA都是自动管理的。

wKiom1Ojij-***twAAEuhLPr4-Q855.jpg二、启用AMM

这里只描述一下用命令启用的过程,em操作不进行演示1、启用sqlplus

以sysdba身份连接数据库,查看相关SGA_TARGET、PGA_AGGREGATE_TARGET的大小[oracle@oracle11g ~]$ sqlplus / as

sysdba

SQL*Plus: Release 11.2.0.1.0

Production on Thu May 22 15:59:37 2014

Copyright (c) 1982, 2009, Oracle.

All rights reserved.

Connected to:

Oracle Database 11g Enterprise

Edition Release 11.2.0.1.0 – Production

With the Partitioning, Automatic

Storage Management, OLAP, Data Mining and Real Application Testing

optionsSQL> show parameter

targetNAME

TYPE        VALUE

------------------------------------

----------- ------------------------------

archive_lag_target

integer     0

db_flashback_retention_target

integer     1440

fast_start_io_target

integer     0

fast_start_mttr_target

integer     0

memory_max_target                    big

integer 1008M

memory_target                        big

integer 0

parallel_servers_target

integer     32

pga_aggregate_target                 big

integer 320M

sga_target                           big

integer 680M

2、获取PGA分配的最大值SQL> select value/1024/1024 || 'M'

from v$pgastat where name='maximum PGA allocated';

VALUE/1024/1024||'M'

-----------------------------------------

63.5673828125M

3、计算memory_target计算公式:memory_target = sga_target + max(pga_aggregate_target, maximum PGA allocated),在本例中即为320M+680M= 1000M4、根据以上条件即可确定memory_target的大小,memory_target(目标值)的大小一定要小于MEMORY_MAX_TARGET(最大值)。因为MEMORY_MAX_TARGET为一个静态参数,所以修改以后必须重启数据库才可以生效。ALTER SYSTEM SET MEMORY_MAX_TARGET = nM SCOPE = SPFILE;如果使用的是pfile文件启动的数据库,则关闭数据库,直接修改pfile的内容。memory_max_target = nM

memory_target = mM或者直接才参数文件中修改。5、如果使用的是spfile启动,则使用以下命令:ALTER SYSTEM SET MEMORY_TARGET = nM;

ALTER SYSTEM SET SGA_TARGET = 0;

ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0;

重启数据库,即可完成AMM启用工作。

6、AMM内存调优SQL>  select * from v$memory_target_advice order by memory_size;

MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR    VERSION

----------- ------------------ ------------ ------------------- ----------

180                 .5          458               1.344          0

270                .75          367              1.0761          0

360                  1          341                   1          0

450               1.25          335               .9817          0

540                1.5          335               .9817          0

630               1.75          335               .9817          0

720                  2          335               .9817          0

当MEMORY_SIZE_FACTOR为1时MEMORY_SIZE的值,即一般认为比较合理的MEMORY_TARGET的值。

7、问题处理

由于操作失误,MEMORY_MAX_TARGET值小于MEMORY_TARGET,结果导致数据库无法启动,报错ORA-01078: failure in processing system

parameters

ORA-00837: Specified value of MEMORY_TARGET greater than

MEMORY_MAX_TARGET

而我的spfile由在ASM中,采用以下方法得以回复。

1. 手动编辑一个pfile 只要一个db_name即可

2.startup nomount;

3.create pfile='OS PATH'  from

spfile='ASM PATH';

4.shutdown

5.编辑pfile到合适的内容

6.startup;

7.create spfile='ASM PATH' from pfile='OS PATH';

然后在把本地的pfile改成*.SPFILE='ASM PATH'三、启动ASMM

1、从手动SGA管理到ASMM

根据以下的查询获取一个SGA_TARGET的大小SELECT (

(SELECT SUM(value) FROM V$SGA) -

(SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)

) "SGA_TARGET"

FROM DUAL;设置大小ALTER SYSTEM SET SGA_TARGET=value [SCOPE={SPFILE|MEMORY|BOTH}]

2、从AMM到ASMM

设置MEMORY_TARGET参数为0,ALTER SYSTEM SET MEMORY_TARGET = 0;

记下来设置SGA_TARGET的值,也可以设置各个组件的最小值。ALTER SYSTEM SET SGA_TARGET =

992M;

ALTER SYSTEM SET SHARED_POOL_SIZE =

0;

ALTER SYSTEM SET LARGE_POOL_SIZE =

0;

ALTER SYSTEM SET JAVA_POOL_SIZE =

0;

ALTER SYSTEM SET DB_CACHE_SIZE =

0;

ALTER SYSTEM SET STREAMS_POOL_SIZE =

0;

SGA中的各个组件值可以自定义,自定义为该组件的最小值,然后数据库根据运转情况进行调整相应的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值