暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Oracle中,什么是闪回事务查询(Flashback Transaction Query)?

DB宝 2020-06-02
1716


题目部分

在Oracle中,什么是闪回事务查询(Flashback Transaction Query)?


     





答案部分


   闪回事务查询(Flashback Transaction Query)是查看某个事务或所有事务在过去一段时间对数据进行的修改。

闪回事务查询提供了一种查看事务级数据库变化的方法。它是SQL的扩展,能够看到事务带来的所有变化。此外,返回补充SQL语句,并用于撤消由事务引起的各行变化。使用闪回事务查询的权限:

1GRANT SELECT  ANY  TRANSACTION TO  LHR;
2GRANT EXECUTE ON DBMS_FLASHBACK TO LHR;

复制


开启补全日志:

1ALTER DATABASE ADD SUPPLEMENTAL LOG DATA
2ALTER DATABASE ADD SUPPLEMENTAL LOG DATA(PRIMARY KEY,UNIQUE INDEX)  COLUMNS;

复制


闪回事务查询实际上是查询的数据字典FLASHBACK_TRANSACTION_QUERY。可以根据该视图的UNDO_SQL列值返回数据以前版本。

闪回事务查询示例说明:

 1SQL> conn / as sysdba
2SQL> alter database add supplemental log data;
3Database altered.
4SQL> alter database add supplemental log data (primary keycolumns;
5Database altered.
6SQL> grant select any transaction to lhr;
7Grant succeeded.
8SQLconn lhr/lhr
9
10LHR@orclasm > SELECT TO_DATE(SYSDATE,'YYYY-MM-DD HH24:MI:SS'),TIMESTAMP_TO_SCN(SYSDATEFROM DUAL;
11
12TO_DATE(SYSDATE,'YY TIMESTAMP_TO_SCN(SYSDATE)
13------------------- -------------------------
142017-06-17 16:27:29                  67854536
15
16LHR@orclasm > CREATE TABLE T_FTQ_20170617_LHR AS SELECT * FROM SCOTT.EMP WHERE EMPNO=7902;
17
18Table created.
19
20LHR@orclasm > SELECT * FROM T_FTQ_20170617_LHR;
21
22     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
23---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
24      7902 FORD       ANALYST         7566 1981-12-03 00:00:00       3000                    20
25
26LHR@orclasm > UPDATE T_FTQ_20170617_LHR SET SAL=9999 WHERE EMPNO=7902;
27
281 row updated.
29
30LHR@orclasm > COMMIT;
31
32Commit complete.
33
34LHR@orclasm > SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS'),TIMESTAMP_TO_SCN(SYSDATEFROM DUAL;
35
36TO_DATE(SYSDATE,'YY TIMESTAMP_TO_SCN(SYSDATE)
37------------------- -------------------------
382017-06-17 16:28:25                  67854637
39
40LHR@orclasm >  UPDATE T_FTQ_20170617_LHR SET SAL=99999 WHERE EMPNO=7902;
41
421 row updated.
43
44LHR@orclasm > COMMIT;
45
46Commit complete.
47
48LHR@orclasm > SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS'),TIMESTAMP_TO_SCN(SYSDATEFROM DUAL;
49
50TO_DATE(SYSDATE,'YY TIMESTAMP_TO_SCN(SYSDATE)
51------------------- -------------------------
522017-06-17 16:28:41                  67854673
53
54LHR@orclasm > col UNDO_SQL format a100
55LHR@orclasm > col TABLE_NAME format a30
56LHR@orclasm > SELECT START_SCN, COMMIT_SCN, LOGON_USER, OPERATION, TABLE_NAME, UNDO_SQL
57  2    FROM FLASHBACK_TRANSACTION_QUERY V
58  3   WHERE XID IN ('08000000AFA50000''020014002C9F0000')
59  4   ORDER BY V.START_SCN;
60 START_SCN COMMIT_SCN LOGON_USER   OPERATION   TABLE_NAME           UNDO_SQL
61---------- ---------- ------------ ----------- -------------------- ----------------------------------------------------------------------------------------------------
62  67854610   67854626 LHR          UPDATE      T_FTQ_20170617_LHR   update "LHR"."T_FTQ_20170617_LHR" set "SAL" = '3000' where ROWID = 'AAAnyVAAEAAAACDAAA';
63  67854610   67854626 LHR          BEGIN
64  67854645   67854656 LHR          UPDATE      T_FTQ_20170617_LHR   update "LHR"."T_FTQ_20170617_LHR" set "SAL" = '9999' where ROWID = 'AAAnyVAAEAAAACDAAA';
65  67854645   67854656 LHR          BEGIN
66
67LHR@orclasm > update "LHR"."T_FTQ_20170617_LHR" set "SAL" = '9999' where ROWID = 'AAAnyVAAEAAAACDAAA';
68
691 row updated.
70
71LHR@orclasm >  SELECT * FROM T_FTQ_20170617_LHR;
72
73     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
74---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
75      7902 FORD       ANALYST         7566 1981-12-03 00:00:00       9999                    20

复制




本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗


    ==================================================================================================================

    【干货来了|小麦苗IT资料分享】
    ★小麦苗DB职场干货:https://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w
    ★小麦苗数据库健康检查:https://share.weiyun.com/5lb2U2M
    ★小麦苗微店:https://weidian.com/?userid=793741433
    ★各种操作系统下的数据库安装文件(Linux、Windows、AIX等):https://pan.baidu.com/s/1hqff3Evv6oj2-Tn87MpFkQ
    ★小麦苗分享的资料:https://share.weiyun.com/57HUxNi
    ★小麦苗课堂资料:https://share.weiyun.com/5fAdN5m
    ★小麦苗课堂试听资料:https://share.weiyun.com/5HnQEuL
    ★小麦苗出版的相关书籍:https://share.weiyun.com/5sQBQpY
    ★小麦苗博客文章:https://share.weiyun.com/5ufi4Dx
    ★数据库系列(Oracle、MySQL、NoSQL):https://share.weiyun.com/5n1u8gv
    ★公开课录像文件:https://share.weiyun.com/5yd7ukG
    ★其它常用软件分享:https://share.weiyun.com/53BlaHX
    ★其它IT资料(OS、网络、存储等):https://share.weiyun.com/5Mn6ESi
    ★Python资料:https://share.weiyun.com/5iuQ2Fn
    ★已安装配置好的虚拟机:https://share.weiyun.com/5E8pxvT
    ★小麦苗腾讯课堂:https://lhr.ke.qq.com/
    ★小麦苗博客:http://blog.itpub.net/26736162/
    ★OCP培训:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA
    ★12c的OCP培训:https://mp.weixin.qq.com/s/hMLHlyjMHhLmA0xN4hLvfw
    ★OCM培训:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA
    ★高可用(RAC+DG+OGG)培训:https://mp.weixin.qq.com/s/4vf042CnOdAD8zDyjUueiw
    ★小麦苗课堂腾讯视频:http://v.qq.com/vplus/71f69a319a24c6808cd6e6189ae90664


    ==================================================================================================================
    复制

     本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

    ● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

     本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

     版权所有,欢迎分享本文,转载请保留出处

     QQ:646634621  QQ群:230161599、618766405

     微信:lhrbestxh

     微信公众号:DB宝

     提供Oracle OCP、OCM、高可用(rac+dg+ogg)和MySQL最实用的技能培训

    ● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

    长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:DB宝,学习最实用的数据库技术。


    文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论