这段时间没事,把以前的一些调优的资料,翻出来看看,重新整理了
一、buffer cache特性
1.工作原理:
Buffer cache是Oracle SGA中的重要组成部分, 所有用户都可以共享这些块,server process进程访问数据时,S erver process一次性可以读取多个数据块;DBwn负责往数据文件读写文件
这里在给出一份更详细的总结.通常数据的访问和
修改都是需要通过buffer cache来完成的,
当一个server process访问数据的时候,
首先需要确定的是,我们所需要的数据在
buffer cache中是否存在,如果数据在buffer中存在呢
,我们还需要根据data buffer的状态,
来判断是否进行db block gets还是consistent gets,
如果数据在buffer中不存在,
则我们需要在buffer cache中寻找足够的空间来
加载我们所需要的数据,
如果在buffer cache中我们找不到足够的空间,
那么我们就需要触发DBWn进程,
去写出脏数据,用来释放我们的buffer空间
2 buffer在BC有四种状态:
pinned:正在写,占用,只能被一个进程占用
clear:干净的数据,与数据库文件中CR 快照是同步的,没有被进程使用
feee/unused:空闲
dirtyL脏数据块,与clear相对的
3 使用两个列表管理缓冲区高速缓存中的块
– 最近最少使用的 (LRU) 列表用于保持内存中最近访问的块 列表中的块
按照从最近最常使用 (MRU) 到最近最少使用的顺序组织
– 灰数据列表指向缓冲区高速缓存中的块 这些块虽已修改但尚未写入 磁盘
4 DB_BLOCK_CHECKNUM 参数
如果DB_BLOCK_CHECKNUM设置为true的话,那么在数据库底层,会给造成系统带来2%左右系统开销,增加系统可靠性
二 初始化参数
1)db_block_size 规定主块的大小,决定了system中
primary buffer cache(recycle keep default) 表BLOCK大小
db_cache_size
db_keep_cache_size
db_recycle_cache_size
2)动态调整参数
db_clock_checksum(1% 2%)
db_cache_advice(off/ready/on) 打开预测参考值,动态收集数据性
能资料,为设置db_cache,提供参考。该参数只能在session级别使用
状态由off---ready -------on
alter system set db_cache_advice=''
3) v$db_cache_advice 视图
关于该视图,可以参考帮助文档
三 附上buffer cache 结构图,
以便加深理解
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13824386/viewspace-697951/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13824386/viewspace-697951/