flashback table肯定会造成rowid跟着修改,为什么要开启行移动,就是这个原因

下面我马上做个实验来验证一下:
SQL> drop tablespace tp2 including contents and datafiles;
Tablespace dropped.
SQL> create tablespace tp2 datafile '/u01/app/oracle/oradata/tp2.dbf' size 512K;
Tablespace created.
SQL> create table t1 (id int,name char(10)) tablespace tp2;
Table created.
SQL> begin 
  2   for i in 1 .. 1000 loop
  3    insert into t1 values(i,'gyj'||i);
  4   end loop;
  5   commit;
  6  end;
  7  /
PL/SQL procedure successfully completed.

查rowid
SQL> select rowid,id from t1 where id>=1 and id<=5;
ROWID                      ID
------------------ ----------
AAASvnAAIAAAAAOAAA          1
AAASvnAAIAAAAAOAAB          2
AAASvnAAIAAAAAOAAC          3
AAASvnAAIAAAAAOAAD          4
AAASvnAAIAAAAAOAAE          5
SQL> alter table t1 enable row movement;
Table altered.
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
    6177172

查文件号,块号,行号
SQL> select id,dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) block#,dbms_rowid.rowid_row_number(rowid) row# from t1 where id>=1 and id<=5;
        ID      FILE#     BLOCK#       ROW#
---------- ---------- ---------- ----------
         1          8         14          0
         2          8         14          1
         3          8         14          2
         4          8         14          3
         5          8         14          4
SQL> delete from t1;
1000 rows deleted.
SQL> commit;
Commit complete.

插入大量记录,让空间用完为止
SQL> begin 
  2   for i in 1001 .. 100000 loop
  3    insert into t1 values(i,'gyj'||i);
  4   commit;
  5   end loop;
  6   end;
  7  /
begin
*
ERROR at line 1:
ORA-01653: unable to extend table GYJ.T1 by 8 in tablespace TP2
ORA-06512: at line 3

SQL> flashback table t1 to scn 6177172;
Flashback complete.

查原来1000行记录的前5行的rowid,与原来的rowid不一样了
SQL> select rowid,id from t1 where id>=1 and id<=5;
ROWID                      ID
------------------ ----------
AAASvnAAIAAAAAcAFr          1
AAASvnAAIAAAAAcAFs          2
AAASvnAAIAAAAAcAFt          3
AAASvnAAIAAAAAcAFu          4
AAASvnAAIAAAAAcAFv          5

查原来1000行记录前5行所在的文件号,块号,行号,与原来的块号行号不一样了
SQL> select id,dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) block#,dbms_rowid.rowid_row_number(rowid) row# from t1 where id>=1 and id<=5;
        ID      FILE#     BLOCK#       ROW#
---------- ---------- ---------- ----------
         1          8         28        363
         2          8         28        364
         3          8         28        365
         4          8         28        366
         5          8         28        367

我做这个实验是把表空间搞小一点这样更方便观察,在t1表先添加1000条记录,然后delete,最后再向里面插一些记录直到期把空间占完,这样最后新插入的记录会占用原来1000条记录的空间。。。

完毕!

**********本博客所有内容均为原创,如有转载请注明作者和出处!!!**********
Name:    guoyJoe

QQ:        252803295

Email:    oracledba_cn@hotmail.com

Blog:      http://blog.csdn.net/guoyJoe

ITPUB:   http://www.itpub.net/space-uid-28460966.html

OCM:     http://education.oracle.com/education/otn/YGuo.HTM
 _____________________________________________________________
加群验证问题:哪些SGA结构是必需的,哪些是可选的?否则拒绝申请!!!

答案在:http://blog.csdn.net/guoyjoe/article/details/8624392

Oracle@Paradise  总群:127149411

Oracle@Paradise No.1群:177089463(已满)

Oracle@Paradise No.2群:121341761

Oracle@Paradise No.3群:140856036

转载于:https://blog.51cto.com/guoyjoe/1429053

