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

oracle amm和asmm,在Oracle中,什么是ASMM和AMM?A答案ASMM(AutomaticSharedMemoryManagement,自动共享内存管理)是Oracle10g引入的概念。通过使用ASMM,就不需要手工设置相关内存组件的大小,而只为SGA设置一个总的大小,Oracle的MMAN进程(MemoryManagerProcess,内存管理进程)会随着时间推移,根据系统负载的变化和内存需要,自动调整SGA中各个组件的内存大小。ASMM…

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

A答案

ASMM(Automatic Shared Memory Management,自动共享内存管理)是Oracle 10g引入的概念。通过使用ASMM,就不需要手工设置相关内存组件的大小,而只为SGA设置一个总的大小,Oracle的MMAN进程(Memory Manager Process,内存管理进程)会随着时间推移,根据系统负载的变化和内存需要,自动调整SGA中各个组件的内存大小。ASMM的SGA中包含的组件及对应参数如下表所示:

d6114e3c6b18f6338933ec8df651b31c.png

在Oracle 10g中,必须将STATISTICS_LEVEL参数设置为TYPICAL(默认值)或者ALL才能启用ASMM功能,如果将其值设置为BASIC,那么会禁用很多新特性,比如像AWR、ASMM等。如果使用SQL*Plus来设置ASMM,那么必须先把SGA中包含的组件的值设置为0。通过设置SGA_TARGET参数为非零值来启用ASMM功能。

可以通过以下SQL来计算SGA_TARGET的值:

SELECT ((SELECT SUM(VALUE) FROM V$SGA) – (SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)) “SGA_TARGET”FROM DUAL;

设置SGA_TARGET的值,可以直接修改初始化参数文件后重启数据库,或者通过下面SQL命令进行修改:

ALTER SYSTEM SET SGA_TARGET=value [SCOPE={SPFILE|MEMORY|BOTH}];

示例如下所示:

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 STREAMS_POOL_SIZE = 0;

ALTER SYSTEM SET DB_CACHE_SIZE = 0;

在启用ASMM后,Oracle会自动调整SGA内部组件大小。若再手动指定某一组件值,则该值为该组件的最小值。例如,手动设置SGA_TARGET=8G,SHARED_POOL_SIZE=1G,则ASMM在自动调整SGA内部组件大小时,保证Shared Pool不会低于1G。当设置了SGA_TARGET参数后,Oracle将会收集SGA相关的统计数据,并通过V$SGA_TARGET_ADVICE呈现出来,因此,可以根据这些指导SGA_TARGET做相关的调整,以达到最佳情况。

Oracle 10g的ASMM实现了自动共享内存管理,但是具有一定的局限性。所以,在Oracle 11g中,Oracle引入了AMM(Automatic Memory Management,自动内存管理)的概念,实现了全部内存的自动管理。DBA可以仅仅通过设置一个目标内存大小的初始化参数(MEMORY_TARGET)和可选最大内存大小初始化参数(MEMORY_MAX_TARGET)就可以在大多数平台上实现AMM。AMM可以使实例总内存保持相对稳定的状态,Oracle基于MEMORY_TARGET的值来自动调整SGA和PGA的大小。MEMORY_TARGET是动态初始化参数,可以随时修改该参数的值而不用重启数据库。MEMORY_MAX_TARGET作为一个内存上限值,是一个静态参数,它是MEMORY_TARGET可以被配置的最大值。

如果内存发生变化,实例会自动在SGA和PGA之间做调整。若启用了AMM功能,而SGA_TARGET和PGA_AGGREGATE_TARGET没有显式的被设置,则默认SGA_TARGET为MEMORY_TARGET的60%,PGA_AGGREGATE_TARGET为MEMORY_TARGET的40%。如果MEMORY_MAX_TARGET设置为1400M,而MEMORY_TARGET设置为1000M,那么对于数据库实例而言,只有1000M可以使用,剩下的400M会被保留下来,但会被Oracle的MMAN进程锁定。但是,因为MEMORY_MAX_TARGET是显式设置的,所以,可以在不重启数据库的情况下动态调整MEMORY_TARGET。如果只设置了MEMORY_TARGET的值,而MEMORY_MAX_TARGET没有显式设置,那么MEMORY_MAX_TARGET的值默认是MEMORY_TARGET的大小。

