Welcome 微信登录

首页 / 数据库 / MySQL / Oracle初始化参数之memory_target

一、引言:    Oracle 9i引入pga_aggregate_target,可以自动对PGA进行调整;    Oracle 10g引入sga_target,可以自动对SGA进行调整;    Oracle 11g则对这两部分进行综合,引入memory_target,可以自动调整所有的内存,这就是新引入的自动内存管理特性。二、本文说明:      操作系统:rhel 5.4 x32      数据库:oracle 11g r2三、memory_target的介绍:    3.1、下面通过示例了解一下memory_target的设置与PGA和SGA关系:SQL> show parameter memory_target;NAME                    TYPE    VALUE
------------------------------------ ----------- ------------------------------
memory_target                big integer 316M
SQL> show sga;Total System Global Area  330600448 bytes
Fixed Size            1336344 bytes
Variable Size          247466984 bytes
Database Buffers      75497472 bytes
Redo Buffers            6299648 bytes
SQL> alter system set memory_target=200m scope=spfile;System altered.SQL> alter system set sga_target=0 scope=spfile;System altered.SQL> alter system set pga_aggregate_target=0 scope=spfile;System altered.SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.Total System Global Area  209235968 bytes
Fixed Size            1335528 bytes
Variable Size          201330456 bytes
Database Buffers        4194304 bytes
Redo Buffers            2375680 bytes
Database mounted.
Database opened.设置memory_target参数后,实际上Oracle会自动设置并调整一下两个参数来分配SGA和PGA的内存,这和Oracle 10g自动设置sga_target后分配db_cache_size和shared_pool_size的机制是一样的。SQL> col ksppinm for a20;
SQL> col ksppstvl for a20;
SQL> select a.ksppinm name,b.ksppstvl value
  2    from x$ksppi a,x$ksppcv b
  3  where a.indx = b.indx
  4      and (a.ksppinm like "%sga_target%"
  5  or a.ksppinm like "%pga_aggregate_target%");NAME                                VALUE
-----------------------    -------------------
sga_target                          0
__sga_target                    142606336
pga_aggregate_target                0
__pga_aggregate_target            671088643.2、讨论一下11g中memory_target设置和不设置对SGA/PGA的影响:    3.2.1、如果memory_target设置为非0值      (下面有四种情况来对SGA和PGA的大小进行分配)      3.2.1.1、sga_target和pga_aggregate_target已经设置大小        如果Oracle中已经设置了参数sga_target和pga_aggregate_target,则这两个参数将各自被分配为最小值为他们的目标值。        memory_target = sga_target + pga_aggregate_target,大小和memory_max_size一致。      3.2.1.2、sga_target设置大小,pga_aggregate_target没有设置大小        那么pga_aggregate_target初始化值=memory_target-sga_target      3.2.1.3、sga_target没有设置大小,pga_aggregate_target设置大小        那么sga_target初始化值=memory_target-pga_aggregate_target      3.2.1.4、sga_target和pga_aggregate_target都没有设置大小        Oracle 11g中对这种sga_target和pag_aggregate_target都没有设定大小的情况下,Oracle将对这两个值没有最小值和默认值。Oracle将根据数据库运行状况进行分配大小。但在数据库启动是会有一个固定比例来分配:        sga_target = memory_target*60%        pga_aggregate_target = memory_target*40%    3.2.2、如果memory_target没有设置或 = 0(在11g中默认为0)      11g中默认为0则初始状态下取消了memory_target的作用,完全和10g在内存管理上一致,完全向下兼容。(也有三种情况来对SGA和PGA的大小进行分配)      3.2.2.1、sga_target设置值,则自动调节SGA中的shared pool,buffer cache,redo log buffer,java pool,larger pool等内存空间的大小。PGA则依赖pga_aggregate_target的大小。sga和pga不能自动增长和自动缩小。      3.2.2.2、sga_target和pga_aggregate_target都没有设置        SGA中的各组件大小都要明确设定,不能自动调整各组件大小。PGA不能自动增长和收缩。      3.2.2.3、memory_max_target设置而memory_target = 0这种情况先和10g一样,不做说明。 更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-10/107729p2.htm
  • 1
  • 2
  • 下一页
Oracle ORA-01555(快照过旧)B-Tree索引性能优于BitMap索引实例相关资讯      Oracle参数  MEMORY_TARGET 
  • Oracle升级中的参数补充  (05月31日)
  • 获取Oracle隐含参数信息  (11/05/2014 09:58:10)
  • Oracle动态服务器参数文件  (09/26/2014 19:36:24)
  • Oracle 参数调优  (04/12/2015 18:05:19)
  • memory_target设置不当导致数据库  (10/28/2014 19:58:10)
  • Oracle静态参数文件  (09/26/2014 19:33:54)
本文评论 查看全部评论 (0)
表情: 姓名: 字数