ORACLE ROW MOVEMENT
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,ROW MOVEMENT特性最初是在8i时引入的,其目的是提高分区表的灵活性,这一特性默认是关闭,只要使用一下3个功能才需要打开: 1.Flashback Table 这一功能
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
浙江潮流软件开发设施应用
部队网络安全教育新闻
如何复制链接数据库
腾讯云怎么做mc服务器
河北省网络安全学院官网
服务器管理工具英文
思科从dns服务器获取dns
数据库的二进制怎么读取文件
网络安全目标包括哪些
软件开发培训职业素养
如何卸载树莓派安装的数据库
软件开发发票服务税点
dell机架式服务器公司
电子科技大学数据库怎么样
5G物理层软件开发怎么样
我与网络安全作文350字
江阴美德软件开发公司怎么样
网络安全好还是运维好
数据库原理单选题
进一步加强网络安全设备维护
关于网络安全信息的思想汇报
php实现数据库查询
刑法和网络安全法的区别
网络安全指数计算无量纲化
海康智能行为管理服务器
海南时钟监控网管服务器
信佑 同步服务器
微信被上海轩盒网络技术服务
山东淮安互联网科技
薛晓宇网络安全视频