从Oracle9i开始,Oracle开始提供闪回查询特性(flashback query),允许将回滚段中的数据进行闪回。通过这个例子我们来看一下这个从Oracle9i开始提供的新特性。

首先我们注意到这里存在一个信息: ctl max scn: 0x0819.003f594b ,这个转换为SCN值就是:SQL> select (to_number('819','xxxx')*power(2,32) + to_number('3f594b','xxxxxxxx')) scn

2  from dual;

SCN

-----------------

8903471356235

可以查询一下当前数据库的SCN:SQL> select dbms_flashback.get_system_change_number scn from dual;

SCN

-----------------

8903471437610

通过特定的语法,我们可以将SCN为8903471356235的历史状态数据查询出来:SQL> select * from emp as of scn 8903471356235 where empno in (7788,7782,7698);

EMPNO ENAME      JOB                 MGR HIREDATE         SAL       COMM    DEPTNO

---------- ---------- --------- ---------- --------- ---------- ---------- ----------

7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30

7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10

7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20

在结果中,我们注意到3名员工的薪水恢复到了之前值。而在当前的查询中,这个数值是变化后的4000:SQL> select * from emp where empno in (7788,7782,7698);

EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO

---------- ---------- --------- ---------- --------- ---------- ---------- ----------

7698 BLAKE      MANAGER         7839 01-MAY-81       4000                    30

7782 CLARK      MANAGER         7839 09-JUN-81       4000                    10

7788 SCOTT      ANALYST          7566 19-APR-87       4000                    20

由于这个查询需要从UNDO中获取前镜像信息,如果UNDO中的信息被覆盖,则以上查询将会失败。为了模拟不同情况,创建一个新的UNDO表空间,切换数据库使用新的 UNDO表空间,再将原表空间Offline:SQL> create undo tablespace undotbs datafile '/opt/oracle/oradata/conner/undotbs.dbf' size 2M;

Tablespace created.

SQL> alter system set undo_tablespace=undotbs;

System altered.

SQL> alter tablespace UNDOTBS1 offline;

Tablespace altered.

SQL> alter session set events = 'immediate trace name flush_cache';

Session altered.

再来查询,此时出现错误,记录该文件已经不可读取:SQL> select * from emp as of scn 8903471356235 where empno in (7788,7782,7698);

select * from emp as of scn 8903471356235 where empno in (7788,7782,7698)

*

ERROR at line 1:

ORA-00376: file 2 cannot be read at this time

ORA-01110: data file 2: '/opt/oracle/oradata/conner/undotbs1.dbf'

将UNDOTBS1重新启用,则此时前镜像信息再次可以查询:SQL> alter tablespace UNDOTBS1 online;

Tablespace altered.

SQL> alter system set undo_tablespace=UNDOTBS1;

System altered.

在其他Session执行大量事务,使得前镜像信息被覆盖:SQL> begin

2  for i in 1 .. 2000 loop

3  update emp set sal=4000;

4  rollback;

5  end loop;

6  end;

7  /

PL/SQL procedure successfully completed.

SQL> /

PL/SQL procedure successfully completed.

SQL> /

观察回滚段的使用:SQL> select usn,xacts,RSSIZE,HWMSIZE from v$rollstat where usn=6;

USN      XACTS     RSSIZE    HWMSIZE

---------- ---------- ---------- ----------

6          1    7331840    7331840

那么再次查询就可能收到如下错误:SQL> select * from emp as of scn 8903471356235 where empno in (7788,7782,7698);

select * from emp as of scn 8903471356235 where empno in (7788,7782,7698)

*

ERROR at line 1:

ORA-01555: snapshot too old: rollback segment number 6 with name "_SYSSMU6$" too small

ORA-01555错误出现,说明要查询的前镜像信息已经失去。

