ORACLE体系结构-ASMM子自动共享管理内存

所谓ASMM,也就是SGA的自动管理。

1.作用

不需要手工的设置shared pool和data buffer cache的大小,只需要设置一个总大小。oracle就会根据负载的变化,自动调整个组件的大小。

2.使用

启用ASMM的初始化参数,SGA_TARGET.该参数定义了SGA的总容量。同时初始化参数statistics_level必须设置为typical或all才能启动ASMM,

否则设置为basic,则是关闭ASMM

ASMM只能自动调整五个内存池的大小。

buffer cache,shared pool,java pool,large pool,steam pool

而redo log buffer,keep buffer cache等仍然需要手工调整

另一个初始化参数SGA_MAX_SIZE.

SGA_TARGET不能超过SGA_MAX_SIZE的值,修改sga_max_size时,必须重启实例才能生效。

而sga_target则可以在线修改,立即生效,无需重启实例

3.ASMM的原理

oracle通过引入一个MMAN的后台进程来实现ASMM,

每隔一段时间,MMAN就会启动,去询问oracle提供的各个内存组建顾问,比如buffer cache顾问,shared pool顾问,

由这些顾问将当前的负载情况,将这五个可以自动调整的内存池的,建议的大小返回给MMAN。然后MMAN根据返回的值

来设置各个内存值。

同时如果如果实例使用spfil,还会将这些建议值写入spfile,这样下次启动,实例将会将些建议值作为启动的依据。

当启用ASMM,又同时设置了各个内存池的大小时候,比如说设置了参数shared_pool_size,时候。oracler将会以设置的值作为最小值。

4.oracle11g asmm

ORACLE11G使用自动内存管理不再需要SGA_TARGET和pga_target,因为这两个参数都是自动调优的,除非像设置SGA和PGA的最小值才需要设置这辆个参数。

oracle11g数据库通过设置memory_target的初始化参数来实现内存自动管理。这个参数是整个oracle实例所能使用的的内存总大小,包括SGA和PGA.

在meory_target的大小之内,pga和sga可以根据负载情况自动调整。

同样也存在memory_max_size的参数设置,当meory_target的内存不够时,可以动态调节memory_target的值,但其大小不能超过meory_max_size


你可能感兴趣的:(ORACLE体系结构-ASMM子自动共享管理内存)