首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

问个oracle脏数据有关问题,求大牛帮小弟我理清上思路,没头绪阿

2013-01-06 
问个oracle脏数据问题,求大牛帮我理清下思路,没头绪阿最近在学习oracle体系结构在学到 Flush Buffer的时候

问个oracle脏数据问题,求大牛帮我理清下思路,没头绪阿
最近在学习oracle体系结构
在学到 Flush Buffer的时候里面解释到

回顾一下前面一个用户进程访问一个数据块的过程,如果访问的数据块不在buffer cache中,就需要扫描LRU链表,当达到扫描块数限制后还没有找到空闲buffer,就需要通知DBW0将脏缓存回写到磁盘。如果一个系统中存在大量的脏缓冲,那么就可能导致用户进程访问数据性能下降。

我们可以通过人工干预将所有脏缓冲回写到磁盘去,这就是flush buffer。

在9i,可以用以下语句:

alter system set events = 'immediate trace name flush_cache'; --9i

在10g,可以用以下方式(9i的方式在10g仍然有效):

alter system flush buffer_cache; -- 10g


我之前也看了 

脏数据缓存即被进程修改过,但还没有被回写到数据文件中去的数据块,此时缓冲中的数据和数据文件中的数据不一致

我在一直以为commit后数据在缓存就消失了 直接提交给表里保存了
是不是我这个思路是错误的
而没commit前的数据 就一直驻留在缓存中

就是请高手和我解释下 脏数据缓存到底是怎么样的
[解决办法]
commit和数据在哪里是两码事

[解决办法]
commit 以日志写回为准,与数据是否写回无关。

热点排行