oracle的rowid相关
来源:互联网 发布:淘宝王子 解封 编辑:程序博客网 时间:2024/05/17 23:50
文中大部分观点均来自Thomas Kyte的《Expert.Oracle.Database.Architecture.9i.and.10g.Programming.Techniques.and.Solutions》一书
1 ALTER TABLE 表名 ENABLE ROW MOVEMENT 允许oracle改变分配给每行的rowid。否则flashback时会报“ORA-08189: cannot flashback thetable because row movement is not enabled”。rowid是在insert时分配的。flashback会对表做delete再重新插入,因此可能分配到不同的新rowid.
2 10g以前,查询dual会产生对数据字典中一个真实的名为“dual”表的全表扫描。SELECT DUMMY FROM DUAL或者SELECT rowid FROMDUAL会在oracle所有版本观察到I/O.如果在9i及之前的版本查询sELECT SYSDATE FROM DUAL或者在PL/SQL中书写variable := SYSDATE都会发生真实的I/O。但在10g,SELECTSYSDATE被视为不需要查询dual表并按照类似于调用函数的方式。因此,如果仅取sysdate,就不再全表扫描dual了
3 rowid仅在同一表中唯一,不同表的可能出现相同的rowid
4 B*Tree index底层叶节点存放rowid
5 可能导致rowid发生变化的操作:
1)update分区表用于分区的列,使得某行必须由一个分区移动到另一个
2)move操作(移动表所属的表空间)和一些分区操作比如splitting or merge partitions(拆分或者合并分区)
3)用ALTER TABLE SHRINK SPACE做segment shrink(表收缩,通过insert+delete重组数据使数据分布更紧密,同时降低HWM释放空闲数据块)
4)更新索引组织表(iot)的主键
6 rowid可以随时变化,不推荐将其物理存储在数据库表列中,使用rowid作为列的数据类型会被视为“bad practice”加以避免。应使用主键代替
7 rowid是找到表中一行的最快方式,可以用于update无索引和主键的表,但要求和其他条件一同使用以免受到rowid变化的影响
8 数据库间的copy或导入导出都会引起ROWID和UROWID的变化
- oracle的rowid相关
- Oracle的Rowid详解
- oracle rowid的理解
- oracle rowid的认识
- oracle rowid的理解
- Oracle RowID的概念
- Oracle RowID的应用
- Oracle的rowid
- 理解Oracle的Rowid含义
- ORACLE ROWID的一点知识
- ORACLE ROWID的一点知识
- oracle的rowid和rownumber
- oracle的rowid和rownumber
- Oracle的rownum和rowid
- oracle的rowid和rownumber
- oracle中rowid的用法
- oracle的rowid和rownum
- Oracle 的ROWID 和 ROWNUM
- 如何快速开发符合规范的web页
- el表达式大全
- 【邀请函】云络和阿里云助力企业轻松上云
- Linux下安装Oracle11g服务器
- <iOS>关于viewWithTag的一点说明
- oracle的rowid相关
- Lasso
- [老码团队]ttcn3特性介绍
- http://dingbuoyi.iteye.com/blog/1553464
- iOS多点连接的使用(WIFI 蓝牙)
- Motivated Word(5)
- 在 WCF 中使用高效的 BinaryFormatter 序列化
- opencv-3.0.0-alpha+VS2013/2012
- 手把手教你开发模拟按键(开山篇)