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
时间: 2024-10-15 19:55:41

Flashback Version/Transaction Query的相关文章

Flashback version/Transaction Query,FlashbackTable

Flashback version Query相对于Flashback Query 只能看到某一点的对象状态, Oracle 10g引入的Flashback Version Query可以看到过去某个时间段内,记录是如何发生变化的. 根据这个历史,DBA就可以快速的判断数据是在什么时点发生了错误,进而恢复到之前的状态.先看一个伪列 ORA_ROWSCN. 所谓的伪列,就是假的,不存在的数据列,用户创建表时虽然没有指定,但是Oracle为了维护而添加的一些内部字段,这些字段可以像普通文件那样的使用

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

具备了flashback version query查询的基础,我们就可以进行基于flashback version query的恢复.这就是flashback transaction query.flashback transaction query可以从FLASHBACK_TRANSACTION_QUERY中获得指定事务的历史信息以及Undo_SQL,通过这个UNDO_SQL,我们就可以恢复特定的事务.Flashback transaction query需要用到FLASHBACK_TRAN

4. Oracle 闪回特性(Flashback Version、Flashback Transaction)

转载自:https://blog.csdn.net/leshami/article/details/6112981 Oracle闪回特性为数据的快速回复某一对象的特定数据提供了更多的便利.前面介绍了闪回的几种特性,包括flashback database,flashback drop ,flashback query ,flashback table .接下来本文将介绍Flashback Version与Flashback Transaction. 一.Flashback Version Que

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

Session接口: Session接口 Session 接口对于Hibernate 开发人员来说是一个最重要的接口.然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源.这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session对象,如果Session 的开销太大,会给系统带来不良影响.但是Session对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象. session可以看作介于数据连接与事

ocp 1Z0-043 131-205题解析

131. Which three methods can you use to run an Automatic Database Diagnostic Monitor (ADDM) analysis over a specific time period? (Choosethree.)A. Enterprise Manager GUIB. DBMS_TRACE package APIsC. DBMS_ADVISOR package APIsD. DBMS_MONITOR package API

flashback query

FLASHBACK 技术包括多个方面:flashback database,flashback drop,flashback query,flashback table 其中flashbackdatabase利用的是闪回日志,flashback drop利用的回收站,flashback query 和 flashbacktable 利用的是undo信息.Flashbackquery可以帮助我们确定在过去某个时间点或者时间段内表的数据是如何存储的,而flashback table则是帮助我们切切实

闪回flashback

1.flashback query(使用UNDO)查询某个scn时该表的内容 SQL> select * from t1; ID----------         1         2 SQL> select current_scn from v$database; CURRENT_SCN-----------   10517036 SQL> update t1 set id=11 where id=1; 已更新 1 行. SQL> commit; 提交完成. SQL>

Flashback家族一

首先说一下flashback和flashback recovery的区别:    1. recovery的恢复是基于数据文件的,先要restore备份好的数据文件,flashback是基于flashback log文件的,所以基点不一样,recovery是基于备份的时间上的,可以恢复到备份至完整归档的任何一个时刻,而flashback是基于flashback log的,而log的存储时效是受限于db_flashback_retention_target这个参数的(以分钟为单位,默认1440分钟,

Flashback家族二

三.Flashback Query 正如前言中所提,Flashback Query 是利用多版本读一致性的特性从UNDO 表空间读取操作前的记录数据! 什么是多版本读一致性 Oracle 采用了一种非常优秀的设计,通过undo 数据来确保写不堵塞读,简单的讲,不同的事务在写数据时,会将数据的前映像写入undo 表空间,这样如果同时有其它事务查询该表数据,则可以通过undo 表空间中数据的前映像来构造所需的完整记录集,而不需要等待写入的事务提交或回滚. flashback query 有多种方式构