当LOCK_SGA初始化参数的值设置为TRUE时,不能启用AMM,该参数的值默认为FALSE。

只要是设置了MEMORY_MAX_TARGET或MEMORY_TARGET,那么就说明启用了AMM。可以使用视图V$MEMORY_DYNAMIC_COMPONENTS动态查阅内存各组件的当前实时大小。

如果在创建数据库的时候未启用AMM,那么可以在建库后启用它,启用AMM需要重启数据库,具体步骤如下所示:

1、查询SGA_TARGET和PGA_AGGREGATE_TARGET的值,从而确定MEMORY_TARGET的最小值

SYS@lhrdb> SHOW PARAMETER TARGET

NAME                                 TYPE        VALUE

———————————— ———– ——————————

pga_aggregate_target                 big integer 409M

sga_target                           big integer 1648M

2、确定自系统启动以来PGA的最大值,单位为bytes

SYS@lhrdb> select value from v$pgastat where name=’maximum PGA allocated’;

VALUE

———-

248586240

3、通过以下方法来计算出SGA_TARGET的最大值

memory_target = sga_target + max(pga_aggregate_target, maximum PGA allocated)

例如:在这里,SGA_TARGET的值为1648M,PGA_AGGREGATE_TARGET的值为409M,PGA的最大值为248586240/1024/1024=237M,所以,MEMORY_TARGET的值至少为1648+409=2057M。

4、设置系统参数启用AMM

ALTER SYSTEM SET MEMORY_MAX_TARGET = 2100M  SCOPE=SPFILE;

–重启数据库

ALTER SYSTEM SET MEMORY_TARGET = 2057M;

ALTER SYSTEM SET SGA_TARGET = 0;

ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0;

另外需要说明的一点是,使用AMM经常出现的一个错误是“ORA-00845: MEMORY_TARGET not supported on this system”。

[ZFZHLHRDB1:oracle]:/oracle>oerr ora 845

00845, 00000, “MEMORY_TARGET not supported on this system”

// *Cause: The MEMORY_TARGET parameter was not supported on this operating system or dev/shm was not sized correctly on Linux.

// *Action: Refer to documentation for a list of supported operating systems. Or, size dev/shm to be at least the SGA_MAX_SIZE on each Oracle instance running on the system.

这个错误原因是操作系统不支持MEMORY_TARGET参数或/dev/shm的大小设置不正确。解决方法就是将/dev/shm的值增大,至少需要大于数据库参数MEMORY_MAX_TARGET的值。修改步骤如下:

[root@LHRDB ~]# cat etc/fstab | grep tmpfs    #查看/dev/shm大小

tmpfs                   /dev/shm                tmpfs   defaults,size=1G 0 0

[root@LHRDB ~]# mount -o remount,size=4G dev/shm     #临时修改/dev/shm大小

[root@LHRDB ~]# vi etc/fstab  #永久修改/dev/shm大小,tmpfs /dev/shm tmpfs defaults,size=4G 0 0

[root@LHRDB ~]# df -h | grep shm

tmpfs                 4.0G     0  4.0G   0% /dev/shm

[root@LHRDB ~]#df -h /dev/shm/

Filesystem      Size  Used Avail Use% Mounted on

tmpfs4.0G04.0G0%/dev/shm

[root@LHRDB ~]# cat /etc/fstab | grep tmpfs

tmpfs                   /dev/shm                tmpfs   defaults,size=4G        0 0

再次启动数据库就可以正常启动了。

