一、引言: 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 67108864
3.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
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)