ORACLE ROW MOVEMENT
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,ROW MOVEMENT特性最初是在8i时引入的,其目的是提高分区表的灵活性,这一特性默认是关闭,只要使用一下3个功能才需要打开: 1.Flashback Table 这一功能
千家信息网最后更新 2026年11月02日ORACLE ROW MOVEMENT
ROW MOVEMENT特性最初是在8i时引入的,其目的是提高分区表的灵活性,这一特性默认是关闭,只要使用一下3个功能才需要打开:
1.Flashback Table
这一功能能帮助我们及时回滚一些误操作,防止数据意外丢失。在使用该功能之前,必须先打开ROW MOVEMENT,否则就会抛ORA-08189错误。
select username, rowid from test_move;
delete from test_move where username = 'MYTBC';
commit;
alter table test_move enable row movement;
flashback table test_move to timestamp(systimestamp - interval '3' minute);
--闪回到3分钟前得状态,那时username='MYTBC'记录未被删除。
select username, rowid from test_move;
--查询可知,数据被找回来,此时,再比较flashback前后记录的ROWID,大多数记录的物理位置都变化。
这个过程的内部操作, 可以通过对Flashback Table做SQL Trace来进一步观察。通过Trace,我们不难发现,
Flashback Table实际是通过Flashback Query将表中数据进行了一次删除、插入操作,因此ROWID会发生变化。
2.Shrink Segment (减低表的高水位)
Shrink Segment能帮助我们压缩数据段、整理数据碎片、降低高水位,以提高性能、节省空间。它也同样要求开启ROW MOVEMENT。
select username, rowid from test_move;
delete from test_move where username = 'MYTBC';
--这个时候 shrink space 会报10636错误
alter table test_move enable row movement;
alter table test_move shrink space;
select username, rowid from test_move;
我们可以看到在Shrink后,ROWID也变化了。从对其过程的Trace来看,Shrink对数据的改变不是通过SQL实现的,而是通过更底层的函数来实现的。
3.更新Partition Key
在更新记录中的Partition Key时,可能会导致该记录超出当前所在分区的范围,需要将其转移到其他对应分区上,因此要求开启ROW MOVEMENT。
drop table test_move;
create table test_move
partition by list (owner)
(partition p1 values ('SYS'),
partition p2 values ('DEMO'),
partition p3 values ('SYSTEM'),
partition def values (default))
as select * from dba_tables;
--这个时候update会报14402错误
alter table test_move enable row movement;
update test_move set owner='SYS' where owner='DEMO' and table_name='T_TEST';
这一操作产生影响的特殊之处在于这是个DML操作,是和online transaction密切相关。对于这样一个UPDATE,实际上分为3步:先从原有分区将数据删除;将原数据转移到新分区上;更新数据。
其影响就在于以下几个方面:
一个UPDATE被分解为DELET、INSERT、UPDATE三个操作,增加了性能负担。其中,DELETE的查询条件与原UPDATE的查询条件相同,新的UPDATE的查询条件是基于INSERT生成的新的ROWID;
相应的Redo Log、Undo Log会增加;
如果Update语句还涉及到了Local Index的字段的话,新、旧2个分区上的Local Index都要被更新。
还有一点,Row Movement会和域索引(Domain Index)产生冲突:如果表上定义了域索引,开启Row Movement就会失败;反之亦然。
数据
更新
查询
功能
条件
错误
变化
实际
性能
时候
水位
特性
索引
过程
会报
帮助
影响
特殊
相同
意外
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳市人人互联网科技有限公司
互联网品科技
智能科技公司是互联网公司吗
互联网科技公司官网
互联网金融科技创新
丰台科技园 互联网
壕鑫互联网络科技
融势互联网科技
米客互联网科技
大白互联网科技
人人互联网科技是培训
镁科技互联网资讯平台
互联网科技产品
西藏七维空间互联网科技有限公司
湖南诚度互联网科技有限公司
互联网科技人工智能实验室
互联网科技融合创新
现代互联网科技公司
数字科技和互联网金融哪个好
长沙易易互联网科技有限公司
互联网最新的科技
厦门中拓互联网络科技有限公司
盈实互联网科技
齐家互联网科技有限公司
互联网汽车科技小镇
宜昌元轩互联网科技有限公司
互联网科技包装股
云南互联网科技学费
安徽零酒互联网科技有限公司
小牛互联网科技有限公司地址