Oracle 自动内存管理

2014-11-24 17:50:17 · 作者: · 浏览: 0

自动内存管理类型


开启自动内存管理


为开启自动内存管理,必须设置memory_target参数,该参数设置实例的目标内存。也可以指定memory_max_target初始化参数设置一个实例的最大内存尺寸


在用新的自动内存管理特性给数据库分配适当的尺寸之前,必须首先查找当前有多少内存分配给了SGA和PGA。但是并不意味简单的将sga_target和pga_target参数求和相加的内存需求。原因是:与sga_target参数不同,数据库不立即接管分配给pga_target参数的内存。数据库只根据pga_target参数设置将PGA分配给每个部分,因此,你的pga_target也许分配得很大,但是数据库在给定时间内却只是用了很小的一部分。


推荐阅读:


因此需要做如下操作,来确定自动内存管理的内存大小


1、查找当前SGA大小


SQL> show parameter sga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_target big integer 600M


2、查找给定时间内分配给PGA的大小


SQL> select value from v$pgastat where name='maximum PGA allocated';

VALUE
----------
248707072


3、2步得到的查询结果显示PGA分配的最大内存大约为236M,执行一下操作 得到一个错误的PGA估计


SQL> show parameter pga_

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 400000000


4、通过将SGA_TARGET参数值和实例启动以来分配给PGA最大的内存值相加,选择memory_target参数值。(600+236)。如果需要,也可以设置memory_max_target,如果不给定该参数值,将使用memory_target的值。


设置:


alter system set memory_target=1200M scope=spfile;


alter system set memory_max_target=1000M scope=spfile;


alter system set sga_target=1200M scope=spfile;


alter system set pga_aggregate_target=1200M scope=spfile;



oracle内存管理方法的总结