天天看点

oracle启用amm,使用ASMM和AMM时设置shared_pool

使用ASMM和AMM时设置shared_pool

从10g中引入了asmm后,相比以前的手动调整各种内存组件,在自动管理方面前进了一大步。DBA只需要定义sga_target和sga_max_target就可以了

其他的各种事情就交给oracle自己去搞定了.

11g引入了amm,只需要定义memory_target和memory_max_target就可以了,oracle会自动分配pga和sga中的各个组件.一切变得更简单了.

特别需要关注的是对shared_pool的调整,我们知道shared _pool非常重要,在自动管理的环境情,可能会被其他的内存组件占用shared_pool的空间,

当shared_pool空间不够时会引发各种各样的问题,严重情况一下会引起DB被hang住,有时候也把这种情况称为内存颠簸。在这里值得一提的是在自动管理

内存的环境下也可以定义各种组件的大小,这时候的定义是表示一个组件的最小值。所以非常建议给shared_pool_size手动设置一个最小值,这样保证shared_pool不

至于太小而引发的各种问题。初始大小设置为(memory_target*0.6)*0.4 .观察一段时间,再根据实际情况做部分修改.

引发内存颠簸的情形还有可能是bug,具体可以参看mos相关文档,也可以设置_memory_broker_stat_interval参数,定义了每次进行resize的时间(可能调整或不调整),

default为30秒。在v$sga_resize_ops表现了resize的操作.

另外还有db_recycle_cache_size和db_keep_cache_size需要手动设置.