C:\>set ORACLE_SID=irmdb
C:\>sqlplus /nolog
SQL*Plus: Release 10.2.0.3.0 - Production on 星期三 1月 23 15:05:33 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
SQL> conn / as sysdba;
已连接。
SQL> create table t
2 ( id number(5),
3 name varchar2(10),
4 constraint t_pk primary key(id));
表已创建。
SQL> insert into t values(1,'a');
已创建 1 行。
SQL> commit;
提交完成。
SQL> update t set name='b';
已更新 1 行。
SQL> commit;
提交完成。
SQL> update t set name='c
2 ';
已更新 1 行。
SQL> commit;
提交完成。
SQL> delete t;
已删除 1 行。
SQL> commit;
提交完成。
SQL> insert into t values(1,'d');
已创建 1 行。
SQL> commit;
提交完成。
SQL> update t set name='e';
已更新 1 行。
SQL> commit;
提交完成。
SQL> select * from t;
ID NAME
---------- ----------
1 e
SQL> set linesize 100
SQL> set pagesize 80
SQL>select versions_starttime,versions_endtime,versions_xid,versions_operation,name
2 from t versions between timestamp minvalue and maxvalue
3 order by versions_starttime;
VERSIONS_STARTTIME
---------------------------------------------------------------------------
VERSIONS_ENDTIME VERSIONS_XID V
--------------------------------------------------------------------------- ---------------- -
NAME
----------
23-1月 -08 03.09.29 下午
23-1月 -08 03.09.35 下午 01002E00F4030000 I
a
23-1月 -08 03.09.35 下午
23-1月 -08 03.09.47 下午 03001C00E9030000 U
b
23-1月 -08 03.09.47 下午
23-1月 -08 03.09.53 下午 05001500FE030000 U
c
23-1月 -08 03.09.53 下午
04002300EB030000 D
c
23-1月 -08 03.09.59 下午
23-1月 -08 03.10.08 下午 06000100E5030000 I
d
23-1月 -08 03.10.08 下午
07001E00EA030000 U
e
已选择6行。
在上述查询中,列versions_starttime、versions_endtime、versions_xid、versions_operation是伪列,与 ROWNUM、LEVEL 等其他熟悉的伪列相类似。其他伪列如VERSIONS_STARTSCN和VERSIONS_ENDSCN,显示了该时刻的系统更改号。列versions_xid 显示了更改该行的事务标识符。有关该事务的更多详细信息可在视图FLASHBACK_TRANSACTION_QUERY 中找到,其中列 XID 显示事务 id。例如,使用上述的VERSIONS_XID 值07001E00EA030000,UNDO_SQL 值显示了实际的语句。
SQL> select undo_sql from flashback_transaction_query where xid='07001E00EA030000';
UNDO_SQL
----------------------------------------------------------------------------------------------------
update "SYS"."T" set "NAME" = 'd' where ROWID = 'AAANbCAABAAAPTiAAB';
到这里通过versions_xid这个列可以获得事务ID,来查询我们的SQL。