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

Flashback Version/Transaction Query的更多相关文章

  1. Flashback version/Transaction Query,FlashbackTable

    Flashback version Query相对于Flashback Query 只能看到某一点的对象状态, Oracle 10g引入的Flashback Version Query可以看到过去某个 ...

  2. Flashback Version Query、Flashback Transaction Query快速闪回细粒度数据

    Flashback Version Query 闪回版本查询 使用Flashback Version Query  返回在指定时间间隔或SCN间隔内的所有版本,一次commit命令就会创建一个版本. ...

  3. Oracle Flashback Transaction Query with Oracle Flashback Version Query

    Oracle Flashback Transaction Query with Oracle Flashback Version Query In this example, a database a ...

  4. 闪回之 Flashback Query (dml表、过程、函数、包等)、Flashback version Query

    Flashback Query 背景:Flashback 是 ORACLE 自 9i 就开始提供的一项特性,在 9i 中利用oracle 查询多版本一致的特点,实现从回滚段中读取表一定时间内操作过的数 ...

  5. 利用flashback transaction query新特性进行事务撤销

    具备了flashback version query查询的基础,我们就可以进行基于flashback version query的恢复.这就是flashback transaction query.f ...

  6. PLSQL_闪回操作3_Fashback Transaction Query

    2014-12-09 Created By BaoXinjian

  7. Hibernate有五大核心接口,分别是:Session Transaction Query SessionFactoryConfiguration

    Session接口: Session接口 Session 接口对于Hibernate 开发人员来说是一个最重要的接口.然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都 ...

  8. ocp 1Z0-043 131-205题解析

    131. Which three methods can you use to run an Automatic Database Diagnostic Monitor (ADDM) analysis ...

  9. PLSQL_闪回操作2_Fashback Version Query

    2014-12-09 Created By BaoXinjian

随机推荐

  1. Android应用程序框架层和系统运行库层日志系统源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6598703 在开发Android应用程序时,少 ...

  2. Android资源管理框架(Asset Manager)简要介绍和学习计划

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分 ...

  3. MySql命令——show,分页,正则表达式

    先要安装MySql,过程见 MySql5.1在Win7下的安装与重装问题的解决 不是教程,还没有写教程的资格,只是为了自己查阅而已!   show show databases; //显示所有数据库 ...

  4. jquery mouseout和mouseleave区别

    mouseout()和mouseleave() 都是鼠标移出元素时触发,但是这两者又有所区别,需要大家留意: 不论鼠标指针离开指定元素还是该元素子元素,都会触发 mouseout 事件. 只有在鼠标指 ...

  5. 练习使用jquery.并将验证强度的功能加到注册页面中

  6. JS软键盘代码

    页面代码如下: <HTML> <HEAD> <TITLE>一个不错的js软键盘代码</TITLE> <meta http-equiv=" ...

  7. Android ---------- 清单文件中Activity常规设置

    <activity android:name="xxxxx" android:alwaysRetainTaskState="true" android:c ...

  8. PHP学习笔记三十【final】

    <?php //final不能去修饰属性(变量) //如果希望类不希望被继承就可以使用final关键字 final class Person() { public function sayHi( ...

  9. PHP学习笔记二十三【This】

    <?php Class Person { function test1() { $this->test2();//类里面的方法互相调用要加$this } protected functio ...

  10. doGet和doPost的区别

    1.doGet和doPost的区别,在什么时候调用,为什么有时doPost中套用doGet 2.提交的form     method=Post就执行DOPOST,否则执行GOGET 套用是不管meth ...