您的位置:首页 > 数据库 > Oracle

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

2016-02-23 23:14 323 查看
所谓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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: