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

oracle自动共享内存管理

2013-08-03 23:23 281 查看
oracle对于内存的管理有两种方式:手动分配各个内存结构、自动共享内存管理
手动分配内存管理在后期的管理中会带来不变;oracle提供了ASMM,会管理大大提高了效率。
原理:oracle引入了MMAN(Memory Mnanager)这个概念,这是一个后台进程,会每隔一段时间就会自动运行,运行之后会询问oracle提供的各个内存组件adviser,adviser会将可以自动调整的内存池的建议的大小返回给MMAN,然后MMAN会根据返回的结果设置各个大小
ASMM自动优化的组件:shared pool,DB cache,large pool,java pool,streams pool
ASMM的好处 :
会根据系统的负载自动调整各个组件的大小
增大SGA的使用效率
减少内存溢出的错误
易于管理维护

管理员只需要设置一个SGA_TARGET的总大小,具体各个组件的大小不需要手动设置具体的大小。
设置自动调整SGA,首先看看初始化参数是不是自动调整的,可以看SGA_TARGET参数,如果这个参数没有设置或者值为0时,SGA自动调整是失效的
SQL> show parameter sga_target
NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
sga_target                           big integer
272M

初始化参数STATISTICS_LEVEL 参数值必须是TYPICAL 或者ALL时才能启动ASMM,
SQL> show parameter statistic
NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
statistics_level                     string
TYPICAL
timed_os_statistics                  integer
0
timed_statistics                     boolean
TRUE

取消ASMM
使ASMM失效的方法也很简单,手动设置SGA_TARGET 的值为0将会是自动调整失效,SGA的大小不会改变,自动调整的内存大小将会是当前设置大小。

相关动态视图:
v$parameter
v$sgastat
v$sga_dynamic_components
v$db_cache_advice
v$shared_pool_advice
v$large_pool_advice
v$streams_pool_advice
v$java_pool_advice
v$sga_target_advice
v$pga_target_advice
对于所有指导必须先讲STATISTICS_LEVEL 参数值设为typical
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: