现在的Oracle正在往智能化方向发展。如果我们现在找一些8i/9i时代的Oracle书籍,怎么样配置合适的数据库各内存池大小是非常重要的话题。但是进入10g之后,自动内存池调节成为一个重要Oracle特性。 在10g时,Oracle推出了ASMM(Automatic Shared Memory Management),实现了Oracle SGA和PGA内部结构的自调节。进入11g之后,AMM(Automatic Memory Management)实现了参数MEMORY_TARGET,将SGA和PGA的规划全部统筹起来对待。 默认情况下,Oracle 11g是使用AMM的。我们在安装过程中,指定Oracle使用内存的百分比,这个取值就作为MEMORY_TARGET和MEMORY_MAX_TARGET的初始取值使用。如果这两个参数设置为非零取值,那么Oracle就是采用AMM管理策略的。 同时,如果我们设置这两个参数为0,则AMM自动关闭。对应的SGA_TARGET、PGA_AGGREGATE_TARGET参数取值非零之后,Oracle自动退化使用ASMM特性。 本篇简单介绍一下AMM和ASMM的相互切换。
1、实验环境介绍我们选择11.2.0.3进行试验,当前状态为ASMM。SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - ProductionPL/SQL Release 11.2.0.3.0 - ProductionCORE        11.2.0.3.0         Production
当前MEMORY_TARGET设置为零,AMM没有启用。SQL> show parameter target NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------archive_lag_target                   integer     0db_flashback_retention_target        integer     1440fast_start_io_target                 integer     0fast_start_mttr_target               integer     0memory_max_target                    big integer 0memory_target                        big integer 0parallel_servers_target              integer     16pga_aggregate_target                 big integer 108Msga_target                           big integer 252M

 

2、从ASMM到AMM

