DB_BLOCK_SIZE决定的参数应该是数据库I/O的最小单位,但为什么DB_BLOCK_SIZE参数决定数据库高速缓存中缓冲区的大小,那应该也决定了共享池、日志缓冲区的大小,共享池、日志缓冲区不也是数据库I/O的一部分吗?我这样理解对吗。。

解决方案 »

  1.   

    db_block_size是最小逻辑单元,一次io读多个db_block_size的数据,有DB_FILE_MULTIBLOCK_READ_COUNT参数决定。
    数据库高速缓存中缓冲区的大小主要由db_block_size决定.不是db_block_size
      

  2.   

    转自深入浅出Oracle:
    自9i开始,Oracle引入新的初始化参数db_cache_size;该参数定义主Block Size(db_block_size定义的块大小)的default缓冲池的大小;
    Db_cache_size最小值为一个粒度(granule)。
    粒度(granule):粒度是连续虚拟内存分配的单位,粒度是9i新引入的参数,其大小取决于SGA_MAX_SIZE参数所定义的SGA总的大小
    当SGA<128M时,粒度值为4M;
    否则粒度值为16M
    粒度大小受内部隐含参数_ksmg_granule_size的控制
      

  3.   

    DB_BLOCK_SIZE参数决定数据库高速缓存中缓冲区的大小,
    ==================================================
    我的理解:
    DB_BLOCK_SIZE 不能决定 database buffer cache 的大小,而是决定了 database buffer cache 中的每一个 buffer 的大小,所以 database buffer cache 的大小是 DB_BLOCK_SIZE 的倍数。就是说每个 database block 都是被读入 database buffer cache 中的一个 buffer 中的。
      

  4.   

    引用Oracle Database OCP 10g Certification All-in-One Exam Guide的原文:
    DB_BLOCK_SIZE determines the size of the buffers in the database 
    buffer cache. When the instance is instructed to create a database, this size will also be 
    used to format the datafiles that make up the SYSTEM and SYSAUX tablespaces.

    意思应该是DB_BLOCK_SIZE决定了数据库缓存区的大小并且在创建数据库的时候用于格式化SYSTEM和SYSAUX的表空间,应该没理解错吧。。
    难道书上有错误
      

  5.   

    9i以前是由它决定的。但是从9I引入db_cache_size参数后,缓冲区大小就不由它决定了。
      

  6.   

    书上说是10g,Amazon上评论这本书很好,不过好像很多地方都有错误。。
      

  7.   

    DB_BLOCK_SIZE determines the size of the buffers in the database buffer cache.
    意思应该是DB_BLOCK_SIZE决定了数据库缓存区的大小
    ===================================================================================
    如果你说的“数据库缓存区”对应为the database buffer cache,那么你的理解就是错误的。
    database buffer cache 是由一个一个的 buffer 组成的,DB_BLOCK_SIZE 只是决定了那一个个 buffer 的大小,而不是整个 cache 的大小。When the instance is instructed to create a database, this size will also be 
    used to format the datafiles that make up the SYSTEM and SYSAUX tablespaces.
    ===============================================================================
    就是说当创建数据库时,构成这两个表空间的数据文件的 DB block 的大小是由 DB_BLOCK_SIZE 参数决定的。
      

  8.   


    DB_BLOCK_BUFFERS   specifies   the   number   of   database   buffers   in   the   buffer   cache.   It   is   one   
      of   several   parameters   that   contribute   to   the   total   memory   requirements   of   the   SGA   of   an   
      instance.   
      This   parameter,   together   with   DB_BLOCK_SIZE,   determines   the   total   size   of   the   buffer   
      cache.   Effective   use   of   the   buffer   cache   can   greatly   reduce   the   I/O   load   on   the   database.   DB_   
      BLOCK_SIZE   can   be   specified   only   when   the   database   is   first   created,   so   you   use   DB_   
      BLOCK_BUFFERS   to   control   the   size   of   the   buffer   cache.   
      

  9.   

    DB_BLOCK_SIZE不是决定buffer_cach和 java或其他池的大小,而是决定这些池的大小最小倍,假如DB_BLOCK_SIZE=4M SGA如果不超过1G ,系统都默认是DB_BLOCK_SIZE=4M ,那么池的大小一定是他的倍数,假如你为java池分5M 那么实际上系统分给他的是8M