没有合适的资源?快使用搜索试试~ 我知道了~
ROW MOVEMENT特性最初是在8i时引入的,其目的是提高分区表的灵活性,这一特性默认是关闭,只要使用一下3个功能才需要打开...
资源推荐
资源详情
资源评论
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;
+ashback table test_move to timestamp(systimestamp - interval '3' minute);
--闪回到 3 分钟前得状态,那时 username='MYTBC'记录未被删除。
select username, rowid from test_move;
--查询可知,数据被找回来,此时,再比较 +ashback 前后记录的 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。
资源评论
Alongfish
- 粉丝: 0
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功