当前位置:  数据库>oracle

Oracle的回闪查询

    来源: 互联网  发布时间:2017-05-15

    本文导语: Oracle回闪查询的新特性 从oracle9i开始,oracle开始提供回闪查询特性(flashback query),允许将回滚段中的数据进行回闪,通过下面的例子来看一下这个从oracle9i开始提供的新特性. SQL> update emp set sal=4000 where empno=7788;   1 row updated. SQL> update e...

Oracle回闪查询的新特性

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

SQL> update emp set sal=4000 where empno=7788;

 


1 row updated.

SQL> update emp set sal=4000 where empno=7782;

 


1 row updated.

 


SQL> update emp set sal=4000 where empno=7698;

 


1 row updated.

 

 

 

先不提交这个事务,在另外窗口新开session,使用sys用户查询相关信息,进行进一步的分析

 


获得事务信息

从事务表中可以获得关于这个事务的信息,该事务位于9号回滚段(XIDUSN),在9号回滚段

上,该事务位于第29号事务槽(XIDSLOT):

SQL> select xidusn,xidslot,xidsqn,ubablk,ubafil,ubarec from v$transaction;

 


    XIDUSN    XIDSLOT    XIDSQN    UBABLK    UBAFIL    UBAREC

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

        9        29        385      1350          2        22

从v$rollstat视图中也可获得事务信息,xacts字段代表的是活动事务的数量,同样看到该事务

位于9号回滚段

SQL> select usn,writes,rssize,xacts,hwmsize,shrinks,wraps from v$rollstat;

 


      USN    WRITES    RSSIZE      XACTS    HWMSIZE    SHRINKS      WRAPS

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

        0      7620    385024          0    385024          0          0

        1      21390  29351936          0  29351936          0          0

        2      22108    3268608          0    3268608          0          0

        3      29954    450560          0    450560          0          0

        4      23700    843776          0    843776          0          0

        5      23334    450560          0    450560          0          0

        6      21082    450560          0    450560          0          0

        7      23146    2285568          0    2285568          0          0

        8      28742    843776          0    843776          0          1

        9      22648    2088960          1    2088960          0          0

        10      24326    2220032          0    2220032          0          0

 


11 rows selected.

 


这是执行alter system dump datafile 2 block 1350

转储的回滚表空间中的数据块的信息的一部分

*-----------------------------

* Rec #0x1d  slt: 0x24  objn: 517(0x00000205)  objd: 517  tblspc: 0(0x00000000)

*      Layer:  11 (Row)  opc: 1  rci 0x00

Undo type:  Regular undo    Begin trans    Last buffer split:  No

Temp Object:  No

Tablespace Undo:  No

rdba: 0x00000000

*-----------------------------

uba: 0x00800546.0129.1b ctl max scn: 0x0000.000e4e9c prv tx scn: 0x0000.000e4ea6

txn start scn: scn: 0x0000.000e7526 logon user: 0

 prev brb: 8389956 prev bcl: 0

KDO undo record:

KTB Redo

op: 0x04  ver: 0x01

op: L  itl: xid:  0x0006.016.0000015d uba: 0x00800419.00fe.11

                      flg: C---    lkc:  0    scn: 0x0000.000e7524

KDO Op code: URP row dependencies Disabled

  xtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x0040100f  hdba: 0x00401001

itli: 2  ispac: 0  maxfr: 4863

tabn: 0 slot: 116(0x74) flag: 0x2c lock: 0 ckix: 191

ncol: 9 nnew: 7 size: 0

Vector content:

col  2: [ 2]  c1 0a

col  3: [ 2]  c1 0a

col  4: [ 1]  80

col  5: [ 1]  80

col  6: [ 1]  80

col  7: [ 1]  80

col  8: [ 7]  78 71 01 07 0b 07 34

 


先注意到这里存在一个信息ctl max scn: 0x0000.000e4e9c,这个转换为scn值就是:

SQL> select (to_number('000','xxxx')*power(2,32)+to_number('e4e9c','xxxxxxxx')) scn

from dual;

 


      SCN

----------

    937628

 


查询一下当前数据的scn:

SQL> select dbms_flashback.get_system_change_number scn from dual;

 


      SCN

----------

    949630

 


SQL>

通过特定的语法,可以将scn 937628的历史状态数据查询出来:

SQL> select * from scott.emp as of scn 937628 where empno in(7788,7782,7698);

 


EMPNO ENAME      JOB        MGR HIREDATE          SAL      COMM DEPTNO

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

 7698 BLAKE      MANAGER    7839 1981-5-1      2850.00              30

 7782 CLARK      MANAGER    7839 1981-6-9      2450.00              10

 7788 SCOTT      ANALYST    7566 1987-4-19      10.00              20

 


SQL>

在查询结果中,注意到3名员工的薪水恢复到了之前的状态.而在当前的查询中,这个数据是变化

后的4000:

SQL> select * from scott.emp  where empno in(7788,7782,7698);

 


EMPNO ENAME      JOB        MGR HIREDATE          SAL      COMM DEPTNO

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

 7698 BLAKE      MANAGER    7839 1981-5-1      4000.00              30

 7782 CLARK      MANAGER    7839 1981-6-9      4000.00              10

 7788 SCOTT      ANALYST    7566 1987-4-19    4000.00              20


    
 
 

您可能感兴趣的文章:

  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • Oracle查询出现异常
  • Oracle将查询的结果放入一张自定义表中并再查询数据
  • oracle+jsp 多用户查询系统讨论:
  • Oracle查询表、视图、序列等信息查询
  • 关于Oracle的查询问题
  • Oracle用什么语句查询字段?
  • Oracle 查询指定表名的columns
  • linux下通过对文件读取方式查询oracle的版本信息
  • Oracle的大数据量查询结果显示问题。(高手帮忙)
  • Oracle对两个数据表交集的查询
  • Oracle数据库并行查询出错的解决方法
  • Oracle 合并查询
  • 查询与修改Oracle字符集
  • 紧急求救:jsp对Oracle数据库中long 型数据进行模糊查询 如何查?
  • oracle通过行范围查询取4至10行
  • mysql仿oracle的decode效果查询
  • Oracle中查询本月星期5的所有日期列表的语句
  • jsp中在oracle中查询日期类型时sql语句该怎么写啊?
  • 紧急求救:对Oracle数据库中long 型数据进行模糊查询 如何查?
  • oracle查询不含括号及不含指定字符的方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 虚拟机装Oracle R12与Oracle10g
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle 数据库开发工具 Oracle SQL Developer
  • Oracle 10g和Oracle 11g网格技术介绍
  • Oracle EBS R12 支持 Oracle Database 11g
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • Oracle 数据库(oracle Database)性能调优技术详解
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • ORACLE日期相关操作
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE数据库常用字段数据类型介绍
  • Linux系统下Oracle的启动与Oracle监听的启动
  • Oracle 12c的九大最新技术特性介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • ORACLE中DBMS_RANDOM随机数生成包
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,