[ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

Oracle 11g R1下的自动内存管理

作者: ,  出处:51CTO, 责任编辑: 王晓晨, 
2008-08-11 08:10
  Oracle 11g更是惊人地实现了数据库所有内存块的全自动化管理,它使得动态管理SGA和PGA成为现实。

  Oracle在简化内存管理方面过去几年做了巨大的努力,从Oracle 9i通过PGA_AGGREGATE_TARGET参数实现PGA自动管理开始,Oracle 10g通过SGA_TARGET参数实现了SGA的自动管理,Oracle 11g更是惊人地实现了数据库所有内存块的全自动化管理,它使得动态管理SGA和PGA成为现实。

  写本文时,自动内存管理(AMM)已经在主流平台上得到支持,包括Linux,Windows,Solaris,HP-UX,AIX。

  AMM参数

  自动内存管理是用两个初始化参数进行配置的:

  MEMORY_TARGET:动态控制SGA和PGA时,Oracle总共可以使用的共享内存大小,这个参数是动态的,因此提供给Oracle的内存总量是可以动态增大,也可以动态减小的。它不能超过MEMORY_MAX_TARGET参数设置的大小。默认值是0。

  MEMORY_MAX_TARGET:这个参数定义了MEMORY_TARGET最大可以达到而不用重启实例的值,如果没有设置MEMORY_MAX_TARGET值,默认等于MEMORY_TARGET的值。

  使用动态内存管理时,SGA_TARGET和PGA_AGGREGATE_TARGET代表它们各自内存区域的最小设置,要让Oracle完全控制内存管理,这两个参数应该设置为0。

  AMM配置

  在数据库创建过程中,数据库配置助手(DBCA)允许你配置自动内存管理。

  

  在手动创建数据库时,只需要在创建数据库之前设置合适的MEMORY_TARGET和MEMORY_MAX_TARGET初始化参数。

  在一个系统上启用自动内存管理其实很简单,不需要事先做太多的事情,可以使用下面的计算公式来计算:

  MEMORY_TARGET=SGA_TARGET+GREATEST(PGA_AGGREGATE_TARGET,"maximumPGAallocated")

  下面的查询语句向你展示有关的信息,以及如何计算出需要的值:

      1 -- Individual values.
  2
  3   COLUMN name FORMAT A30
  4
  5   COLUMN value FORMAT A10
  6
  7   SELECT name, value
  8
  9   FROM v$parameter
  10
  11   WHERE name IN ('pga_aggregate_target', 'sga_target')
  12
  13   UNION
  14
  15   SELECT 'maximum PGA allocated' AS name, TO_CHAR(value) AS value
  16
  17   FROM v$pgastat
  18
  19   WHERE name = 'maximum PGA allocated';
  20
  21   -- Calculate MEMORY_TARGET
  22
  23   SELECT sga.value + GREATEST(pga.value, max_pga.value) AS memory_target
  24
  25   FROM (SELECT TO_NUMBER(value) AS value FROM v$parameter WHERE name = 'sga_target') sga,
  26
  27   (SELECT TO_NUMBER(value) AS value FROM v$parameter WHERE name = 'pga_aggregate_target') pga,
  28
  29   (SELECT value FROM v$pgastat WHERE name = 'maximum PGA allocated') max_pga;
  30
  31   假设我们需要的设置是5G,那么我们可以执行下面的语句: CONN / AS SYSDBA
  32
  33   -- Set the static parameter. Leave some room for possible future growth without restart.
  34
  35   ALTER SYSTEM SET MEMORY_MAX_TARGET=6G SCOPE=SPFILE;
  36
  37   -- Set the dynamic parameters. Assuming Oracle has full control.
  38
  39   ALTER SYSTEM SET MEMORY_TARGET=5G SCOPE=SPFILE;
  40
  41   ALTER SYSTEM SET PGA_AGGREGATE_TARGET=0 SCOPE=SPFILE;
  42
  43   ALTER SYSTEM SET SGA_TARGET=0 SCOPE=SPFILE;
  44
  45   -- Restart instance.
  46
  47   SHUTDOWN IMMEDIATE;
  48
  49   STARTUP;
  50

  当数据库重启后,MEMORY_TARGET参数就可以在不重启实例的情况下随意改变大小了。如: ALTER SYSTEM SET MEMORY_TARGET=4G SCOPE=SPFILE;

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