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都是自动管理的。
- 二、启用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理解相关推荐
- oracle amm和asmm,AMM和ASMM理解 | 学步园
oracle11g新出参数 MEMORY_MAX_TARGET 和 MEMORY_TARGET 进行自动管理PGA 和SGA 称之为 自动化内存管理(Automatic MemoryManagem ...
- Oracle 11g AMM与ASMM切换
现在的Oracle正在往智能化方向发展.如果我们现在找一些8i/9i时代的Oracle书籍,怎么样配置合适的数据库各内存池大小是非常重要的话题.但是进入10g之后,自动内存池调节成为一个重要Oracl ...
- oracle启用amm,oracle AMM、ASMM区别以及相关用法
一.相关概念解析AMM:automatic memory management(11.1才有的特性) 即让数据库完全管理SGA.PGA的大小,而对于管理员只需要设置一个总的大小(memory_targ ...
- oracle amm和asmm,AMM与ASMM
一.AMM相关知识: 1.从oracle 11.1开始oracle提供了通过MEMORY_TARGET参数实现自动SGA和PGA自动管理的功能,从此版本开始不再需要明确设置SGA_TARGET及PGA ...
- 如何disable AMM以及ASMM
disable AMM enable ASMM: 将memory_target设置为0 disable AMM and ASMM: 将memory_target=0 可参考: Database Ha ...
- oracle amm和asmm,在Oracle中,什么是ASMM和AMM?
A答案 ASMM(Automatic Shared Memory Management,自动共享内存管理)是Oracle 10g引入的概念.通过使用ASMM,就不需要手工设置相关内存组件的大小,而只为 ...
- oracle启用amm,使用ASMM和AMM时设置shared_pool
使用ASMM和AMM时设置shared_pool 从10g中引入了asmm后,相比以前的手动调整各种内存组件,在自动管理方面前进了一大步.DBA只需要定义sga_target和sga_max_targ ...
- INS-35178错误,AMM及ASMM区别
遇到这个报错,就使用asmm 一般先装库,再opatch到最新补丁,最后dbca建库,物理内存大于4G不能用AMM只能用ASMM 内存越大,全自动管理就越费劲,出错概率就越高,内存抖动 oracle的 ...
- AMM算法简要理解(Adleman-Mander-Miller Method)
概念引入: 全称为Adleman-Mander-Miller Method.在1977年他们发表的论文里只涉及了开平方根的方法,开n次方根并没有很详细的介绍.<Adleman-Manders-M ...
最新文章
- 人工智能高薪的背后……
- 坐标架内转换到坐标架外的公式
- DDoS deflate的安装使用
- Proteus原理图元器件库详细说明
- Maven的这三个用法你一定要会!
- spring-boot注解详解(七)
- linux之lrzsz
- java计算混淆矩阵(分类指标:查准率P,查全率R,P和R的调和均值F1,正确率A)
- oracle行转列 case,Oracle 行转列总结 Case When,Decode,PIVOT 三种方式
- python生成配置文件config_Python configparser模块封装及构造配置文件
- 【渝粤教育】国家开放大学2018年春季 0221-22T数字电子电路 参考试题
- libvirt中的message bus
- Android实现保存图片和视频到系统相册
- lammps教程:NEMD方法计算热导率公式详解
- 个体户查询_2019年最新修订小规模/一般纳税人?个体户的区别 附最新增值税率表...
- 数据库系统概念 第四章 习题答案
- 获取注册表键值并格式转换
- iCloud和AppStore区别(为什么不让登陆iCloud)
- Self-Attention详解
- uni-app 中如何使用谷歌地图 !?
热门文章
- 穿越之我是码农 1024 篇
- R语言主成分分析PCA谱分解、奇异值分解预测分析运动员表现数据和降维可视化
- NTP-Chrony 服务器和客户端配置
- 图书馆管理系统(c++语言实现)
- 原码、反码、补码(Integer.MIN_VALUE、Integer.MAX_VALUE)
- 交友H5盲盒源码PHP开源版
- css改变鼠标图片大小,CSS实现鼠标经过图片上图片等比缩放效果(代码实例)
- Linux 里的 exFAT 是微软的“特洛伊木马”
- 云计算、Web2.0、SOA、SaaS、SNS到底是不是笑话?
- [美文赏析]《非走不可的弯路》--张爱玲