Enable row movement在3种情况下需要使用。
1. flashback table
2. change the partition key
3. alter table shrink space(这些操作都有一个共同点,可能会改变rowid)
一直都知道ENABLE ROW MOVEMENT的使用,但却不懂它到底做了什么。
我的看法是单个操作一般情况下是不允许改变记录ROWID的,如果单个操作要改变记录的ROWID
(如flashback的时候,虽然底层是delete+insert,但是整体上看flashback是一个原子操作)
就必须开启ROW MOVEMENT功能,而我们一般的DELETE +INSERT操作是2个操作,所以可以不用开启。SHRINK SPACE 跟改变PARTITION KEY的底层改变也很复杂