zoukankan      html  css  js  c++  java
  • Oracle内存管理方式由amm切换为asmm

    (一)ASMM和AMM

    在Oracle 10g时,Orale推出ASMM(Automatic Shared Memory Managed),实现了SGA和PGA各自内部的自调节。在Oracle 11g,又推出了AMM(Automatic Memory managed),实现了SGA和PGA的统筹管理。
    在Linux平台中,还是比较建议使用ASMM,因为Linux启用hugepage特性需要使用ASMM,而不能使用AMM。见
    https://docs.oracle.com/cd/E11882_01/server.112/e10839/appi_vlm.htm#UNXAR391
    因此,需要将ASMM调整为AMM,需要调整的参数有:
    1.删除memory_max_target、memory_target
    2.将sga_max_size、sga_target、pga_aggregate_target设置为非0值,其中sga_target要小于或等于sga_max_size。

    (二)一次将AMM转换为ASMM的记录

    初始参数:

     

    在修改参数之前,要备份spfile为pfile(建议在修改Oracle的参数时,均要备份spfile)

    SQL> create pfile='/home/oracle/orcl_20180502.pfile' from spfile;

    改参数:

    SQL> alter system set memory_max_target=0 scope=spfile;
    SQL> alter system set memory_target=0 scope =spfile;
    SQL> alter system set sga_max_size=700M scope=spfile;
    SQL> alter system set sga_target=700M scope=spfile;
    SQL> alter system set pga_aggregate_target=100M scope=spfile;

    改完参数,再次对spfile进行备份,为什么要备份,且看后面

    SQL> create pfile='/home/oracle/20180502_orcl.pfile.bak' from spfile;

    重启数据库,使修改的参数生效:

     

    发现数据库无法重启,提示SGA_TARGET的值应该小于MEMORY_MAX_TARGET。很明显,在修改了之后,sga_target=700M,而memory_max_target=0。这个问题的原因是Oracle启动过程中对于参数的内部检查。因为MEMORY_MAX_TARGET被“显式”的赋值,与SGA_TARGET赋值相冲突。

    解决办法是,将备份的pfile文件中的memory_max_target和memory_target删除。

    [oracle@redhat6 ~]$ vim 20180502_orcl.pfile.bak

     

    删除黄色的2行。

    然后使用pfile启动数据库

     

    再利用pfile重建spfile

     

    检查参数:

     

     修改成功,至此 AMM转换为ASMM成功。

  • 相关阅读:
    硬盘数据丢失,到底该如何修复?
    硬盘数据丢失,到底该如何修复?
    CMD命令操作MySql数据库详解
    CMD命令操作MySql数据库详解
    Java中Calendar.DAY_OF_WEEK、DAY_OF_MONTH需要减一的原因
    Java中Calendar.DAY_OF_WEEK、DAY_OF_MONTH需要减一的原因
    java中JFrame类中函数addWindowListener(new WindowAdapter)
    java中JFrame类中函数addWindowListener(new WindowAdapter)
    关于java数据库章节connection连接不成功的时候!!!
    树莓派4之点亮led
  • 原文地址:https://www.cnblogs.com/lijiaman/p/8988140.html
Copyright © 2011-2022 走看看