Oracle 11g R1下的自动内存管理(AMM)(1)

日期: 2008-08-10 作者:黄永兵 来源:TechTarget中国 英文

  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)允许你配置自动内存管理。


  Oracle 11g R1下的自动内存管理(图一)



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


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






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


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







— Individual values.
COLUMN name FORMAT A30
COLUMN value FORMAT A10
select name, value
FROM   v$parameter
where  name IN (’pga_aggregate_target’, ’sga_target’)
union
select ’maximum PGA allocated’ AS name, TO_char(value) AS value
FROM   v$pgastat
where  name = ’maximum PGA allocated’;
— Calculate MEMORY_TARGET
select sga.value + GREATEST(pga.value, max_pga.value) AS memory_target
FROM (select TO_NUMBER(value) AS value FROM v$parameter where name = ’sga_target’) sga,
     (select TO_NUMBER(value) AS value FROM v$parameter where name = ’pga_aggregate_target’) pga,
     (select value FROM v$pgastat where name = ’maximum PGA allocated’) max_pga;
 


  假设我们需要的设置是5G,那么我们可以执行下面的语句:






 CONN / AS SYSDBA
— Set the static parameter. Leave some room for possible future growth without restart.
alter SYSTEM SET MEMORY_MAX_TARGET=6G SCOPE=SPFILE;
— Set the dynamic parameters. Assuming Oracle has full control.
alter SYSTEM SET MEMORY_TARGET=5G SCOPE=SPFILE;
alter SYSTEM SET PGA_AGGREGATE_TARGET=0 SCOPE=SPFILE;
alter SYSTEM SET SGA_TARGET=0 SCOPE=SPFILE;
— Restart instance.
SHUTDOWN IMMEDIATE;
STARTUP;



  当数据库重启后,MEMORY_TARGET参数就可以在不重启实例的情况下随意改变大小了。如:







 alter SYSTEM SET MEMORY_TARGET=4G SCOPE=SPFILE;

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐

  • DBA在使用SQL语句时需要注意的问题

    Michael McLaughlin是Oracle 11g和MySQL 5.6开发者指南的作者,他在书中为Oracle数据库开发者提供了一些建议与帮助。

  • Oracle数据库不同版本的硬件需求

    每个企业的IT环境都是不同的,这些环境中可能会包含虚拟服务器、各种网络操作系统、基于云计算的服务、SAN等等,根据应用场景选择硬件是基本的准则。

  • Oracle 11g SQL性能分析器技术指南

    当今信息时代要求企业的IT系统能够始终保证系统的性能并且提供更高的服务质量,我们的IT系统经常要面对应用程序升级、硬件更新、数据库升级、对象结构变更等导致SQL性能下降的问题。

  • Oracle 11g SecureFile技术详解手册

    SecureFile不仅是新一代 LOB,它们还为 LOB 带来了更多的价值,尤其是以前只能在文件系统领域中获得的特性。