The Oracle database knows three distinct processes that are easily mixed up: Row Chaining, Row Migration and Row Movement.
Luckily all three are well described in excellent articles: The Secrets of Oracle Row Chaining and Migration and Row Movement in Oracle.
For the impatient, I provide some very short definitions:
- Row Chaining
- Distribution of a single table row across multiple data blocks.
- Row Migration
- Relocation of an entire table row to a new place, without updating the indexes.
- Row Movement
- Relocation of an entire table row to a new place and updating the indexes.
This article was inspired by the question if Oracle 11r2 performs Row Movement instead of Row Migration for ordinary UPDATE
statements—that is, in absence of partitions. The short answer is: no, it doesn’t. The long answer is the rest of this article.