由于AMM不支持HugePage,而ASMM支持HugePage,所以,在生产库上强烈推荐使用ASMM。有关ASMM和AMM的区别如下表所示:

cd4f7d23e0d8a83a75f42b8322c63edd.png

MOS:SGA and PGA Management in 11g’s Automatic Memory Management (AMM) (ID 1392549.1)有非常详细的说明。

更多内容请参考:http://blog.itpub.net/26736162/viewspace-2138627/

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133937.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大数据技术大致包含哪些内容「建议收藏」

    大数据技术大致包含哪些内容「建议收藏」关于大数据的概念,指的是无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。而大数据技术,是指从各种各样类型的数据中,快速获得有价值信息的能力。那么关于大数据的技术大致包含哪些内容?一、数据采集ETL工具负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。二…

    2022年5月28日
    47
  • 音质好的linux主机,5千音质好的HIFI播放器有哪些?5款性价比“神砖”简评「建议收藏」

    本文已获得作者授权,文中言论不代表乙迷观点。作者:蓝色风暴作为HiFi发烧友,用手机听歌?呵呵,那肯定是不存在的。想要拥有好音质,手机应该是达不到要求的,毕竟手机的推力有限,不能很好发挥耳机的潜力,也就无法更高的还原音乐细节,从而让你无法感受到高解析、高保真的音乐效果,所以一款无损播放器是绝对少不了的。而当你听过高品质的音质,相信也会宠坏你的耳朵,这也是音乐发烧友耳朵挑剔的原因,所以不要跟发烧友谈…

    2022年4月16日
    97
  • docker的端口映射_外网远程桌面端口映射

    docker的端口映射_外网远程桌面端口映射Docker端口映射实现网络访问首先,大家如果看到有什么不懂的地方,欢迎吐槽!!!我会在当天或者第二天及时回复,并且改进~~Docker运行容器之后却发现没IP,没端口,那要如何访问容器呢?下面我来介绍下Docker通过端口映射来实现网络访问一、从外部访问容器应用在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-P或-p参数指定端口映射。先来说说p和P吧-p可以指定要映射的端口,并

    2022年10月9日
    6
  • a8三星手机android,三星a8手机参数和测评介绍[通俗易懂]

    a8三星手机android,三星a8手机参数和测评介绍[通俗易懂]手机已经成为我们生活中不可缺少的一部分,手机不仅可以发信息,打电话,还可以转账,开店,视频,好的手机不仅可以让你用的舒心,还不容易损坏。现在市场上,各种各样的手机比比皆是,价格也都高低不一,iPhone,索尼,华为,小米,三星都是消费者求追的对象,那么,你是否了解过GalaxyA8这一款手机呢?它的价格,性能究竟又究竟怎报价价格:1699元(价格来源网络,仅供参考)参数:GalaxyA8…

    2022年6月20日
    39
  • ubuntu20.04内核降级_ubuntu内核版本查看

    ubuntu20.04内核降级_ubuntu内核版本查看ubuntu内核突然变了,导致nvidia显卡驱动用不了:进行内核降级:解决方法:查找可用的内核版本:#grepmenuentry/boot/grub/grub.cfg修改grub:#vim/etc/default/grub找到:GRUB_DEFAULT=0修改为:GRUB_DEFAULT=“AdvancedoptionsforUbuntu>Ubuntu,w…

    2022年8月23日
    10
  • springboot集成flowable(springboot流程引擎)

    前言工作流框架大家一定不陌生,各种OA系统里我们常常用到。对于JAVA领域来说一说起工作流框架第一浮现我在脑海中的便是大名鼎鼎的Activiti了。很久以前学习Activiti框架时我也曾记录过一篇文章。见链接:工作流框架Activiti常用功能初探尽管当时只是学习了一下在之后的相关工作和项目中并没有用到,通过学习后了解了下,仅对于知识广度进行了扩宽。…

    2022年4月13日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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