Oracle manages the storage space in the datafiles of a database in units called data
blocks. A data block is the smallest unit of data used by a database. In contrast, at the
physical, operating system level, all data is stored in bytes. Each operating system has
a block size. Oracle requests data in multiples of Oracle data blocks, not operating

system blocks.

ORACLE管理数据库数据文件的存储空间的单元叫做数据块。一个数据块是最小的数据

使用单元对于数据库。

The standard block size is specified by the DB_BLOCK_SIZE initialization parameter.


In addition, you can specify of up to five nonstandard block sizes. The data block sizes


should be a multiple of the operating system’s block size within the maximum limit to


avoid unnecessary I/O. Oracle data blocks are the smallest units of storage that Oracle


can use or allocate.


Data Block Format
The Oracle data block format is similar regardless of whether the data block contains
table, index, or clustered data. Figure 2–2illustrates the format of a data block.

Overview of Data Blocks_system


Header (Common and Variable)
The header contains general block information, such as the block address and the type
of segment (for example, data or index).


Table Directory
This portion of the data block contains information about the table having rows in this
block.
Row Directory
This portion of the data block contains information about the actual rows in the block
(including addresses for each row piece in the row data area).
After the space has been allocated in the row directory of a data block’s overhead, this
space is not reclaimed when the row is deleted. Therefore, a block that is currently
empty but had up to 50 rows at one time continues to have 100 bytes allocated in the
header for the row directory. Oracle reuses this space only when new rows are inserted
in the block.
Overhead
The data block header, table directory, and row directory are referred to collectively as
overhead. Some block overhead is fixed in size; the total block overhead size is
variable. On average, the fixed and variable portions of data block overhead total 84 to
107 bytes.
Row Data
This portion of the data block contains table or index data. Rows can span blocks.
Free Space
Free space is allocated for insertion of new rows and for updates to rows that require
additional space (for example, when a trailing null is updated to a nonnull value).
In data blocks allocated for the data segment of a table or cluster, or for the index
segment of an index, free space can also hold transaction entries. A transaction entry
is required in a block for each INSERT, UPDATE, DELETE, and SELECT...FOR UPDATE
statement accessing one or more rows in the block. The space required for transaction
entries is operating system dependent; however, transaction entries in most operating
systems require approximately 23 bytes.