oracle amm和asmm,AMM与ASMM

oracle amm和asmm,AMM与ASMM一、AMM相关知识:1.从oracle11.1开始oracle提供了通过MEMORY_TARGET参数实现自动SGA和PGA自动管理的功能,从此版本开始不再需要明确设置SGA_TARGET及PGA_AGGREGATE_TARGET,这个被支持在linux、windows、solaris、hpux、aix。2.在使用MEMORY_TARGET参数的linux机器上,在oracle启动时遇到ORA-…

大家好,又见面了,我是你们的朋友全栈君。

一、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,因为能够使用大的缓冲页

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133747.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • solidworks导出urdf文件的步骤和踩过的坑「建议收藏」

    solidworks导出urdf文件的步骤和踩过的坑「建议收藏」平台:sw2020,sw2urdfV1.5sw2016在win10激活成功教程有些问题,选择2020版本sw2urdf下载地址和英文教程:sw_urdf_exporter-ROSWiki下载sw插件版本的一些注意:sw2urdf插件安装提示_Dcr_Hs的博客-CSDN博客_sw2urdf插件过程参考:SolidWorks模型导出urdf(古月居老师)_哔哩哔哩_bilibili注意:文件名,用户名,坐标系,坐标轴尽量用英文,导出urdf文件用小写英文,后边.sld什么的要删掉。导入

  • 选择排序(C语言实现)

    选择排序(C语言实现)选择排序(C语言实现)实现原理:给出一组数据,第1轮在待排序记录r[1]-r[n]中选出最小的记录,将它与r[1]交换;第2轮在待排序记录r[2]-r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。代码初始序列:{49276597761238}第1趟:12与49交换:12{276597764938}第2趟:27不动:1227{6597764938}

  • 匹配电子邮箱的正则表达式_怎样设置电子邮箱

    匹配电子邮箱的正则表达式_怎样设置电子邮箱电子邮件格式  电子邮件地址的格式是域内部分@域,其中域内部分最长为64个字符,而域名最长可达255个字符。例如:name@domainname可以使用任意ASCII字符:大小写英文字母a-z,A-Z数字0-9name部分只允许输入‘-’、’_’、’.’。原则上字符  !#$%&’*±/=?^`{|}~  甚至空格都可以输入,但是有些邮件服务器会拒绝包含有特殊字符的邮件地址一般来说只允许输入‘-’、’_’、’.’这三个特殊符号字符‘.’不能

  • java获取当前年月日时间戳_现在的年月日怎么来的

    java获取当前年月日时间戳_现在的年月日怎么来的两种方法,通过Date类或者通过Calendar类。Date类比较简单,但是要得到细致的字段的话Calendar类比较方便。importjava.text.DateFormat;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjava.util.L

  • fpga的spi的编程_UASP协议

    fpga的spi的编程_UASP协议什么是SPI协议?如何用FPGA实现?

    2022年10月16日
  • java pfx_如何在Java处理PFX格式证书

    java pfx_如何在Java处理PFX格式证书如何在Java处理PFX格式证书公钥加密技术12号标准(PublicKeyCryptographyStandards#12,PKCS#12)为存储和传输用户或服务器私钥、公钥和证书指定了一个可移植的格式。它是一种二进制格式,这些文件也称为PFX文件。开发人员通常需要将PFX文件转换为某些不同的格式,如PEM或JKS,以便可以为使用SSL通信的独立Java客户端或WebLogicServe…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号