【備份恢復】閃回技術之閃回版本查詢

不一樣的天空w發表於2016-10-17

閃回版本查詢
語法:
select column_name[,column_name,...]
from table_name
versions between[SCN|TIMESTAMP] [expr|MINVALUE] and[epxr|MAXVALUE];

 

1)  查詢 scott使用者 emp表欄位 empno 7369 對應的sal 值為 800

SYS@ORA11GR2>conn scott/tiger

Connected.

SCOTT@ORA11GR2>

SCOTT@ORA11GR2>select ename,job,sal from emp where empno=7369;

 

ENAME      JOB              SAL

---------- --------- ----------

SMITH      CLERK            800

 

2) sal 欄位進行更新,更新三次,每次增加 200
--第一次:

SCOTT@ORA11GR2>update emp set sal=sal+200 where empno=7369;

 

1 row updated.

 

SCOTT@ORA11GR2>commit;

 

Commit complete.

 

--第二次:

SCOTT@ORA11GR2>update emp set sal=sal+200 where empno=7369;

 

1 row updated.

 

SCOTT@ORA11GR2>commit;

 

Commit complete.

 

--第三次:

SCOTT@ORA11GR2>update emp set sal=sal+200 where empno=7369;

 

1 row updated.

 

SCOTT@ORA11GR2>commit;

 

Commit complete.

 

3) 查詢更新三次後的值

SCOTT@ORA11GR2>select ename,job,sal from emp where empno=7369;

 

ENAME      JOB              SAL

---------- --------- ----------

SMITH      CLERK           1400

 

 

4) 閃回版本查詢,我們可以清晰的看到更新的每個版本:

SCOTT@ORA11GR2>select to_char(versions_starttime,'yyyy-mm-dd hh24:mi:ss') as starttime,versions_xid,ename,job,sal from emp versions between timestamp sysdate-10/1440 and sysdate where empno=7369;

 

STARTTIME           VERSIONS_XID     ENAME      JOB              SAL

------------------- ---------------- ---------- --------- ----------

2016-09-29 19:25:14 11000300E1000000 SMITH      CLERK           1400

2016-09-29 19:25:00 0C002000DC000000 SMITH      CLERK           1200

2016-09-29 19:24:35 14000400E1000000 SMITH      CLERK           1000

                                     SMITH       CLERK          800

 

 

5) 附:涉及到的偽列

偽列

含義

VERSIONS_STARTSCN
VERSIONS_STARTTIME

該記錄操作時的 scn 或時間,如果為空,表示該行記錄是在查詢範圍外創建的。

VERSIONS_ENDSCN
VERSIONS_ENDTIME

該記錄失效時的 scn 或時間,如果為空,說明記錄當前時間在當前表記憶體在,或者已經被刪除了,可以配合著 VERSIONS_OPERATION 列來看,如VERSIONS_OPERATION 列值為 D,說明該列已被刪除,如果該列為空,則說明記錄在這段時間無操作。

VERSIONS_OPERATION

對該行執行的操作: I 表示 insertD 表示 deleteU 表示 update
提示: 對於索引鍵的 update 操作,版本查詢可能會將其識別成兩個操作: DELETE INSERT

VERSIONS_XID

該操作的事務 ID


6) 閃回版本注意事項
ü VERSIONS 子句不能用於:
-
外部表
-
臨時表
-
固定表
-
檢視
ü VERSIONS 不能跨 DDL 命令。
ü 段收縮操作被過濾掉。



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

相關文章