Similarly, the operating system has its own block size. In Unix/Linux systems, that block size is configurable. In Windows systems, the OS block size is normally 2KB.
When Oracle needs to perform I/O, its smallest unit of I/O is the DB_BLOCK_SIZE as discussed above. But Oracle then passes that I/O request to the operating system. If the DB_BLOCK_SIZE is 2KB and the OS block size is 4BK, then every time Oracle requests 2KB of data to be read from disk, the OS reads 4KB. In this scenario, time is wasted reading the extra 2KB that Oracle does not need. So to properly configure the block sizes, we need to ensure that the DB_BLOCK_SIZE parameter is an integer multiple of the OS block size. If the ratio between these two block sizes is a floating point number, performance can be affected.
This was first published in September 2008