Oracle supports multiple block sizes in a single database using different tablespaces with specific BLOCKSIZE clauses. A data block is indeed the smallest unit of I/O operations - Oracle reads entire blocks. Each segment (like a table or index) is composed of one or more extents. However, multiple tablespaces cannot share a single data file - each data file belongs to exactly one tablespace. Data blocks do not necessarily correspond one-to-one with OS blocks.