Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2774731
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Oracle

2014-01-07 09:57:08

                                  ORACLE内存管理参数演进

1,Oracle 9i可以设置sga_max_size,定义了sga总的大小,部分组件可以手动动态调整,而且
不需要重启实例


2,Oracle 10G引了ASMM(automatic shared memory management)管理,oracle可以动态管理
db_cache_size,java_pool_size,shared_pool_size,streams_pool_size,large_pool_size
而不需要人工手动去设置单个组件.同时引入了PGA动态管理,不需要DBA再去单独定义
sort_area_size,hash_area_size,create_bitmap_area_size,bitmap_merge_area_size,
bitmap_merge_area_size.DBA只需要定义workarea_size_policy和pga_aggregate_target两
个参数就可以了,剩下的事情全由oracle搞定.
 
 
3,Oracle 11G引入了AMM(automatic memory management)管理,原先sga和pga是单独作为两部分
每个部分可能动态调整的组件都是在自己的部分里面调整,比如sga的动态部分只能在sga中组件
中动态调整。而使用了AMM后,pga和sga作为整体来管理.oracle根据负载的不同,在pga和sga的
组件中动态调整大小.

   AMM使用的是一种叫作tmpfs的文件系统来达到在不同的组件之间动态收缩大小的.和以前的方式
使用共享内存有些区别.所以当tmpfs定义过小时,oracle会报memory_target unsupport的错误.

   从11.2开始oracle开始支持flash cache作为buffer和disk中间的一个cache,当部分的块不
用的时候oracle会把该块写到flash上去,同时在sga中保留部分信息(每个buffer是100多字
节),当需要再次读取时,oracle只需要从flash cache上去读取,而不需要从磁盘中去读取.
这样就提高了io效率,因为flash cache可以达到一个很高的iops值

4,Oracle 12C引入了pga_aggregate_limit,强行限制了pga的大小.在之前的版本中pga_aggregate_target
只是一个软限制,不是强行的限制,在某些情况下可能会导致pga使用更多的内存,从而引发其他的内存
组件饥饿.

 flash cache可以定义16个文件了.相比原来已经大增强,同时每个文件可以定义不同的大小.
 

阅读(2638) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~