8i 引入,預設關閉。啟用後允許行在塊/分區間移動,導致 ROWID 變更。僅三大功能強制要求啟用:
FLASHBACK TABLESHRINK SPACEALTER TABLE test_move ENABLE ROW MOVEMENT;
FLASHBACK TABLE test_move TO TIMESTAMP(SYSTIMESTAMP - INTERVAL '3' MINUTE);
-- 所有行 ROWID 全部改變(內部執行 DELETE + INSERT)
影響:僅發生於誤操作恢復,頻率極低,應用依賴 ROWID 的極少,影響可忽略。
ALTER TABLE test_move ENABLE ROW MOVEMENT;
ALTER TABLE test_move SHRINK SPACE;
-- ROWID 變更(底層函數重組,非 SQL)
影響:維護窗口操作,可離線執行,影響可控。
UPDATE test_move SET owner='SYS' WHERE owner='DEMO' AND table_name='T_TEST';
-- 內部分解為:DELETE 舊分區 → INSERT 新分區 → UPDATE
-- 產生額外 Redo/Undo、Local Index 雙分區維護
量化分析建議:
DBA_TAB_MODIFICATIONS)。UPDATE 耗時、Wait 事件(enq: TX - row lock contention、log file sync)。