flashback table肯定会造成rowid跟着修改相关推荐

  1. FLASHBACK TABLE用法介绍

    1.作用 在人为操作或应用程序错误时,使用FLASHBACK TABLE语句恢复表到一个早期状态.表可以闪回到过去的时间点,依赖于系统中撤销数据的数据量.此外,Oracle数据库不能恢复到通过任何DD ...

  2. oracle flashback table 参数,oralce flashback 使用方法总结

    oralce flashback 使用方法总结: 一,关键知识点 在oracle 10g中,如果是使用drop 把表对象删除了,会把这个对象放在回收站里 查看回收站:select * from rec ...

  3. Oracle Flashback之flashback table

    一,Flashback Table功能描述 将数据表恢复到之前的一个时间点或SCN号. 注意:该功能将改变当前表及附属对象统一闪回到之前的一个状态. 二,需要修改的系统参数 undo_manageme ...

  4. flashback table 闪回表到指定时间或SCN

    闪回表特性: 闪回表是对闪回查询的增强. 实现表的闪回,需要使用到与撤销表空间相关的undo信息,通过show parameter undo命令可以了解这些信息. 用户对表数据的修改操作,都记录在撤销 ...

  5. flashback table 闪回表

    要是说flashback query看成是恢复记录的话,那么flashback table就是用来恢复表的,oracle 10G以后新引入了recycle bin的功能,类似Windows回收站. 被 ...

  6. [20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED2.txt

    [20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED2.txt --//简单探究12c TABLE ACCESS BY INDEX ROWID BATCH ...

  7. oracle flashback table 参数,Oracle10g中FLASHBACK TABLE语句恢复DML误操作

    在Oracle10g中,当不慎执行了DML操作是,可以用flashback table来恢复,不过需要看参数db_flashback_retention_target所设定的时间,该单位分钟,数据库默 ...

  8. Oracle PL/SQL之Flashback Table与外键约束

    我们知道 Flashback Table可以把drop掉的表从回收站里恢复回来,但是并不是关于该表的所有东西都能被Flashback回来,比如外键约束. duzz$scott@orcl>crea ...

  9. 通过ICursor对Table进行操作(添加、修改、删除)

    通过ICursor对Table进行操作(添加.修改.删除) 连接上数据表的目的就是对其进行包括浏览.添加.修改.删除等基本操作. 浏览功能,之前文章中一提到,就是将Itable转换为DataTable ...

最新文章

  1. Oracle数据库查看表空间是否为自增的
  2. QQ被曝自动读取浏览器记录,Chrome、Edge和360等无一幸免
  3. Android Studio使用Gradle上传AAR至Maven
  4. UML小结以及基于领域模型的系统设计初步
  5. WSDL文件生成WEB service server端C#程序
  6. 带Lambda表达式的Apache Wicket
  7. 使用临界段实现优化的进程间同步对象-原理和实现
  8. C#中如何将字符串转换byte[],同时如何将byte[]换成字符串?
  9. linux压缩和解压缩命令大全
  10. 计算机不能检测到第二个屏幕,Win10检测不到第二个显示器怎么办?Win10第二个显示器不能识别解决方法...
  11. SQLAlchemy Mapping Table Columns
  12. 视频编码方案之间的比较(HEVC,H.264,MPEG2等)
  13. linux系统下查看本机所在局域网中所有设备IP
  14. 浏览器默认打开360搜索怎么办?
  15. 树莓派 python 驱动 lcd tft spi 1.8寸 ST7735S
  16. html制作相册影集,用影集制作系统 轻松制作绚丽电子相册
  17. 从初试北京211到走上调剂的坎坷考研路
  18. matlab做TSP,MATLAB TSP问题
  19. Linux操作系统(详解及配置操作)
  20. C语言购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。设d为300 000元,p为6000元,r为1%。对求得的月份取小数点后一位,对第2位按四舍五人处理。

热门文章

  1. 印度HCL揭秘云计算五大盈利模式
  2. 利用A、G、DL、P策略来管理网络资源访问权限
  3. centos php7.0 mysql_CentOS 7.3 下 安装LNMP(Nginx1.10+MySQL5.7+PHP7.0.20)
  4. 计算机安全监控系统,关于计算机安全监控系统的关键技术
  5. flex将元素放在最后_前端布局——Flex弹性布局
  6. SpringAMQP--入门案例的消息发送
  7. 序列化的高阶认识-绕开 transient 机制的办法
  8. MyBatis 源码解读-settingsAsProperties()
  9. Bean生命周期配置
  10. 文件下载的文件名中文乱码