现在的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. [设计模式] 20 状态模式 State Pattern

    在GOF的<设计模式:可复用面向对象软件的基础>一书中对状态模式是这样说的:允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类.状态模式的重点在于状态转换,很多时候,对 ...

  2. 【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子

    原地址:http://www.cnblogs.com/xuling/archive/2013/03/04/2943154.html 最近开始研究U3D,它的强大就不多说了, 今天研究了研究射线相关东西 ...

  3. Caching Tutorial

    for Web Authors and Webmasters This is an informational document. Although technical in nature, it a ...

  4. eclipse 或MyEclipse将工程进行移动的时候会对@Override报错的处理方法

    有时候导入javaSE,javaEE,android 工程的时候,明明是刚刚用过的没有问题的工程,但重新导入的时候就报错. 提示The method ... must override a sperc ...

  5. JavaSE GUI显示列表 JTable的刷新 重新加载新的数据

    JTable在显示所有数据之后,假如需要搜索某个名字,则会获取新的列表数据. 假设datas是JTable的数据,定义为: private Vector<Vector> datas = n ...

  6. mysql 中 isnull 和 ifnull 判断字段是否为null

    对于统计count(type)和avg(type) 都不起作用 SQL中有ISNULL方法,介绍如下: ISNULL使用指定的替换值替换 NULL. 语法ISNULL ( check_expressi ...

  7. mac 安装mysql 报错“ERROR 2002 (HY000): Can not connect to local MySQL server through socket '/tmp/mysql.sock' (2)” 解决办法

    首先安装 homebrew 再 brew install mysql 之后连接 mysql 无论是登录还是修改初始密码都会报如下的错误 ERROR 2002 (HY000): Can not conn ...

  8. 【多媒体封装格式详解】---MKV

    http://blog.csdn.net/tx3344/article/details/8162656# http://blog.csdn.net/tx3344/article/details/817 ...

  9. Google的Java编程风格指南(Java编码规范)

    这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格. 与其它的编程风格指南一样,这里所讨论的不仅仅是 ...

  10. POJ2891——Strange Way to Express Integers(模线性方程组)

    Strange Way to Express Integers DescriptionElina is reading a book written by Rujia Liu, which intro ...