oracle 9i闪回schema,Oracle 9i闪回查询的新特性相关推荐

  1. oracle 9i闪回schema,oracle 9i 闪回

    今天一个同事错误删除了一些记录,已经有15分钟了,我们只能尝试着使用9i的闪回功能,看看能否将记录"拿回来": 首先将删除的记录存放在一个临时表中 create table tm_ ...

  2. oracle 9i生成分析报告,ORACLE 9i 以后的分析函数汇总 - fesing - Qihang.Net

    现在少做一些汇总: Ⅰ.start with...connect by prior connect by 是结构化查询中用到的,其基本语法是: select ... from tablename st ...

  3. Oracle DB 深入理解 OUI(Oracle Universal Installer)

    原文连接:http://www.oracledatabase12g.com/archives/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3oracle-universal- ...

  4. 盘点 Oracle 11g 中新特性带来的10大性能影响

    盘点 Oracle 11g 中新特性带来的10大性能影响 原创 2017-08-02 盖国强 数据和云 Oracle的任何一个新版本,总是会带来大量引人瞩目的新特性,但是往往在这些新特性引入之初,首先 ...

  5. 【Oracle Database 12c新特性】ASM Scrubbing Disk Groups

    在12.1中Oracle ASM提供了一个改善可用性和可靠度的的新特性 称作Scrubbing Disk Groups, Disk Scrubbing通过检查数据的逻辑讹误,从而能够在Normal 或 ...

  6. atitit.Oracle 9 10 11 12新特性attilax总结

    atitit.Oracle 9  10 11  12新特性 1. ORACLE 11G新特性 1 1.1. oracle11G新特性 1 1.2. 审计 1 1.3. 1.   审计简介 1 1.4. ...

  7. oracle oem 13c新特性,Oracle Database 12c - 新特性实现的历程与13c的预测

    Oracle Database 12c - 新特性实现的历程与13c的预测 虽然Oracle Database 12c的新特性文档已经随处可见,但是Oracle仍然没有关于12c正式发布的准确日期,这 ...

  8. linux 查oracle版本号,查看linux中oracle版本号的方法总结

    在Linux系统下,我们通过以下的方法可以查看到Oracle的版本号.下面由学习啦小编整理了查看linux中oracle版本号的方法总结,希望对你有帮助. 查看linux中oracle版本号的方法总结 ...

  9. oracle中闪回和回滚,Oracle Flashback 闪回查询功能9i和10g的区别

    Oracle从9i开始提供了基于回滚段的闪回查询(Flashback Query)功能,可用于恢复错误的DML操作.在Oracle 10g中对闪回查询做了较大改进,不再局限于闪回查询,还可用于恢复错误 ...

最新文章

  1. 开头轰轰烈烈,结局冷冷清清
  2. TypeScript 基础类型
  3. angularjs 中的scope继承关系——(2)
  4. vs2010利用属性表自动配置OpenCV(XP的32位系统,opencv版本是2.4.10)
  5. Android App用MulticastSocket监听组播,为什么连接到不同路由、在不同手机上跑,有的能收到有的收不到...
  6. 圈子 | 大数据分析汽车O2O的机会
  7. python执行系统命令的方法
  8. Java I/O 扩展
  9. python接口自动化测试一:http协议
  10. bzoj 1697: [Usaco2007 Feb]Cow Sorting牛排序(置换)
  11. easymock_EasyMock注释– JUnit 4
  12. vscode撤销删除快捷键_在Windows资源管理器中使用键盘快捷键撤消意外移动或删除...
  13. 《面向对象分析与设计》一3.7 例题
  14. python用opencv实现图片的美白磨皮_12 - OpenCV+TensorFlow 入门人工智能图像处理-磨皮美白-多智时代...
  15. 网络带宽相关知识和计算
  16. ribbon类同层次图
  17. selenium下对指定元素进行截图
  18. 关于设计的一点思考:
  19. LIO-SAM:Ubuntu20.04下的编译与运行
  20. 第23课:专项能力修炼

热门文章

  1. 解读程序员的武侠世界,顶级程序员是内外兼修的大侠,那么你呢?
  2. “烟花”来势汹汹!用数据可视化告诉你:台风最爱在哪登陆?
  3. 30人团队的数据架构师:谈谈数据湖这个风口吧,你们说的都没价值
  4. A8U Web 前端高手不能说的秘密
  5. 【转载】浅谈 看图软件 的设计与实现
  6. 微博中的c++议论触发了测试人员的神经
  7. 了结对编程和飞鸽传书
  8. Symbian和C++ SDK开发入门之应用程序
  9. *printf()格式化串安全漏洞分析(下)
  10. 编程必备:c/c++的编程经验技巧!