资源由 www.eimhe.com 美河学习在线收集分享
数据缓冲区中被修改的数据块(脏块)由后台进程 DBWR 将其写入磁盘。
数据缓冲区的大小对数据库的读取速度有直接的影响。
要弄明白 Database Buffer Cache 中的几个 cache 概念:
① Buffer pool=(default pool)+(nodefault pool)
其中:
default pool(参数 db_cache_size)是标准块存放的内存空间大小,SGA 自动管理时此参数不用设置。使用 LRU 算法清理空间
nodefault pool:对应的参数有
db_nk_cache_size 指定非标准块大小内存空间,比如 2k、4k、16k、32k。
db_keep_cache_size 存放经常访问的小表或索引等。
db_recycle_cache_size 与 keep 相反,存放偶尔做全表扫描的大表的数据。
①如何指定使用某个表调入 nodefault pool
SQL> alter table scott.emp1 storage(buffer_pool keep);
SQL>
select segment_name,buffer_pool from dba_segments where segment_name='EMP1';
②default pool 对应的参数是 db_cache_size 与标准块 default block 是配套的,如果 default block 是 8k, db_cache_size 这个参数将
代替 db_8k_cache_size。
③如果要建立非标准块的表空间,先前要设定 db buffer 中的与之对应的 db_nk_cache_size 参数。
第一步,先指定 db buffer 里的 16k cache 空间大小。
SQL> alter system set db_16k_cache_size=8m;
第二步,建立非标准块表空间
SQL> create tablespace tbs_16k datafile '/u01/oradata/prod/tbs16k01.dbf' size 10m blocksize 16k;
SQL> select TABLESPACE_NAME,block_size from dba_tablespaces;
3)redo log buffer
以日志条目(redo entries)方式记录了数据库的所有修改信息(包括 DML 和 DDL),目的是为数据库恢复,日志条目首先产生于
日志缓冲区,日志缓冲区较小,一般缺省值在 3M-15M 之间,它是以字节为单位的。
日志缓冲区的大小启动后就是固定不变的,如要调整只能通过修改参数文件后重新启动生效。不能动态修改!不能由 SGA 自动
管理!
4)large pool(可选)
为了进行大的后台批处理操作而分配的内存空间,主要用于共享服务器的 session memory(UGA),RMAN 备份恢复以及并行查
询等操作。有助于降低 shared pool 碎片。
5)java pool(可选)
为了 java 虚拟机及应用而分配的内存空间,包含所有 session 指定的 JAVA 代码和数据。
6)stream pool(可选)
为了 stream process 而分配的内存空间。stream 技术是为了在不同数据库之间共享数据,因此,它只对使用了 stream 数据库特
性的系统是重要的。
1.3 Oracle 的进程:
评论