在11g中,如果使用ASMM,对应的内存共享段是真实的共享段。[oracle@SimpleLinux ~]$ ipcs -m ------ Shared Memory Segments --------key        shmid      owner      perms      bytes      nattch     status     0x00000000 32768      oracle    640        4194304    32                     0x00000000 65537      oracle    640        260046848  32                     0x01606d30 98306      oracle    640        4194304    32  
下面进行参数的调整,这里笔者有一个建议,很多时候启动umount阶段故障都是由于不当的参数修改造成的。在进行参数修改之前,可以使用create pfile进行一下参数备份,可以加快故障出现时候的系统修复速度。SQL> show parameter spfileNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------spfile                               string      /u01/app/oracle/dbs/spfileora11g.ora SQL> create pfile from spfile;Done
修改系统参数,将sga和pga的target值设置为0,memory的target设置非0。注意,这个过程很多参数是静态的参数,可以都在spfile可见性中进行修改,之后重启服务器生效。SQL> alter system set memory_max_target=360m scope=spfile;System altered SQL> alter system set memory_target=360m scope=spfile;System altered SQL> alter system set sga_target=0m scope=spfile;System altered SQL> alter system set sga_max_size=0 scope=spfile;System altered SQL> alter system set pga_aggregate_target=0 scope=spfile;System altered
重新启动数据库服务器,查看参数配置。SQL> conn / as sysdbaConnected.SQL> startup forceORACLE instance started. Total System Global Area  263651328 bytesFixed Size                  1344284 bytesVariable Size             176164068 bytesDatabase Buffers           83886080 bytesRedo Buffers                2256896 bytesDatabase mounted.Database opened. SQL> show parameter targetNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------archive_lag_target                   integer     0db_flashback_retention_target        integer     1440fast_start_io_target                 integer     0fast_start_mttr_target               integer     0memory_max_target                    big integer 360Mmemory_target                        big integer 360Mparallel_servers_target              integer     16pga_aggregate_target                 big integer 0sga_target                           big integer 0
AMM启动之后,系统共享段变为“虚拟”共享段。[oracle@SimpleLinux dbs]$ ipcs -m ------ Shared Memory Segments --------key        shmid      owner      perms      bytes      nattch     status     0x00000000 163840     oracle    640        4096       0                      0x00000000 196609     oracle    640        4096       0                      0x01606d30 229378     oracle    640        4096       0  
3、从AMM到ASMM下面是如何从AMM到ASMM。要完全关闭AMM,一定将MEMORY_TARGET和MEMORY_MAX_TARGET都设置为0才行。SQL> alter system set memory_max_target=0 scope=spfile;System altered SQL> alter system set memory_target=0 scope=spfile;System altered SQL> alter system set pga_aggregate_target=100m scope=spfile;System altered SQL> alter system set sga_target=260m scope=spfile;System altered SQL> alter system set sga_max_size=260m scope=spfile;System altered
注意,此时如果重新启动系统,会报错。SQL> startup forceORA-00843: Parameter not taking MEMORY_MAX_TARGET into accountORA-00849: SGA_TARGET 272629760 cannot be set to more than MEMORY_MAX_TARGET 0.SQL>
这个问题的原因是Oracle启动过程中对于参数的内部检查。因为MEMORY_MAX_TARGET被“显示”的赋值,与SGA_TARGET赋值相冲突。 解决的方法就是使用参数默认值。创建出pfile之后,将显示赋值为0的MEMORY_TARGET和MEMORY_MAX_TARGET记录行删除掉。再利用pfile启动数据库,重建spfile。
SQL> create pfile from spfile  2  ; File created. --修改前*.db_recovery_file_dest='/u01/app/fast_recovery_area'*.db_recovery_file_dest_size=10737418240*.diagnostic_dest='/u01/app'*.dispatchers='(PROTOCOL=TCP) (SERVICE=ora11gXDB)'*.log_checkpoints_to_alert=TRUE*.memory_max_target=0*.memory_target=0*.open_cursors=300*.pga_aggregate_target=104857600*.processes=150 --修改后*.db_recovery_file_dest='/u01/app/fast_recovery_area'*.db_recovery_file_dest_size=10737418240*.diagnostic_dest='/u01/app'*.dispatchers='(PROTOCOL=TCP) (SERVICE=ora11gXDB)'*.log_checkpoints_to_alert=TRUE*.open_cursors=300*.pga_aggregate_target=104857600*.processes=150*.remote_login_passwordfile='EXCLUSIVE'
使用pfile启动数据库,重建spfile。SQL> conn / as sysdbaConnected to an idle instance.SQL> startup pfile=/u01/app/oracle/dbs/initora11g.oraORACLE instance started. Total System Global Area  272011264 bytesFixed Size                  1344372 bytesVariable Size             176163980 bytesDatabase Buffers           88080384 bytesRedo Buffers                6422528 bytesDatabase mounted.Database opened.SQL> show parameter target NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------archive_lag_target                   integer     0db_flashback_retention_target        integer     1440fast_start_io_target                 integer     0fast_start_mttr_target               integer     0memory_max_target                    big integer 0memory_target                        big integer 0parallel_servers_target              integer     16pga_aggregate_target                 big integer 100Msga_target                           big integer 260M SQL> create spfile from pfile  2  ; File created.
重新启动之后,ASMM切换完成。
SQL> startup forceORACLE instance started. Total System Global Area  272011264 bytesFixed Size                  1344372 bytesVariable Size             176163980 bytesDatabase Buffers           88080384 bytesRedo Buffers                6422528 bytesDatabase mounted.Database opened. --真实的共享内存段结构[oracle@SimpleLinux dbs]$ ipcs -m ------ Shared Memory Segments --------key        shmid      owner      perms      bytes      nattch     status     0x00000000 425984     oracle    640        8388608    25                     0x00000000 458753     oracle    640        264241152  25                     0x01606d30 491522     oracle    640        4194304    25  --HugePage使用情况[oracle@SimpleLinux dbs]$ grep Huge /proc/meminfoHugePages_Total:    67HugePages_Free:      1HugePages_Rsvd:      0Hugepagesize:     4096 kB[oracle@SimpleLinux dbs]$
4、结论AMM和ASMM是我们管理数据库非常重要的工具,借助自我调节的机制,我们可以做到数据库自我管理。11g的AMM应该说是很方便的,但是在一些情况下,如HugePage,我们可能需要切换回ASMM。权当记录,留需要的朋友待查。

转。

