Oracle数据库数据缓冲区大小

数据块缓冲缓存区(Data block buffers cache):
 
   8i中是db_block_buffers*db_block_size,
   9i及以后版本用db_cache_size来代替这个参数。
   10g中,这个参数是由oracle本身自动管理的,可以不用手工设置。
   在内存的配置中把别的参数设置完成后,应该把能给的都给Data buffers。Oracle 在运行期间向数据库高速缓存读写数据,高速缓存命中表示信息已在内存中,高速缓存失败意味着Oracle必需进行磁盘I/O。保持高速缓存失败率最小的关键是确保高速缓存的大小。
   8i中初始化参数db_block_buffers控制数据库缓冲区高速缓存的大小。可通过查询v$sysstat命中率,以确定是否应当增加db_block_buffers的值。
    SELECT name,value FROM V$sysstat
    WHERE name in ('dbblock gets','consistent gets','physical reads');
   通过查询结果命中率=1-physical reads/(dbblock gets+consistent gets) 如果命中率<0.6~0.7,则应增大Db_block_buffers。

    10g中,与内存相关的参数可以归为两类:

自动调优的SGA参数:目前这些参数包括DB_CACHE_SIZE、SHARED_POOL_SIZE、LARGE_POOL_SIZE和JAVA_POOL_SIZE。

手动SGA参数:这些参数包括LOG_BUFFER、STREAMS_POOL、DB_NK_CACHE_SIZE、DB_KEEP_CACHE_SIZE和DB_RECYCLE_CACHE_SIZE。

    在10g中,任何时候你都能查询V$SGAINFO,来查看SGA的哪些组件的大小可以调整。

    注意
    要使用自动SGA内存管理,参数STATISTICS_LEVEL必须设置为TYPICAL或ALL。如果不支持统计集合,数据库就没有必要的历史信息来确定大小。

    采用自动SGA内存管理时,确定自动调整组件大小的主要参数是SGA_TARGET,这个参数可以在数据库启动并运行时动态调整,最大可以达到SGA_MAX_SIZE参数设置的值(默认等于SGA_TARGET,所以如果想增加SGA_TARGET,就必须在启动数据库实例之前先把SGA_MAX_SIZE设置得大一些)。数据库会使用SGA_TARGET值,再减去其他手动设置组件的大小(如DB_KEEP_CACHE_SIZE、DB_RECYCLE_CACHE_SIZE等),并使用计算得到的内存量来设置默认缓冲区池、共享池、大池和Java池的大小。在运行时,实例会根据需要动态地对这4个内存区分配和撤销内存。如果共享池内存用光了,实例不会向用户返回一个ORA-04031"Unable to allocate N bytes of shared memory"(无法分配N字节的共享内存)错误,而是会把缓冲区缓存缩小几MB(一个颗粒的大小),再相应地增加共享池的大小。

你可能感兴趣的:(Oracle,数据库,oracle,cache,statistics,java,buffer)