Oracle10g-版本查詢

oracle_ace發表於2008-01-23

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。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12361284/viewspace-157800/,如需轉載,請註明出處,否則將追究法律責任。

相關文章