• 一、相关概念解析

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都是自动管理的。

  • 二、启用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 options

SQL> show parameter target

NAME                                 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= 1000M

4、根据以上条件即可确定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中的各个组件值可以自定义,自定义为该组件的最小值,然后数据库根据运转情况进行调整相应的值。

AMM和ASMM理解相关推荐

  1. oracle amm和asmm,AMM和ASMM理解 | 学步园

    oracle11g新出参数  MEMORY_MAX_TARGET 和  MEMORY_TARGET 进行自动管理PGA 和SGA 称之为 自动化内存管理(Automatic MemoryManagem ...

  2. Oracle 11g AMM与ASMM切换

    现在的Oracle正在往智能化方向发展.如果我们现在找一些8i/9i时代的Oracle书籍,怎么样配置合适的数据库各内存池大小是非常重要的话题.但是进入10g之后,自动内存池调节成为一个重要Oracl ...

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

    一.相关概念解析AMM:automatic memory management(11.1才有的特性) 即让数据库完全管理SGA.PGA的大小,而对于管理员只需要设置一个总的大小(memory_targ ...

  4. oracle amm和asmm,AMM与ASMM

    一.AMM相关知识: 1.从oracle 11.1开始oracle提供了通过MEMORY_TARGET参数实现自动SGA和PGA自动管理的功能,从此版本开始不再需要明确设置SGA_TARGET及PGA ...

  5. 如何disable AMM以及ASMM

    disable AMM enable ASMM: 将memory_target设置为0 disable AMM  and ASMM: 将memory_target=0 可参考: Database Ha ...

  6. oracle amm和asmm,在Oracle中,什么是ASMM和AMM?

    A答案 ASMM(Automatic Shared Memory Management,自动共享内存管理)是Oracle 10g引入的概念.通过使用ASMM,就不需要手工设置相关内存组件的大小,而只为 ...

  7. oracle启用amm,使用ASMM和AMM时设置shared_pool

    使用ASMM和AMM时设置shared_pool 从10g中引入了asmm后,相比以前的手动调整各种内存组件,在自动管理方面前进了一大步.DBA只需要定义sga_target和sga_max_targ ...

  8. INS-35178错误,AMM及ASMM区别

    遇到这个报错,就使用asmm 一般先装库,再opatch到最新补丁,最后dbca建库,物理内存大于4G不能用AMM只能用ASMM 内存越大,全自动管理就越费劲,出错概率就越高,内存抖动 oracle的 ...

  9. AMM算法简要理解(Adleman-Mander-Miller Method)

    概念引入: 全称为Adleman-Mander-Miller Method.在1977年他们发表的论文里只涉及了开平方根的方法,开n次方根并没有很详细的介绍.<Adleman-Manders-M ...

最新文章

  1. 人工智能高薪的背后……
  2. 坐标架内转换到坐标架外的公式
  3. DDoS deflate的安装使用
  4. Proteus原理图元器件库详细说明
  5. Maven的这三个用法你一定要会!
  6. spring-boot注解详解(七)
  7. linux之lrzsz
  8. java计算混淆矩阵(分类指标:查准率P,查全率R,P和R的调和均值F1,正确率A)
  9. oracle行转列 case,Oracle 行转列总结 Case When,Decode,PIVOT 三种方式
  10. python生成配置文件config_Python configparser模块封装及构造配置文件
  11. 【渝粤教育】国家开放大学2018年春季 0221-22T数字电子电路 参考试题
  12. libvirt中的message bus
  13. Android实现保存图片和视频到系统相册
  14. lammps教程:NEMD方法计算热导率公式详解
  15. 个体户查询_2019年最新修订小规模/一般纳税人?个体户的区别 附最新增值税率表...
  16. 数据库系统概念 第四章 习题答案
  17. 获取注册表键值并格式转换
  18. iCloud和AppStore区别(为什么不让登陆iCloud)
  19. Self-Attention详解
  20. uni-app 中如何使用谷歌地图 !?

热门文章

  1. 穿越之我是码农 1024 篇
  2. R语言主成分分析PCA谱分解、奇异值分解预测分析运动员表现数据和降维可视化
  3. NTP-Chrony 服务器和客户端配置
  4. 图书馆管理系统(c++语言实现)
  5. 原码、反码、补码(Integer.MIN_VALUE、Integer.MAX_VALUE)
  6. 交友H5盲盒源码PHP开源版
  7. css改变鼠标图片大小,CSS实现鼠标经过图片上图片等比缩放效果(代码实例)
  8. Linux 里的 exFAT 是微软的“特洛伊木马”
  9. 云计算、Web2.0、SOA、SaaS、SNS到底是不是笑话?
  10. [美文赏析]《非走不可的弯路》--张爱玲