Row movement is mainly applied to partition tables . It allows you to move lines across sections. If line moving is disabled by default, you cannot move the line with the update:
SQL> CREATE TABLE part_table (ID NUMBER) 2 PARTITION BY RANGE (ID) 3 (PARTITION p0 VALUES LESS THAN (1), 4 PARTITION p1 VALUES LESS THAN (MAXVALUE)); Table created SQL> INSERT INTO part_table VALUES (0); 1 row inserted SQL> UPDATE part_table SET ID = 2; UPDATE part_table SET ID = 2 ORA-14402: updating partition key column would cause a partition change
When you enable row moving, you can move rows with the update:
SQL> ALTER TABLE part_table ENABLE ROW MOVEMENT; Table altered SQL> UPDATE part_table SET ID = 2; 1 row updated
This function does not affect performance in most cases: rows are stored and requested in the same way, whether this function is enabled or not. However, when row moving is activated, rows can be physically moved (similar to delete + insert) using ALTER TABLE SHRINK SPACE . This can, in turn, affect the index cluster factor, for example, which can affect the performance of some queries.
Line movement is disabled by default because it means that the row rowid row may change, which is not normal behavior in Oracle.
Vincent malgrat
source share