初始化参数 SGA_TARGET,通过指定这个参数,让 Oracle 自动管理 SGA 中以下大多数的内存分配。SGA_TARGET 是个动态参数,但是该参数不能超过SGA_MAX_SIZE 参数的设置
并非所有 SGA 组件都可以自动调整,可以自动分配的内存包括 Buffer Cache、Shared Pool、Java Pool、 Large Pool
启用自动共享内存管理,我们可以估算一个 SGA 的总大小,然后设置 SGA_TARGET 参数为非零值, Oaracle 将启用自动共享内存管理。自动共享内存管理需要 STATISTICS_LEVEL参数设置为 TYPICAL 或者 ALL.。
以下相关初始化参数还是需要手工配置的: 非标准 BLOCK_SIZE 的
Cache、Keep/Recycle Buffer Cache、Redo Log Buffer、Streem Pool
自动的共享内存管理引入了一个新的后台进程:MMAN(Memory Manager)。该进程用以动态调整内存组件。动态调整的依据来自系统不间断收集的内存建议。
如果不想使用自动共享内存管理的新特性,Oracle 也允许使用手工管理,只需要简单的将SGA_TARGET
参数设置为 0,Oracle 就会回到手工管理的模式,当前的各内存组件值会被计入spfile,做为手工管理的初始值使用.
设置了 SGA_MAX_SIZE 参数,启用了自动共享内存管理之后,相关内存参数值会处于未设置状态:
select name,value from v$parameter where
name in ('large_pool_size','java_pool_size',
'shared_pool_size','streams_pool_size','db_cache_size');
而真正决定各组件大小的,是由一组新引入的参数决定:
set linesize 132
column name format a30
column value format a25
column description format a60
SELECT x.ksppinm NAME, y.ksppstvl VALUE,
x.ksppdesc description
FROM SYS.x$ksppi x, SYS.x$ksppcv y
WHERE x.inst_id = USERENV('Instance')
AND y.inst_id = USERENV('Instance')
AND x.indx = y.indx
AND x.ksppinm like '%pool_size%';
__shared_pool_size
335544320
Actual size in bytes of shared pool
__large_pool_size
16777216
Actual size in bytes of large pool
__java_pool_size
16777216
Actual size in bytes of java pool
__streams_pool_size
33554432
Actual size in bytes of streams pool




