从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需要手动设置。
--------------------------------------分割线 --------------------------------------
CentOS 5.2 x86 安装Oracle 11g R2 笔记
在CentOS 6.4下安装Oracle 11gR2(x64)
--------------------------------------分割线 --------------------------------------