【行迁移】:当一行数据被update时,可能导致长度变长,原数据块的可用空间无法容纳增长后的数据行。 oracle会将这行数据迁移到新的数据块中,并在原来所在位置保存一个指向新数据块的指针,被迁移的数据行rowid保持不变。 (Oracle preserves the original row piece
of a migrated row to point to the new block containing the migrated row.
The rowid of a migrated row does not change.) ——摘自oracle 10g concepts
再深入一些了解向数据块中插入数据(来自oracle 10g concepts ): For each data and index segment, Oracle maintains one or more free
lists—lists of data blocks that have been allocated for that segment's
extents and have free space greater than PCTFREE.
These blocks are available for inserts. When you issue an INSERT statement, Oracle checks a free list of the table
for the first available data block and uses it if possible. If the free space in
that block is not large enough to accommodate the INSERT statement, and the block is at least PCTUSED, then Oracle takes the block off the free list.
Multiple free lists for each segment can reduce contention for free lists when
concurrent inserts take place.
After you issue a DELETE or UPDATE statement, Oracle processes the statement and checks
to see if the space being used in the block is now less than PCTUSED. If it is, then the block goes to the beginning of
the transaction free list, and it is the first of the available blocks to be
used in that transaction. When the transaction commits, free space in the block
becomes available for other transactions.