Oracle 11g AMM与ASMM切换的更多相关文章

  1. Oracle 11g DG手工switchover切换标准化流程

    Oracle 11g DG手工switchover切换标准化流程 环境:RHEL 6.5 + Oracle GI 11.2.0.4 + Oracle DB 11.2.0.4 Primary RAC(2 ...

  2. Oracle 11g新参数USE_LARGE_PAGES与AMM使用 (转载)

    在之前的文章(http://space.itpub.net/17203031/viewspace-774843)中,笔者介绍了如何在Linux 2.6内核中配置HugePage以及AMM与其的不兼容性 ...

  3. Oracle 11g静默安装简明版

    环境:RHEL 6.5 + Oracle 11.2.0.4 1. 初步处理应答文件 2. 静默安装软件 3. 静默安装监听 4. 静默dbca建库 说明: 本文默认安装软件前的步骤已经设置完毕 如果没 ...

  4. RHEL6.4 + Oracle 11g DG测试环境快速搭建参考

    环境现状: 两台虚拟主机A和B: 1. A机器已安装ASM存储的Oracle 11g 实例      参考:http://www.cnblogs.com/jyzhao/p/4332410.html 2 ...

  5. linux下安装 oracle 11g

    oracle 11g安装 一.环境准备 划分区 / 15000M /tmp 4096M /boot 100M Swap 4096M /u01 剩余空间 2.更改主机名,ip地址 3.安装软件包 那么l ...

  6. RedHat 6.7 Enterprise x64环境下使用RHCS部署Oracle 11g R2双机双实例HA

     环境 软硬件环境 硬件环境: 浪潮英信服务器NF570M3两台,华为OceanStor 18500存储一台,以太网交换机两台,光纤交换机两台. 软件环境: 操作系统:Redhat Enterpris ...

  7. RedHat 6.7 Enterprise x64环境下使用RHCS部署Oracle 11g R2双机HA

    环境 软硬件环境 硬件环境: 浪潮英信服务器NF570M3两台,华为OceanStor 18500存储一台,以太网交换机两台,光纤交换机两台. 软件环境: 操作系统:Redhat Enterprise ...

  8. centos安装oracle 11g 完全图解

    摘要: 说明: Linux服务器操作系统:CentOS 5.8 32位(注意:系统安装时请单独分区/data用来安装oracle数据库) Linux服务器IP地址:192.168.21.150 Ora ...

  9. Oracle 11g的Redo Log和Archive Log的分析方法

    自Oracle 11g起,无需设置UTL_FILE_DIR就可以使用LOGMNR对本地数据库的日志进行分析,以下是使用LOGMNR的DICT_FROM_ONLINE_CATALOG分析REDO和归档日 ...

随机推荐

  1. java 中 ==和equals 的区别

      Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolea ...

  2. DevOps 和技术债务偿还自动化

    当企业想要迁移到一个 DevOps 模型时,经常需要偿还高等级的技术债务 说得更明确一点,机构往往陷入「技术债务的恶性循环」中,以至于任何迅速.敏捷的迁移方式都无法使用.这是技术债务中的希腊债务危机水 ...

  3. 【设计模式六大原则2】里氏替换原则(Liskov Substitution Principle)

      肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑.其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的. 定义1:如果对 ...

  4. How to Enable 64-bit Processes for Enhanced Protected Mode in Internet Explorer 11 (IE11)

       Information Enhanced Protected Mode (EPM) adds additional security to Protected Mode and includes ...

  5. SPOJ CNTPRIME 13015 Counting Primes (水题,区间更新,求区间的素数个数)

    题目连接:http://www.spoj.com/problems/CNTPRIME/ #include <iostream> #include <stdio.h> #incl ...

  6. [hackerrank]Service Lane

    https://www.hackerrank.com/challenges/service-lane 用RMQ做的,其实暴力也能过~ #include <iostream> #includ ...

  7. Lua表的构造及遍历

    关于lua中的table,主要的困惑来自于table既可以当array用又可以当record用,有时候就会混淆不清. lua中的table貌似是用map来实现的,array是语法糖,一种特例.下面是l ...

  8. 9、JPA_映射双向一对一的关联关系

    双向一对一的关联关系 举例说明:经理Manager和部门Department是双向一对一关联关系.则Manager实体类中有Department实体对象的引用,反之亦然. 其实体属性定义如下: Lis ...

  9. 在XML里的XSD和DTD以及standalone的使用3----具体使用详解

    本人亲自写的一个简单的测试例子 1.xsd定义 <?xml version="1.0" encoding="utf-8"?><xs:schem ...

  10. Setup Oracle 11gR2 for Redhat Linux AS 4 Update 7 x64

    Setup Oracle 11gR2 for Redhat Linux AS 4 Update 7 x64 1. checking linux version. [root@localhost ~]# ...