Guidelines for DB_BLOCK_SIZE
To give some guidelines for the setting of the parameter DB_BLOCK_SIZE.
SCOPE & APPLICATION
To increase understanding of the issues related to the setting of the
Guidelines for DB_BLOCK_SIZE:
The setting of the parameter DB_BLOCK_SIZE depends on the type of data you are
looking at, the application and implementation.
The main considerations are as follows:
1. Balance with Operating System Block Size
For good performance, Oracle Block size should be made equal to or a
multiple of the operating system blocksize. If you do not do this then the
operating system may be doing many reads and writes to process Oracle
blocks. This is inefficient and wastes CPU cycles.
If your rows are small and you use a large blocksize, when you fetch a block
you may get lots of rows that you are (probably) not interested in. The
operating system has to do more work to get the row(s) that you are
On the other hand, if you were interested in the extra rows then altough
this may waste CPU on the initial fetch then you have already loaded the
block containing the rows in to the buffer cache.
Larger blocks also mean more rows cached for the same number of
DB_BLOCK_BUFFERS (taking up more memory).
2. Index Branches
Larger Oracle block sizes may give better index balancing with more rows in
3. Locking/Block Contention
Remember that with more processes looking at the same block you are more
likely to get block contention.
4. Row Length
If your rows are comparatively large then you may need a large blocksize to
(possibly) prevent chaining.