oracle内存参数调整

介绍Oracle 11g中引入的自动内存管理特性,包括memory_target参数的作用及对SGA和PGA内存分配的影响,并探讨不同配置场景下的内存分配策略。
Oracle 9i引入pga_aggregate_target,可以自动对PGA进行调整;
Oracle 10g引入sga_target,可以自动对SGA进行调整;
Oracle 11g则对这两部分进行综合,引入memory_target,可以自动调整所有的内存,这就是新引入的自动内存管理特性。


查看每个内存组件的配置与实际占用内存的大小,可以查看下面的v$视图
v$memory_dynamic_components


alter system set memory_max_target=6g scope=spfile;
alter system set memory_target=5g scope=spfile;
alter system set sga_target=0 scope=spfile;
alter system set pga_aggregate_target=0 scope=spfile;
shutdown immediate;
startup;
/


设置memory_target参数后,实际上Oracle会自动设置并调整以下下两个参数来分配SGA和PGA的内存,这和Oracle10g自动设置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
       from x$ksppi a,x$ksppcv b
     where a.indx = b.indx
       and (a.ksppinm like '%sga_target%' or a.ksppinm like '%pga_aggregate_target%');
  
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一样,不做说明。 
 


--以下内容来自oracle官方文档,但是实际测试却得不到验证
On 64-bit platforms and non-Windows 32-bit platforms, when either MEMORY_TARGET or MEMORY_MAX_TARGET is specified, the default value of SGA_MAX_SIZE is set to the larger of the two parameters. This causes more address space to be reserved for expansion of the SGA.   
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值