1. Buffer cache
数据库缓冲区,是 Oracle 内存结构 SGA 中的一部分。
2. Buffer cache 意义
(1) 缓存 dbf 文件。
Buffer 是存在于内存中, dbf 是存在磁盘中。在读取磁盘中数据时, dbf 数据会首先送到 buffer cache 中,以达到缓存的作用。
(2) 构造 cr 块
在一个会话中,用户删除掉一条数据,但是没有提交。此时改变前的数据会放在 undo 段中。当另一个会话读取同一个块的数据时,发现块内数据被删除了,这时在 buffer cache 中会产生一个新的块,这个新的块就是旧的块产生的,被删除的那条数据由 undo 来补充。这个新的块就叫 cr 块。
所以一条会话删除一条数据没有提交时,另一个会话会看到被删除之前的数据。
3. 数据库写进程( DBWn )
当 buffer cache 中的块被修改之后,这个被修改的块就被称为脏块。 DBWn 负责将 buffer cache 中的脏块写进 dbf 文件中。
DBWn 不是每次更改数据块就会触发。就算触发时,也不是吧所有的块写进 dbf 文件中,而是将一些不常使用的块写进去。它是有一定的触发条件的。
(1) 每过 3 秒触发一次
(2) 当数据要写进 buffer cache 中,发现没有足够的空间的时候
(3) 执行检查点进程时
4 . Buffer cache 的重要参数配置
( 1 )查询 sga 各个组件大小
SQL> select component,current_size/1024/1024 current_M,min_size/1024/1024 min_M from v$sga_dynamic_components;
(3) 修改 buffer cache 大小
SQL> alter system set db_cache_size=20M scope=both;
通常情况下,对于 DB_CACHE_SIZE 的设置,推荐配置为:
整个的 SGA_MAX_SIZE 的 1/2~2/3
--------------- end -----------------------
来自 “ ITPUB博客 ” ,链接:/31529886/viewspace-2641097/,如需转载,请注明出处,否则将追究法律责任。