zoukankan      html  css  js  c++  java
  • Flashback Version/Transaction Query

    1、应用Flashback Version Query查询记修改版本

    SQL> select dbms_flashback.get_system_change_number from dual; --查询当前SCN值
    
    GET_SYSTEM_CHANGE_NUMBER
    ------------------------
    1574142
    
    SQL> update flash_tab set id=id+100 where id>15;
    
    已更新5行。
    
    SQL> commit;
    
    提交完成。
    
    SQL> delete flash_tab where id<15;
    
    已删除14行。
    
    SQL> rollback;
    
    回退已完成。
    
    SQL> select * from flash_tab;
    
    ID VL
    ---------- --
    10 I
    11 J
    12 K
    13 L
    14 M
    15 N
    116 O
    117 P
    118 Q
    119 R
    120 S
    1 /
    2 A
    3 B
    4 C
    5 D
    6 E
    7 F
    8 G
    9 H
    
    已选择20行。
    
    SQL> delete flash_tab where id<5;
    
    已删除4行。
    
    SQL> commit;
    
    提交完成。
    
    SQL> select * from flash_tab;
    
    ID VL
    ---------- --
    10 I
    11 J
    12 K
    13 L
    14 M
    15 N
    116 O
    117 P
    118 Q
    119 R
    120 S
    5 D
    6 E
    7 F
    8 G
    9 H
    
    已选择16行。
    
    SQL> insert into flash_tab values(201,'A1');
    
    已创建 1 行。
    
    SQL> commit;
    
    提交完成。
    
    SQL> insert into flash_tab values(202,'B1');
    
    已创建 1 行。
    
    SQL> COMMIT;
    
    提交完成。
    
    SQL> SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;
    
    GET_SYSTEM_CHANGE_NUMBER
    ------------------------
    1574208

    执行Version Query查询flash_tab表中记录:

    SQL> select id,vl,versions_startscn,versions_endscn,versions_operation,versions_xid from flash_tab versions between scn 1574142 and 1574208;
    
    ID VL VERSIONS_STARTSCN VERSIONS_ENDSCN V VERSIONS_XID
    ---------- -- ----------------- --------------- - ----------------
    202 B1 1574198 I 0900170004040000
    201 A1 1574192 I 0300120034040000
    4 C 1574180 D 050015001B040000
    3 B 1574180 D 050015001B040000
    2 A 1574180 D 050015001B040000
    1 / 1574180 D 050015001B040000
    120 S 1574157 U 0600180005040000
    119 R 1574157 U 0600180005040000
    118 Q 1574157 U 0600180005040000
    117 P 1574157 U 0600180005040000
    116 O 1574157 U 0600180005040000
    10 I
    11 J
    12 K
    13 L
    14 M
    15 N
    16 O 1574157
    17 P 1574157
    18 Q 1574157
    19 R 1574157
    20 S 1574157
    1 / 1574180
    2 A 1574180
    3 B 1574180
    4 C 1574180
    5 D
    6 E
    7 F
    8 G
    9 H
    
    已选择31行。

    2.使用Flashback Transaction Query查询事务信息

    用户在执行闪回事务查询之前,必须为用户授予适当的DBMS_FLASHBACK包上的权限。
    grant execute on dbms_flashback to scott;
    grant select any transaction to scott;
    --------
    开启flashback:
    SQL> shutdown immediate;
    SQL> startup mount;
    SQL> alter database flashback on;
    SQL> alter database open;
    SQL> conn / as sysdba;
    已连接。
    SQL> alter database add supplemental log data;
    
    数据库已更改。
    -------------------------------------------------------
    启用重做日志流,否则查询Flashback_transaction_query的undo_sql列为空,并且OPERATION列为UNKNOWN, 
    SQL> alter database add supplemental log data;
    
    Database altered.

    测试案例:

    SQL> conn scott/tiger;
    已连接。
    -------------------
    SQL> select current_scn from v$database;
    
    CURRENT_SCN
    -----------
    1586922
    
    SQL> select * from flash_tab;
    
    ID VL
    ---------- --
    1 a
    2 ts
    
    SQL> update flash_tab set vl='b' where id=1;
    
    已更新 1 行。
    
    SQL> commit;
    
    提交完成。
    
    SQL> insert into flash_tab values(3,'c');
    
    已创建 1 行。
    
    SQL> commit;
    
    提交完成。
    
    SQL> select current_scn from v$database;
    
    CURRENT_SCN
    -----------
    1586956
    
    ======================
    SQL> select xid,commit_scn,commit_timestamp,operation,undo_sql
    2 from flashback_transaction_query q where q.xid in( select versions_xid from scott.flash_tab versions between scn 1586922 and 1586956);
    
    XID COMMIT_SCN COMMIT_TIMESTAMP OPERATION UNDO_SQL
    ---------------- ---------- ---------------- -------------------------------- --------------------------------------------------------------------------------
    02001200FE030000 1586949 2015/1/10 17:03: INSERT delete from "SCOTT"."FLASH_TAB" where ROWID = 'AAASZaAAEAAAAJ2AAB';
    02001200FE030000 1586949 2015/1/10 17:03: BEGIN 
    06001C000A040000 1586940 2015/1/10 17:03: UPDATE update "SCOTT"."FLASH_TAB" set "VL" = 'a' where ROWID = 'AAASZaAAEAAAAJ0AAC';
    06001C000A040000 1586940 2015/1/10 17:03: BEGIN
  • 相关阅读:
    git remote: Support for password authentication was removed on August 13, 2021
    win10 安装vue 详解包括node.js、npm、webpack
    solr window 安装与启动
    solr 创建 core
    idea 创建 springboot 模块报错解决
    c# 设计模式篇
    javascript(DHTML)代码和客户端应用程序代码之间实现双向通信.
    委托,匿名方法,Lambda 表达式 的关系
    使用泛型实现单例模式提供者
    asp.net 文件编码问题
  • 原文地址:https://www.cnblogs.com/rusking/p/4215272.html
Copyright © 2011-2022 走看看