oracle amm和asmm,AMM与ASMM
一、AMM相关知识:
1.从oracle 11.1开始oracle提供了通过MEMORY_TARGET参数实现自动SGA和PGA自动管理的功能,从此版本开始不再需要明确设置SGA_TARGET及PGA_AGGREGATE_TARGET,这个被支持在linux、windows、solaris、hpux、aix。
2.在使用MEMORY_TARGET参数的linux机器上,在oracle启动时遇到ORA-00845是由于/dev/shm的大小小于memory_target所致(df -k /dev/shm),如果设置memory_max_target>memory_target,则需要确保/dev/shm至少memory_max_target
3.从11.1.0.6.0开始ASM实例默认实现自动管理SGA及PGA,(禁用ASM实例的自动内存管理,必须手动设置memory_target到0,DBCA界面将不支持此更改,这个bug被修正在11.1.0.7.0)
4.10.1版本之前shared pool在SGA中分配的大小=shared_pool_size+内部SGA的开销,此开销被用来维护SGA中各组件的状态,从10.1开始shared_pool_size将包括内部SGA的开销
5.在手动内存管理模式下,由于shared_pool_size太小不足以容纳内部SGA开销将导致ORA-00371
6.在非windows32位的操作系统上SGA_MAX_SIZE默认被设置为memory_target和memory_max_target中的最大值,在windows32操作系统上sga_max_size=60%memory_target+60%memory_max_target+25%可用虚拟地址空间
7.当lock_sga初始化参数被设置为true时将不能启用自动内存管理
二、启用、配置AMM:
SQL>show parameter lock_sga ------确保lock_sga为false
SQL>show parameter target ------确定当前SGA_TARGET及PGA_AGGREGATE_TARGET的值
SQL>select value from v$pgastat where name='maximum PGA allocated'; ---确定从上次启动DB后的最大实例的PGA
memory_target = sga_target + max(pga_aggregate_target, maximum PGA allocated)
为MEMORY_MAX_TARGET确定一个尽可能大的值,等于或大于SGA_TARGET
当DB使用spfile时:ALTER SYSTEM SET MEMORY_MAX_TARGET = nM SCOPE = SPFILE; 当DB使用pfile时:编辑pfile设置memory_max_target = nM memory_target = mM
关闭并重启DB
ALTER SYSTEM SET MEMORY_TARGET = nM; ALTER SYSTEM SET SGA_TARGET = 0; ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0;
-------!!!如果你在pfile中设置了MEMORY_TARGET没有设置MEMORY_MAX_TARGET,则数据库自动设置MEMORY_MAX_TARGET值为MEMORY_TARGET的值
-------!!!如果你在pfile中设置了MEMORY_MAX_TARGET而没有设置MEMORY_TARGET,则MEMORY_TARGET默认为0,在DB启动后可以动态改变MEMORY_TARGET不超过MEMORY_MAX_TARGET的值
-------!!!也可以设置SGA_TARGET或PGA_AGGREGATE_TARGET为一个非0的值,这个值将作为SGA或PGA分配的最小值
三、监视、优化AMM:
SQL> select * from v$memory_target_advice order by memory_size;
-------MEMORY_SIZE_FACTOR表示假设替代的MEMORY_TARGET大小
-------ESTD_DB_TIME表示在此预计的MEMORY_TARGET大小下所需的DB time二、ASMM相关知识:
1.SGA_MAX_SIZE设置:如果不设置则oracle在初始化的时候将选择所有指定组件的总和或者默认值,如果设置的值比分配给所有组件的内存小,那么数据库将忽略此设置的值
2.SGA_TARGET设置:在设置之前,同时为了启用自动共享内存管理的功能,STATISTICS_LEVEL必须被设置为TYPICAL (the default)或ALL,如果此参数被设置那么必须设置自动调整大小的组件的大小为0或最小值
3.SGA中能自动调整大小的组件:Fixed SGA、SHARED_POOL_SIZE、LARGE_POOL_SIZE、JAVA_POOL_SIZE、DB_CACHE_SIZE、STREAMS_POOL_SIZE
4.SGA中不能自动调整(固定)大小的组件:LOG_BUFFER、DB_KEEP_CACHE_SIZE、DB_RECYCLE_CACHE_SIZE、DB_nK_CACHE_SIZE
5.SGA中分配内存的单位:在SGA中动态分配各组件大小的最小单元是颗粒,通常来说在多数平台上如果SGA的大小<=1G,则颗粒大小是4M,SGA>1G,则颗粒大小为16M(32位NT上SGA>1G,则颗粒大小为8M)
6.查询V$SGAINFO或V$SGA_DYNAMIC_COMPONENTS看颗粒的大小,如果手动给SGA中组件分配的内存不是颗粒的倍数,则DB实际给该组件分配(四舍五入到最小粒度的倍数)大于分配值为其颗粒倍数的是小值
7.SGA_MAX_SIZE不能被动态修改
三、启用、配置ASMM:
从MSMM到ASSM:
1.获得SGA_TARGET的值SELECT ((SELECT SUM(value) FROM V$SGA) - (SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)) "SGA_TARGET" FROM DUAL;
2.修改pfile中sga_target的值并重启DB,或者ALTER SYSTEM SET SGA_TARGET=value [SCOPE={SPFILE|MEMORY|BOTH}]
3.通过修改pfile中各自动调优组件对应的初始化参数的值为0或最小分配量,或者alter system set %_size=0——————期望的最小值
从AMM到ASMM:
1.ALTER SYSTEM SET MEMORY_TARGET = 0
2.通过修改pfile中各自动调优组件对应的初始化参数的值为0或最小分配量,或者alter system set %_size=0-期望的最小值
---------启用ASMM后可以动态调整相应自动调整组件的最小值,该值只限制该组件大小不能减小到此值以下,但不限制组件的最大值
---------动态设置sga_target一个非0值之前,也就是启用ASMM之前最好重启DB,因为共享池不能被动态收缩,因为其中含有一些打开的游标、PL/SQL包及sql的执行状态
---------手动调整大小的组件也可以动态改变,但增加或减少的相应值都从自动调整大小组件中动态获取或释放,而且设置的是一个精确的值
四、监视、优化ASMM:
SQL> select * from v$sga_target_advice order by sga_size;
五、建议参考(from Yong Huang):
配置总大小时参考如下:
在现在操作系统内存比较充足的情况下,初始一般将shared pool设置为1至3G,其余的分配给buffer cache
10gASMM中db_cache_size至少2G
11g中将禁用AMM使用ASMM,因为能够使用大的缓冲页
oracle amm和asmm,AMM与ASMM相关推荐
- oracle内存管理模式amm,Oracle 11g自动内存管理(AMM)相关的初始化参数
Oracle对内存的管理越来越趋向智能化.自动化,从9i通过PGA_AGGREGATE_TARGET参数实现PGA的自动管理,10g通过Automatic Shared Memory Manageme ...
- oracle amm和asmm,AMM和ASMM理解 | 学步园
oracle11g新出参数 MEMORY_MAX_TARGET 和 MEMORY_TARGET 进行自动管理PGA 和SGA 称之为 自动化内存管理(Automatic MemoryManagem ...
- Oracle 自动共享内存管理(ASMM)与自动内存管理(AMM)
相关参数: MEMORY_MAX_TARGET:不可动态调整,代表内存(SGA+PGA)的最大值. SQL>ALTER SYSTEM SET MEMORY_MAX_TARGET = 1000M ...
- oracle内存管理模式amm,【读书笔记】ORACLE 内存管理
<Administrator's Guide>第6章介绍了ORACLE实例的内存管理,在11g中,ORACLE默认使用自动内存管理(AMM)来管理SGA和PGA的大小.除了默认的方法之外, ...
- Oracle 11g AMM与ASMM切换
现在的Oracle正在往智能化方向发展.如果我们现在找一些8i/9i时代的Oracle书籍,怎么样配置合适的数据库各内存池大小是非常重要的话题.但是进入10g之后,自动内存池调节成为一个重要Oracl ...
- Oracle ASMM和AMM
Oracle ASMM和AMM ASMM(Automatic Shared Memory Management,自动共享内存管理)是Oracle 10g引入的概念.通过使用ASMM,就不需要手工设置相 ...
- oracle amm和asmm,在Oracle中,什么是ASMM和AMM?
A答案 ASMM(Automatic Shared Memory Management,自动共享内存管理)是Oracle 10g引入的概念.通过使用ASMM,就不需要手工设置相关内存组件的大小,而只为 ...
- ORACLE ASMM与AMM的总结
概念对比介绍 相信有些人会对ORACLE当中的AMM(Automatic Memory Management)与ASMM(Automatic Shared Memory Management)有些 ...
- 关于ASMM和AMM
关于ASMM和AMM http://blog.itpub.net/29800581/viewspace-1263875/ http://blog.csdn.net/deanza/article/det ...
最新文章
- linux 脚本 符号,Shell脚本 入门 —— 符号篇
- 全国大学生智能汽车竞赛-讯飞赛道线下赛开始报名啦!
- linux RTX2080显卡驱动
- linux操作系统分析实验—基于mykernel的时间片轮转多道程序实现与分析
- Linux常用系统备份、恢复命令
- Kafka笔记:kafka原理简介以及架构
- 写时拷贝(Copy On Write)方案详解
- define宏定义和const定义之间的区别
- exit与return区别
- Android Studio中进行单元测试
- 关于阿里云短信验证服务完整的教程
- Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解
- python实现——视频转桌面壁纸
- 大神TP_萌新到大神的必修课---分路篇v
- 【Java实战小项目】考试系统
- 招银网络2018笔试分享
- iOS-App Logo和闪屏图尺寸
- 互联网电影院带来新突破,5G+4K’
- 解决VUE在浏览器全屏下监听不到Esc键盘事件
- FusionCharts 参数设置
热门文章
- 世界互联网大会“互联网之光”博览会-蚂蚁金服展台掠影
- 搭建hadoop3.x报错 Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
- eclipse常用插件在线安装地址或下载地址
- blender script mmd_tool 自动重命名刚体到合适的名字
- 基于SSM+MYSQL写的javaWeb房屋租赁管理系统,包括系统前端和后台,页面美观,功能完善,非常高端的SSM源码
- 【观察】中国跨境电商出海再加速背后,如何破解行业同质化竞争困局?
- 爬取企查查和boss直聘数据
- ABP vNext 实现租户Id自动赋值插入
- docker 安装与初步使用
- 失物招领系统,校园失物招领系统,失物招领系统毕业设计