【源于网络】
当开启ROW
MOVEMENT后,表被顺利的flashback了,数据被找回。此时,再比较flashback前后记录的ROWID,大多数记录的物理位置都变化。这个过程的内部操作,
可以通过对Flashback Table做SQL Trace来进一步观察。通过Trace,我们不难发现,Flashback
Table实际是通过Flashback Query将表中数据进行了一次删除、插入操作,因此ROWID会发生变化。
Shrink Segment
Shrink Segment能帮助我们压缩数据段、整理数据碎片、降低高水位,以提高性能、节省空间。它也同样要求开启ROW MOVEMENT。
SQL代码
SQL> select username, rowid from test_move; USERNAME ROWID ------------------------------ ------------------ DMP AAAwShAAFAAAVlQAAA MYTBC AAAwShAAFAAAVlQAAB CS2 AAAwShAAFAAAVlQAAC TBC AAAwShAAFAAAVlQAAD WOW AAAwShAAFAAAVlQAAE REPO AAAwShAAFAAAVlQAAF ... ... SYSTEM AAAwShAAFAAAVlQAAk OUTLN AAAwShAAFAAAVlQAAl 38 rows selected. SQL> delete from test_move where username = 'MYTBC'; 1 row deleted. SQL> commit; Commit complete. SQL> alter table test_move disable row movement; Table altered. SQL> alter table test_move shrink space; alter table test_move shrink space * ERROR at line 1: ORA-10636: ROW MOVEMENT is not enabled SQL> alter table test_move enable row movement; Table altered. SQL> alter table test_move shrink space; Table altered. SQL> select username, rowid from test_move; USERNAME ROWID ------------------------------ ------------------ DMP AAAwShAAFAAAVlMAAA CS2 AAAwShAAFAAAVlMAAB TBC AAAwShAAFAAAVlMAAC WOW AAAwShAAFAAAVlMAAD REPO AAAwShAAFAAAVlMAAE ... ... SYSTEM AAAwShAAFAAAVlMAAj OUTLN AAAwShAAFAAAVlMAAk 37 rows selected. SQL> |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22308399/viewspace-750406/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22308399/viewspace-750406/
ROWMOVEMENT与ShrinkSpace
本文探讨了ROWMOVEMENT特性在Oracle闪回操作及ShrinkSegment中的作用。通过示例展示了ROWID的变化以及ShrinkSegment对数据段的压缩与整理效果。
631

被折叠的 条评论
为什么被折叠?



